ReactOS  0.4.12-dev-75-g00dd17e
ATL Namespace Reference

Namespaces

 _CSTRING_IMPL_
 

Classes

struct  _ATL_BASE_MODULE70
 
struct  _ATL_CATMAP_ENTRY
 
struct  _ATL_COM_MODULE70
 
struct  _ATL_CONNMAP_ENTRY
 
struct  _ATL_INTMAP_ENTRY
 
struct  _ATL_MODULE70
 
struct  _ATL_MSG
 
struct  _ATL_OBJMAP_ENTRY30
 
struct  _ATL_REGMAP_ENTRY
 
struct  _ATL_TERMFUNC_ELEM
 
struct  _ATL_WIN_MODULE70
 
struct  _ATL_WNDCLASSINFOW
 
struct  _AtlCreateWndData
 
class  _Copy
 
class  _Copy< CONNECTDATA >
 
class  _CopyInterface
 
class  _ICPLocator
 
class  _U_MENUorID
 
class  _U_RECT
 
struct  ATLSTRINGRESOURCEIMAGE
 
class  CAtlBaseModule
 
class  CAtlComModule
 
class  CAtlDllModuleT
 
class  CAtlExeModuleT
 
class  CAtlList
 
class  CAtlModule
 
class  CAtlModuleT
 
class  CAtlPlex
 
class  CAtlStringMgr
 
class  CAtlWinModule
 
class  CComAggObject
 
class  CComAllocator
 
class  CComAutoCriticalSection
 
class  CComAutoDeleteCriticalSection
 
class  CComBSTR
 
class  CComClassFactory
 
class  CComClassFactorySingleton
 
class  CComCoClass
 
class  CComContainedObject
 
class  CComCreator
 
class  CComCreator2
 
class  CComCriticalSection
 
class  CComCritSecLock
 
class  CComDynamicUnkArray
 
class  CComEnum
 
class  CComEnumImpl
 
class  CComFailCreator
 
class  CComFakeCriticalSection
 
class  CComHeapPtr
 
class  CComModule
 
class  CComMultiThreadModel
 
class  CComMultiThreadModelNoCS
 
class  CComObject
 
class  CComObjectCached
 
class  CComObjectRootBase
 
class  CComObjectRootEx
 
class  CComPolyObject
 
class  CComPtr
 
class  CComQIIDPtr
 
class  CComSafeDeleteCriticalSection
 
class  CComSingleThreadModel
 
class  CComVariant
 
class  CContainedWindowT
 
class  CDefaultCompareTraits
 
class  CDefaultElementTraits
 
class  CDialogImpl
 
class  CDialogImplBaseT
 
class  CElementTraits
 
class  CElementTraitsBase
 
class  CFileTime
 
class  CFileTimeSpan
 
class  CHandle
 
class  ChTraitsBase
 
class  ChTraitsBase< wchar_t >
 
class  ChTraitsCRT
 
class  ChTraitsCRT< char >
 
class  ChTraitsOS
 
class  CImage
 
class  CMessageMap
 
class  CNilStringData
 
class  CPathT
 
class  CPropertyPageImpl
 
class  CRegKey
 
class  CRegObject
 
class  CSimpleArray
 
class  CSimpleArrayEqualHelper
 
class  CSimpleArrayEqualHelperFalse
 
class  CSimpleMap
 
class  CSimpleMapEqualHelper
 
class  CSimpleMapEqualHelperFalse
 
class  CSimpleStringT
 
struct  CStringData
 
class  CStringT
 
class  CTime
 
class  CTimeSpan
 
class  CWin32Heap
 
class  CWindow
 
class  CWindowImpl
 
class  CWindowImplBaseT
 
class  CWindowImplRoot
 
class  CWinTraits
 
class  CWinTraitsOR
 
class  CWndProcThunk
 
class  IAtlMemMgr
 
class  IAtlStringMgr
 
class  IConnectionPointContainerImpl
 
class  IConnectionPointImpl
 
class  IDispatchImpl
 
class  StrTraitATL
 

Typedefs

typedef REFIID riid
 
typedef REFIID LPVOIDppv
 
typedef const struct _ATL_CATMAP_ENTRY *() _ATL_CATMAPFUNC()
 
typedef _ATL_OBJMAP_ENTRY30 _ATL_OBJMAP_ENTRY
 
typedef _ATL_MODULE70 _ATL_MODULE
 
typedef REFIID LPVOID DWORD_PTR dw
 
typedef _ATL_COM_MODULE70 _ATL_COM_MODULE
 
typedef _ATL_WIN_MODULE70 _ATL_WIN_MODULE
 
typedef CComMultiThreadModel CComObjectThreadModel
 
typedef CComMultiThreadModel CComGlobalsThreadModel
 
typedef _ATL_BASE_MODULE70 _ATL_BASE_MODULE
 
typedef CPathT< CStringCPath
 
typedef CPathT< CStringACPathA
 
typedef CPathT< CStringWCPathW
 
typedef CSimpleStringT< CHARCSimpleString
 
typedef CStringT< wchar_t, StrTraitATL< wchar_t, ChTraitsCRT< wchar_t > > > CAtlStringW
 
typedef CStringT< char, StrTraitATL< char, ChTraitsCRT< char > > > CAtlStringA
 
typedef CAtlStringW CStringW
 
typedef CAtlStringA CStringA
 
typedef CAtlStringA CAtlString
 
typedef CStringA CString
 
typedef _ATL_WNDCLASSINFOW CWndClassInfo
 
typedef CWinTraits< WS_CHILD|WS_VISIBLE|WS_CLIPCHILDREN|WS_CLIPSIBLINGS, 0 > CControlWinTraits
 
typedef CWinTraits< WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN|WS_CLIPSIBLINGS, WS_EX_APPWINDOW|WS_EX_WINDOWEDGECFrameWinTraits
 
typedef CWinTraits< WS_OVERLAPPEDWINDOW|WS_CHILD|WS_VISIBLE|WS_CLIPCHILDREN|WS_CLIPSIBLINGS, WS_EX_MDICHILDCMDIChildWinTraits
 
typedef CContainedWindowT< CWindowCContainedWindow
 

Enumerations

enum  CComEnumFlags { AtlFlagNoCopy = 0, AtlFlagTakeOwnership = 2, AtlFlagCopy = 3 }
 

Functions

 __declspec (selectany) CAtlModule *_pAtlModule = NULL
 
typedef HRESULT (WINAPI _ATL_CREATORFUNC)(void *pv
 
typedef LPCTSTR (WINAPI _ATL_DESCRIPTIONFUNC)()
 
typedef void (__stdcall _ATL_TERMFUNC)(DWORD_PTR dw)
 
HRESULT WINAPI AtlWinModuleInit (_ATL_WIN_MODULE *pWinModule)
 
HRESULT WINAPI AtlWinModuleTerm (_ATL_WIN_MODULE *pWinModule, HINSTANCE hInst)
 
HRESULT WINAPI AtlInternalQueryInterface (void *pThis, const _ATL_INTMAP_ENTRY *pEntries, REFIID iid, void **ppvObject)
 
void WINAPI AtlWinModuleAddCreateWndData (_ATL_WIN_MODULE *pWinModule, _AtlCreateWndData *pData, void *pObject)
 
void *WINAPI AtlWinModuleExtractCreateWndData (_ATL_WIN_MODULE *pWinModule)
 
HRESULT WINAPI AtlComModuleGetClassObject (_ATL_COM_MODULE *pComModule, REFCLSID rclsid, REFIID riid, LPVOID *ppv)
 
HRESULT WINAPI AtlComModuleRegisterServer (_ATL_COM_MODULE *mod, BOOL bRegTypeLib, const CLSID *clsid)
 
HRESULT WINAPI AtlComModuleUnregisterServer (_ATL_COM_MODULE *mod, BOOL bRegTypeLib, const CLSID *clsid)
 
HRESULT WINAPI AtlComModuleRegisterClassObjects (_ATL_COM_MODULE *module, DWORD context, DWORD flags)
 
HRESULT WINAPI AtlComModuleRevokeClassObjects (_ATL_COM_MODULE *module)
 
BOOL WINAPI InlineIsEqualUnknown (REFGUID rguid1)
 
HRESULT __stdcall AtlAdvise (IUnknown *pUnkCP, IUnknown *pUnk, const IID &iid, LPDWORD pdw)
 
HRESULT __stdcall AtlUnadvise (IUnknown *pUnkCP, const IID &iid, DWORD dw)
 
HRESULT WINAPI AtlLoadTypeLib (HINSTANCE inst, LPCOLESTR lpszIndex, BSTR *pbstrPath, ITypeLib **ppTypeLib)
 
HRESULT WINAPI AtlRegisterTypeLib (HINSTANCE inst, const WCHAR *index)
 
HRESULT WINAPI AtlRegisterClassCategoriesHelper (REFCLSID clsid, const _ATL_CATMAP_ENTRY *catmap, BOOL reg)
 
const ATLSTRINGRESOURCEIMAGE_AtlGetStringResourceImage (_In_ HINSTANCE hInstance, _In_ HRSRC hResource, _In_ UINT id)
 
const ATLSTRINGRESOURCEIMAGEAtlGetStringResourceImage (_In_ HINSTANCE hInstance, _In_ UINT id) throw ()
 
const ATLSTRINGRESOURCEIMAGEAtlGetStringResourceImage (_In_ HINSTANCE hInstance, _In_ UINT id, _In_ WORD wLanguage)
 
HINSTANCE AtlFindStringResourceInstance (UINT nID, WORD wLanguage=0)
 
UINT WINAPI _AtlGetConversionACP () throw ()
 

Variables

CAtlBaseModule _AtlBaseModule
 
CAtlWinModule _AtlWinModule = CAtlWinModule()
 
CAtlComModule _AtlComModule
 

Typedef Documentation

◆ _ATL_BASE_MODULE

Definition at line 184 of file atlcore.h.

◆ _ATL_CATMAPFUNC

typedef const struct _ATL_CATMAP_ENTRY*() ATL::_ATL_CATMAPFUNC()

Definition at line 87 of file atlbase.h.

◆ _ATL_COM_MODULE

Definition at line 174 of file atlbase.h.

◆ _ATL_MODULE

Definition at line 146 of file atlbase.h.

◆ _ATL_OBJMAP_ENTRY

Definition at line 128 of file atlbase.h.

◆ _ATL_WIN_MODULE

Definition at line 185 of file atlbase.h.

◆ CAtlString

Definition at line 138 of file atlstr.h.

◆ CAtlStringA

Definition at line 127 of file atlstr.h.

◆ CAtlStringW

Definition at line 126 of file atlstr.h.

◆ CComGlobalsThreadModel

Definition at line 405 of file atlbase.h.

◆ CComObjectThreadModel

Definition at line 404 of file atlbase.h.

◆ CContainedWindow

Definition at line 1759 of file atlwin.h.

◆ CControlWinTraits

◆ CFrameWinTraits

◆ CMDIChildWinTraits

◆ CPath

Definition at line 383 of file atlpath.h.

◆ CPathA

Definition at line 384 of file atlpath.h.

◆ CPathW

Definition at line 385 of file atlpath.h.

◆ CSimpleString

Definition at line 627 of file atlsimpstr.h.

◆ CString

Definition at line 139 of file atlstr.h.

◆ CStringA

Definition at line 131 of file atlstr.h.

◆ CStringW

Definition at line 130 of file atlstr.h.

◆ CWndClassInfo

Definition at line 55 of file atlwin.h.

◆ dw

Definition at line 148 of file atlbase.h.

◆ ppv

typedef REFIID LPVOID * ATL::ppv

Definition at line 85 of file atlbase.h.

◆ riid

typedef REFIID ATL::riid

Definition at line 85 of file atlbase.h.

Enumeration Type Documentation

◆ CComEnumFlags

Enumerator
AtlFlagNoCopy 
AtlFlagTakeOwnership 
AtlFlagCopy 

Definition at line 846 of file atlcom.h.

847 {
848  AtlFlagNoCopy = 0,
849  AtlFlagTakeOwnership = 2, // BitOwn
850  AtlFlagCopy = 3 // BitOwn | BitCopy
851 };

Function Documentation

◆ __declspec()

ATL::__declspec ( selectany  ) = NULL

Definition at line 537 of file atlbase.h.

Referenced by ATL::CWindow::WinHelp().

537 {0x0, 0x0, 0x0, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0} };

◆ _AtlGetConversionACP()

UINT WINAPI ATL::_AtlGetConversionACP ( )
throw (
)
inline

Definition at line 14 of file cstringt.h.

Referenced by ATL::ChTraitsCRT< _CharType >::ConvertToBaseType(), ATL::ChTraitsCRT< char >::ConvertToBaseType(), ATL::ChTraitsCRT< _CharType >::GetBaseTypeLength(), and ATL::ChTraitsCRT< char >::GetBaseTypeLength().

15 {
16 #ifdef _CONVERSION_DONT_USE_THREAD_LOCALE
17  return CP_ACP;
18 #else
19  return CP_THREAD_ACP;
20 #endif
21 }
#define CP_ACP
Definition: compat.h:99
#define CP_THREAD_ACP
Definition: winnls.h:221

◆ _AtlGetStringResourceImage()

const ATLSTRINGRESOURCEIMAGE* ATL::_AtlGetStringResourceImage ( _In_ HINSTANCE  hInstance,
_In_ HRSRC  hResource,
_In_ UINT  id 
)
inline

Definition at line 235 of file atlcore.h.

Referenced by AtlGetStringResourceImage().

239 {
240  const ATLSTRINGRESOURCEIMAGE* pImage;
241  const ATLSTRINGRESOURCEIMAGE* pImageEnd;
242  ULONG nResourceSize;
243  HGLOBAL hGlobal;
244  UINT iIndex;
245 
246  hGlobal = ::LoadResource(hInstance, hResource);
247  if (hGlobal == NULL) return NULL;
248 
249  pImage = (const ATLSTRINGRESOURCEIMAGE*)::LockResource(hGlobal);
250  if (pImage == NULL) return NULL;
251 
252  nResourceSize = ::SizeofResource(hInstance, hResource);
253  pImageEnd = (const ATLSTRINGRESOURCEIMAGE*)(LPBYTE(pImage) + nResourceSize);
254  iIndex = id & 0x000f;
255 
256  while ((iIndex > 0) && (pImage < pImageEnd))
257  {
258  pImage = (const ATLSTRINGRESOURCEIMAGE*)(LPBYTE(pImage) + (sizeof(ATLSTRINGRESOURCEIMAGE) + (pImage->nLength * sizeof(WCHAR))));
259  iIndex--;
260  }
261 
262  if (pImage >= pImageEnd) return NULL;
263  if (pImage->nLength == 0) return NULL;
264 
265  return pImage;
266 }
__wchar_t WCHAR
Definition: xmlstorage.h:180
LPVOID WINAPI LockResource(HGLOBAL handle)
Definition: res.c:550
HINSTANCE hInstance
Definition: charmap.c:20
unsigned char * LPBYTE
Definition: typedefs.h:52
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
Definition: res.c:532
smooth NULL
Definition: ftsmooth.c:416
unsigned int UINT
Definition: ndis.h:50
DWORD WINAPI SizeofResource(HINSTANCE hModule, HRSRC hRsrc)
Definition: res.c:568
unsigned int ULONG
Definition: retypes.h:1

◆ AtlAdvise()

HRESULT __stdcall ATL::AtlAdvise ( IUnknown pUnkCP,
IUnknown pUnk,
const IID iid,
LPDWORD  pdw 
)
inline

Definition at line 1477 of file atlbase.h.

1478 {
1480  CComPtr<IConnectionPoint> connectionPoint;
1481  HRESULT hResult;
1482 
1483  if (pUnkCP == NULL)
1484  return E_INVALIDARG;
1485  hResult = pUnkCP->QueryInterface(IID_IConnectionPointContainer, (void **)&container);
1486  if (FAILED(hResult))
1487  return hResult;
1488  hResult = container->FindConnectionPoint(iid, &connectionPoint);
1489  if (FAILED(hResult))
1490  return hResult;
1491  return connectionPoint->Advise(pUnk, pdw);
1492 }
const GUID IID_IConnectionPointContainer
HRESULT Advise([in] IUnknown *pUnkSink, [out] DWORD *pdwCookie)
struct container container
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
LONG HRESULT
Definition: typedefs.h:77
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)

◆ AtlComModuleGetClassObject()

HRESULT WINAPI ATL::AtlComModuleGetClassObject ( _ATL_COM_MODULE pComModule,
REFCLSID  rclsid,
REFIID  riid,
LPVOID ppv 
)

◆ AtlComModuleRegisterClassObjects()

HRESULT WINAPI ATL::AtlComModuleRegisterClassObjects ( _ATL_COM_MODULE module,
DWORD  context,
DWORD  flags 
)
inline

Definition at line 1814 of file atlbase.h.

Referenced by ATL::CAtlExeModuleT< T >::RegisterClassObjects().

1815 {
1816  _ATL_OBJMAP_ENTRY **iter;
1817  IUnknown* unk = NULL;
1818  HRESULT hr;
1819 
1820  if (!module)
1821  return E_INVALIDARG;
1822 
1823  for (iter = module->m_ppAutoObjMapFirst; iter < module->m_ppAutoObjMapLast; iter++)
1824  {
1825  if (!(*iter)->pfnGetClassObject)
1826  continue;
1827 
1828  hr = (*iter)->pfnGetClassObject((void*)(*iter)->pfnCreateInstance, IID_IUnknown, (void**)&unk);
1829  if (FAILED(hr))
1830  return hr;
1831 
1832  hr = CoRegisterClassObject(*(*iter)->pclsid, unk, context, flags, &(*iter)->dwRegister);
1833  unk->Release();
1834  if (FAILED(hr))
1835  return hr;
1836  }
1837 
1838  return S_OK;
1839 }
Definition: http.c:6587
_ATL_OBJMAP_ENTRY ** m_ppAutoObjMapFirst
Definition: atlbase.h:220
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
LONG HRESULT
Definition: typedefs.h:77
const GUID IID_IUnknown
nsrefcnt Release()
GLbitfield flags
Definition: glext.h:7161
HRESULT WINAPI CoRegisterClassObject(REFCLSID rclsid, LPUNKNOWN pUnk, DWORD dwClsContext, DWORD flags, LPDWORD lpdwRegister)
Definition: compobj.c:2809
#define S_OK
Definition: intsafe.h:59

◆ AtlComModuleRegisterServer()

HRESULT __stdcall ATL::AtlComModuleRegisterServer ( _ATL_COM_MODULE mod,
BOOL  bRegTypeLib,
const CLSID clsid 
)
inline

Definition at line 1732 of file atlbase.h.

Referenced by ATL::CAtlComModule::RegisterServer().

1733 {
1734  HRESULT hResult = S_OK;
1735 
1736  for (_ATL_OBJMAP_ENTRY ** iter = mod->m_ppAutoObjMapFirst; iter < mod->m_ppAutoObjMapLast; iter++)
1737  {
1738  if (!*iter)
1739  continue;
1740  _ATL_OBJMAP_ENTRY* entry = *iter;
1741  if (clsid && !IsEqualCLSID(*entry->pclsid, *clsid))
1742  continue;
1743 
1744  hResult = entry->pfnUpdateRegistry(TRUE);
1745  if (FAILED(hResult))
1746  return hResult;
1747 
1748  const _ATL_CATMAP_ENTRY *catmap = entry->pfnGetCategoryMap();
1749  if (catmap)
1750  {
1751  hResult = AtlRegisterClassCategoriesHelper(*entry->pclsid, catmap, TRUE);
1752  if (FAILED(hResult))
1753  return hResult;
1754  }
1755  }
1756 
1757  if (bRegTypeLib)
1758  {
1759  hResult = AtlRegisterTypeLib(mod->m_hInstTypeLib, NULL);
1760  }
1761 
1762  return hResult;
1763 }
#define TRUE
Definition: types.h:120
uint8_t entry
Definition: isohybrid.c:63
_ATL_OBJMAP_ENTRY ** m_ppAutoObjMapFirst
Definition: atlbase.h:220
_ATL_CATMAPFUNC * pfnGetCategoryMap
Definition: atlbase.h:93
smooth NULL
Definition: ftsmooth.c:416
const CLSID * pclsid
Definition: atlbase.h:86
LONG HRESULT
Definition: typedefs.h:77
HRESULT WINAPI AtlRegisterTypeLib(HINSTANCE, LPCOLESTR)
#define S_OK
Definition: intsafe.h:59
HRESULT WINAPI AtlRegisterClassCategoriesHelper(REFCLSID, const struct _ATL_CATMAP_ENTRY *, BOOL)
Definition: atl.c:748
Definition: atlbase.h:74
#define IsEqualCLSID(rclsid1, rclsid2)
Definition: guiddef.h:91
HINSTANCE m_hInstTypeLib
Definition: atlbase.h:219

◆ AtlComModuleRevokeClassObjects()

HRESULT WINAPI ATL::AtlComModuleRevokeClassObjects ( _ATL_COM_MODULE module)
inline

Definition at line 1843 of file atlbase.h.

Referenced by AtlRegisterTypeLib(), and ATL::CAtlExeModuleT< T >::RevokeClassObjects().

1844 {
1845  _ATL_OBJMAP_ENTRY **iter;
1846  HRESULT hr;
1847 
1848  if (!module)
1849  return E_INVALIDARG;
1850 
1851  for (iter = module->m_ppAutoObjMapFirst; iter < module->m_ppAutoObjMapLast; iter++)
1852  {
1853  hr = CoRevokeClassObject((*iter)->dwRegister);
1854  if (FAILED(hr))
1855  return hr;
1856  }
1857 
1858  return S_OK;
1859 }
_ATL_OBJMAP_ENTRY ** m_ppAutoObjMapFirst
Definition: atlbase.h:220
#define E_INVALIDARG
Definition: ddrawi.h:101
HRESULT WINAPI DECLSPEC_HOTPATCH CoRevokeClassObject(DWORD dwRegister)
Definition: compobj.c:1089
LONG HRESULT
Definition: typedefs.h:77
#define S_OK
Definition: intsafe.h:59

◆ AtlComModuleUnregisterServer()

HRESULT WINAPI ATL::AtlComModuleUnregisterServer ( _ATL_COM_MODULE mod,
BOOL  bRegTypeLib,
const CLSID clsid 
)
inline

Definition at line 1766 of file atlbase.h.

Referenced by ATL::CAtlComModule::UnregisterServer().

1767 {
1768  HRESULT hResult = S_OK;
1769 
1770  for (_ATL_OBJMAP_ENTRY **iter = mod->m_ppAutoObjMapFirst; iter < mod->m_ppAutoObjMapLast; iter++)
1771  {
1772  if (!*iter)
1773  continue;
1774  _ATL_OBJMAP_ENTRY* entry = *iter;
1775  if (clsid && !IsEqualCLSID(*entry->pclsid, *clsid))
1776  continue;
1777 
1778  const _ATL_CATMAP_ENTRY *catmap = entry->pfnGetCategoryMap();
1779  if (catmap)
1780  {
1781  hResult = AtlRegisterClassCategoriesHelper(*entry->pclsid, catmap, FALSE);
1782  if (FAILED(hResult))
1783  return hResult;
1784  }
1785 
1786  hResult = entry->pfnUpdateRegistry(FALSE);
1787  if (FAILED(hResult))
1788  return hResult;
1789  }
1790 
1791  if (bUnRegTypeLib)
1792  {
1794  TLIBATTR *attr;
1795  CComBSTR path;
1796 
1797  hResult = AtlLoadTypeLib(mod->m_hInstTypeLib, NULL, &path, &typelib);
1798  if (FAILED(hResult))
1799  return hResult;
1800 
1801  hResult = typelib->GetLibAttr(&attr);
1802  if (SUCCEEDED(hResult))
1803  {
1804  hResult = UnRegisterTypeLib(attr->guid, attr->wMajorVerNum, attr->wMinorVerNum, attr->lcid, attr->syskind);
1805  typelib->ReleaseTLibAttr(attr);
1806  }
1807  }
1808 
1809  return hResult;
1810 }
GLsizei const GLchar ** path
Definition: glext.h:7234
uint8_t entry
Definition: isohybrid.c:63
static ITypeLib * typelib
Definition: apps.c:105
_ATL_OBJMAP_ENTRY ** m_ppAutoObjMapFirst
Definition: atlbase.h:220
_ATL_CATMAPFUNC * pfnGetCategoryMap
Definition: atlbase.h:93
smooth NULL
Definition: ftsmooth.c:416
HRESULT WINAPI AtlLoadTypeLib(HINSTANCE, LPCOLESTR, BSTR *, ITypeLib **)
Definition: atl.c:342
const CLSID * pclsid
Definition: atlbase.h:86
HRESULT GetLibAttr([out] TLIBATTR **ppTLibAttr)
LONG HRESULT
Definition: typedefs.h:77
__u8 attr
Definition: mkdosfs.c:359
HRESULT WINAPI UnRegisterTypeLib(REFGUID libid, WORD wVerMajor, WORD wVerMinor, LCID lcid, SYSKIND syskind)
Definition: typelib.c:882
#define S_OK
Definition: intsafe.h:59
HRESULT WINAPI AtlRegisterClassCategoriesHelper(REFCLSID, const struct _ATL_CATMAP_ENTRY *, BOOL)
Definition: atl.c:748
void ReleaseTLibAttr([in] TLIBATTR *pTLibAttr)
Definition: atlbase.h:74
#define IsEqualCLSID(rclsid1, rclsid2)
Definition: guiddef.h:91
HINSTANCE m_hInstTypeLib
Definition: atlbase.h:219
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ AtlFindStringResourceInstance()

HINSTANCE ATL::AtlFindStringResourceInstance ( UINT  nID,
WORD  wLanguage = 0 
)
inline

Definition at line 289 of file atlcore.h.

Referenced by ATL::StrTraitATL< _BaseType, StringIterator >::FindStringResourceInstance().

292 {
293  const ATLSTRINGRESOURCEIMAGE* strRes = NULL;
295 
296  for (int i = 1; hInst != NULL && strRes == NULL; hInst = _AtlBaseModule.GetHInstanceAt(i++))
297  {
298  strRes = AtlGetStringResourceImage(hInst, nID, wLanguage);
299  if (strRes != NULL) return hInst;
300  }
301 
302  return NULL;
303 }
const ATLSTRINGRESOURCEIMAGE * AtlGetStringResourceImage(_In_ HINSTANCE hInstance, _In_ UINT id, _In_ WORD wLanguage)
Definition: atlcore.h:278
GLenum GLclampf GLint i
Definition: glfuncs.h:14
smooth NULL
Definition: ftsmooth.c:416
HINSTANCE GetHInstanceAt(int i)
HINSTANCE hInst
Definition: dxdiag.c:13
CAtlBaseModule _AtlBaseModule
Definition: atlbase.cpp:26

◆ AtlGetStringResourceImage() [1/2]

const ATLSTRINGRESOURCEIMAGE* ATL::AtlGetStringResourceImage ( _In_ HINSTANCE  hInstance,
_In_ UINT  id 
)
throw (
)
inline

Definition at line 268 of file atlcore.h.

Referenced by AtlFindStringResourceInstance(), and ATL::CStringT< BaseType, StringTraits >::LoadString().

271 {
272  HRSRC hResource;
273  hResource = ::FindResourceW(hInstance, MAKEINTRESOURCEW((((id >> 4) + 1) & static_cast<WORD>(~0))), (LPWSTR)RT_STRING);
274  if (hResource == NULL) return NULL;
275  return _AtlGetStringResourceImage(hInstance, hResource, id);
276 }
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
Definition: res.c:176
HINSTANCE hInstance
Definition: charmap.c:20
smooth NULL
Definition: ftsmooth.c:416
#define RT_STRING
Definition: pedump.c:368
const ATLSTRINGRESOURCEIMAGE * _AtlGetStringResourceImage(_In_ HINSTANCE hInstance, _In_ HRSRC hResource, _In_ UINT id)
Definition: atlcore.h:235
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
WCHAR * LPWSTR
Definition: xmlstorage.h:184

◆ AtlGetStringResourceImage() [2/2]

const ATLSTRINGRESOURCEIMAGE* ATL::AtlGetStringResourceImage ( _In_ HINSTANCE  hInstance,
_In_ UINT  id,
_In_ WORD  wLanguage 
)
inline

Definition at line 278 of file atlcore.h.

282 {
283  HRSRC hResource;
284  hResource = ::FindResourceExW(hInstance, (LPWSTR)RT_STRING, MAKEINTRESOURCEW((((id >> 4) + 1) & static_cast<WORD>(~0))), wLanguage);
285  if (hResource == NULL) return NULL;
286  return _AtlGetStringResourceImage(hInstance, hResource, id);
287 }
HINSTANCE hInstance
Definition: charmap.c:20
smooth NULL
Definition: ftsmooth.c:416
HRSRC WINAPI FindResourceExW(HMODULE hModule, LPCWSTR type, LPCWSTR name, WORD lang)
Definition: res.c:164
#define RT_STRING
Definition: pedump.c:368
const ATLSTRINGRESOURCEIMAGE * _AtlGetStringResourceImage(_In_ HINSTANCE hInstance, _In_ HRSRC hResource, _In_ UINT id)
Definition: atlcore.h:235
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
WCHAR * LPWSTR
Definition: xmlstorage.h:184

◆ AtlInternalQueryInterface()

HRESULT __stdcall ATL::AtlInternalQueryInterface ( void pThis,
const _ATL_INTMAP_ENTRY pEntries,
REFIID  iid,
void **  ppvObject 
)
inline

Definition at line 1511 of file atlbase.h.

Referenced by ATL::CComObjectRootBase::InternalQueryInterface().

1512 {
1513  int i;
1514  IUnknown *resultInterface;
1515  HRESULT hResult;
1516 
1517  ATLASSERT(pThis != NULL && pEntries != NULL);
1518  if (pThis == NULL || pEntries == NULL)
1519  return E_INVALIDARG;
1520  ATLASSERT(ppvObject != NULL);
1521  if (ppvObject == NULL)
1522  return E_POINTER;
1523 
1524  if (InlineIsEqualUnknown(iid))
1525  {
1526  resultInterface = reinterpret_cast<IUnknown *>(reinterpret_cast<char *>(pThis) + pEntries[0].dw);
1527  *ppvObject = resultInterface;
1528  resultInterface->AddRef();
1529  return S_OK;
1530  }
1531 
1532  i = 0;
1533  while (pEntries[i].pFunc != 0)
1534  {
1535  if (pEntries[i].piid == NULL || InlineIsEqualGUID(iid, *pEntries[i].piid))
1536  {
1537  if (pEntries[i].pFunc == reinterpret_cast<_ATL_CREATORARGFUNC *>(1))
1538  {
1539  ATLASSERT(pEntries[i].piid != NULL);
1540  resultInterface = reinterpret_cast<IUnknown *>(reinterpret_cast<char *>(pThis) + pEntries[i].dw);
1541  *ppvObject = resultInterface;
1542  resultInterface->AddRef();
1543  return S_OK;
1544  }
1545  else
1546  {
1547  hResult = pEntries[i].pFunc(pThis, iid, ppvObject, 0);
1548  if (hResult == S_OK)
1549  return hResult;
1550  if (FAILED(hResult) && pEntries[i].piid != NULL)
1551  break;
1552  }
1553  }
1554  i++;
1555  }
1556  *ppvObject = NULL;
1557  return E_NOINTERFACE;
1558 }
#define E_NOINTERFACE
Definition: winerror.h:2364
#define ATLASSERT(x)
Definition: CComVariant.cpp:9
GLenum GLclampf GLint i
Definition: glfuncs.h:14
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
LONG HRESULT
Definition: typedefs.h:77
BOOL WINAPI InlineIsEqualUnknown(REFGUID rguid1)
Definition: atlbase.h:336
REFIID LPVOID DWORD dw
Definition: atlbase.h:40
ULONG AddRef()
#define S_OK
Definition: intsafe.h:59
_ATL_CREATORARGFUNC * pFunc
Definition: atlbase.h:156
#define E_POINTER
Definition: winerror.h:2365
#define InlineIsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:137

◆ AtlLoadTypeLib()

HRESULT WINAPI ATL::AtlLoadTypeLib ( HINSTANCE  inst,
LPCOLESTR  lpszIndex,
BSTR pbstrPath,
ITypeLib **  ppTypeLib 
)
inline

Definition at line 1618 of file atlbase.h.

Referenced by AtlComModuleUnregisterServer(), and AtlRegisterTypeLib().

1620 {
1621  size_t index_len = lpszIndex ? wcslen(lpszIndex) : 0;
1623  path.Allocate(MAX_PATH + index_len + wcslen(L".tlb"));
1624 
1625  if (!path)
1626  return E_OUTOFMEMORY;
1627 
1628  size_t path_len = GetModuleFileNameW(inst, path, MAX_PATH);
1629  if (!path_len)
1630  return HRESULT_FROM_WIN32(GetLastError());
1631 
1632  if (index_len)
1633  wcscat(path, lpszIndex);
1634 
1636  HRESULT hResult = LoadTypeLib(path, &typelib);
1637  if (FAILED(hResult))
1638  {
1639  WCHAR *ptr;
1640  for (ptr = path+path_len-1; ptr > path && *ptr != '\\' && *ptr != '.'; ptr--)
1641  ;
1642  if (*ptr != '.')
1643  ptr = (WCHAR*)path + path_len;
1644  wcscpy(ptr, L".tlb");
1645 
1646  hResult = LoadTypeLib(path, &typelib);
1647  }
1648 
1649  if (SUCCEEDED(hResult))
1650  {
1651  *pbstrPath = SysAllocString(path);
1652  if (!*pbstrPath)
1653  {
1654  typelib.Release();
1655  hResult = E_OUTOFMEMORY;
1656  }
1657  }
1658 
1659  if (FAILED(hResult))
1660  return hResult;
1661 
1662  *ppTypeLib = typelib.Detach();
1663  return S_OK;
1664 }
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
Definition: loader.c:607
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92
__wchar_t WCHAR
Definition: xmlstorage.h:180
GLsizei const GLchar ** path
Definition: glext.h:7234
static ITypeLib * typelib
Definition: apps.c:105
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
HRESULT WINAPI LoadTypeLib(const OLECHAR *szFile, ITypeLib **pptLib)
Definition: typelib.c:461
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
bool Allocate(_In_ size_t nElements=1)
Definition: atlalloc.h:143
static PVOID ptr
Definition: dispmode.c:27
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:242
LONG HRESULT
Definition: typedefs.h:77
#define MAX_PATH
Definition: compat.h:26
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
static const WCHAR L[]
Definition: oid.c:1087
#define S_OK
Definition: intsafe.h:59
static DWORD path_len
Definition: batch.c:31
void Release()
Definition: atlcomcli.h:134
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
T * Detach()
Definition: atlcomcli.h:150
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ AtlRegisterClassCategoriesHelper()

HRESULT WINAPI ATL::AtlRegisterClassCategoriesHelper ( REFCLSID  clsid,
const _ATL_CATMAP_ENTRY catmap,
BOOL  reg 
)
inline

Definition at line 1679 of file atlbase.h.

Referenced by AtlComModuleRegisterServer(), and AtlComModuleUnregisterServer().

1680 {
1681  if (!catmap)
1682  return S_OK;
1683 
1685 
1686  HRESULT hResult = CoCreateInstance(CLSID_StdComponentCategoriesMgr, NULL, CLSCTX_INPROC_SERVER, IID_ICatRegister, (void**)&catreg);
1687  if (FAILED(hResult))
1688  return hResult;
1689 
1690  for (const _ATL_CATMAP_ENTRY *iter = catmap; iter->iType != _ATL_CATMAP_ENTRY_END; iter++)
1691  {
1692  CATID catid = *iter->pcatid;
1693 
1694  if (iter->iType == _ATL_CATMAP_ENTRY_IMPLEMENTED)
1695  {
1696  if (reg)
1697  hResult = catreg->RegisterClassImplCategories(clsid, 1, &catid);
1698  else
1699  hResult = catreg->UnRegisterClassImplCategories(clsid, 1, &catid);
1700  }
1701  else
1702  {
1703  if (reg)
1704  hResult = catreg->RegisterClassReqCategories(clsid, 1, &catid);
1705  else
1706  hResult = catreg->UnRegisterClassReqCategories(clsid, 1, &catid);
1707  }
1708  if (FAILED(hResult))
1709  return hResult;
1710  }
1711 
1712  if (!reg)
1713  {
1714  WCHAR reg_path[256] = L"CLSID\\";
1715 
1716  StringFromGUID2(clsid, reg_path + wcslen(reg_path), 64);
1717  wcscat(reg_path, L"\\");
1718  WCHAR* ptr = reg_path + wcslen(reg_path);
1719 
1720  wcscpy(ptr, L"Implemented Categories");
1721  RegDeleteKeyW(HKEY_CLASSES_ROOT, reg_path);
1722 
1723  wcscpy(ptr, L"Required Categories");
1724  RegDeleteKeyW(HKEY_CLASSES_ROOT, reg_path);
1725  }
1726 
1727  return hResult;
1728 }
HRESULT RegisterClassReqCategories([in] REFCLSID rclsid, [in] ULONG cCategories, [in, size_is(cCategories)] CATID rgcatid[])
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG WINAPI RegDeleteKeyW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey)
Definition: reg.c:1240
HRESULT UnRegisterClassImplCategories([in] REFCLSID rclsid, [in] ULONG cCategories, [in, size_is(cCategories)] CATID rgcatid[])
static ICatRegister * catreg
Definition: atl.c:41
static PVOID ptr
Definition: dispmode.c:27
smooth NULL
Definition: ftsmooth.c:416
GUID catid
Definition: msctf.idl:608
LONG HRESULT
Definition: typedefs.h:77
INT WINAPI StringFromGUID2(REFGUID id, LPOLESTR str, INT cmax)
Definition: compobj.c:2346
HRESULT RegisterClassImplCategories([in] REFCLSID rclsid, [in] ULONG cCategories, [in, size_is(cCategories)] CATID rgcatid[])
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
REFCLSID clsid
Definition: msctf.c:84
int iType
Definition: atlbase.h:76
static const WCHAR L[]
Definition: oid.c:1087
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3237
#define S_OK
Definition: intsafe.h:59
#define _ATL_CATMAP_ENTRY_END
Definition: atlbase.h:80
#define _ATL_CATMAP_ENTRY_IMPLEMENTED
Definition: atlbase.h:81
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
static int reg
Definition: i386-dis.c:1275
HRESULT UnRegisterClassReqCategories([in] REFCLSID rclsid, [in] ULONG cCategories, [in, size_is(cCategories)] CATID rgcatid[])
Definition: atlbase.h:74
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)

◆ AtlRegisterTypeLib()

HRESULT WINAPI ATL::AtlRegisterTypeLib ( HINSTANCE  inst,
const WCHAR index 
)
inline

Definition at line 1667 of file atlbase.h.

Referenced by AtlComModuleRegisterServer().

1668 {
1669  CComBSTR path;
1671  HRESULT hResult = AtlLoadTypeLib(inst, index, &path, &typelib);
1672  if (FAILED(hResult))
1673  return hResult;
1674 
1675  return RegisterTypeLib(typelib, path, NULL); /* FIXME: pass help directory */
1676 }
GLsizei const GLchar ** path
Definition: glext.h:7234
static ITypeLib * typelib
Definition: apps.c:105
smooth NULL
Definition: ftsmooth.c:416
GLuint index
Definition: glext.h:6031
HRESULT WINAPI RegisterTypeLib(ITypeLib *ptlib, OLECHAR *szFullPath, OLECHAR *szHelpDir)
Definition: typelib.c:649
HRESULT WINAPI AtlLoadTypeLib(HINSTANCE, LPCOLESTR, BSTR *, ITypeLib **)
Definition: atl.c:342
LONG HRESULT
Definition: typedefs.h:77

◆ AtlUnadvise()

HRESULT __stdcall ATL::AtlUnadvise ( IUnknown pUnkCP,
const IID iid,
DWORD  dw 
)
inline

Definition at line 1494 of file atlbase.h.

1495 {
1497  CComPtr<IConnectionPoint> connectionPoint;
1498  HRESULT hResult;
1499 
1500  if (pUnkCP == NULL)
1501  return E_INVALIDARG;
1502  hResult = pUnkCP->QueryInterface(IID_IConnectionPointContainer, (void **)&container);
1503  if (FAILED(hResult))
1504  return hResult;
1505  hResult = container->FindConnectionPoint(iid, &connectionPoint);
1506  if (FAILED(hResult))
1507  return hResult;
1508  return connectionPoint->Unadvise(dw);
1509 }
const GUID IID_IConnectionPointContainer
struct container container
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
LONG HRESULT
Definition: typedefs.h:77
REFIID LPVOID DWORD dw
Definition: atlbase.h:40
HRESULT Unadvise([in] DWORD dwCookie)
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)

◆ AtlWinModuleAddCreateWndData()

void __stdcall ATL::AtlWinModuleAddCreateWndData ( _ATL_WIN_MODULE pWinModule,
_AtlCreateWndData pData,
void pObject 
)
inline

Definition at line 1576 of file atlbase.h.

Referenced by ATL::CAtlWinModule::AddCreateWndData().

1577 {
1579 
1580  ATLASSERT(pWinModule != NULL);
1581  ATLASSERT(pObject != NULL);
1582 
1583  pData->m_pThis = pObject;
1585  pData->m_pNext = pWinModule->m_pCreateWndList;
1586  pWinModule->m_pCreateWndList = pData;
1587 }
_AtlCreateWndData * m_pNext
Definition: atlbase.h:163
rwlock_t lock
Definition: tcpcore.h:1163
#define ATLASSERT(x)
Definition: CComVariant.cpp:9
CComCriticalSection m_csWindowCreate
Definition: atlbase.h:201
smooth NULL
Definition: ftsmooth.c:416
DWORD WINAPI GetCurrentThreadId(VOID)
Definition: thread.c:421
_AtlCreateWndData * m_pCreateWndList
Definition: atlbase.h:202
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1827

◆ AtlWinModuleExtractCreateWndData()

void *__stdcall ATL::AtlWinModuleExtractCreateWndData ( _ATL_WIN_MODULE pWinModule)
inline

Definition at line 1589 of file atlbase.h.

Referenced by ATL::CAtlWinModule::ExtractCreateWndData().

1590 {
1592  void *result;
1593  _AtlCreateWndData *currentEntry;
1594  _AtlCreateWndData **previousLink;
1595  DWORD threadID;
1596 
1597  ATLASSERT(pWinModule != NULL);
1598 
1599  result = NULL;
1600  threadID = GetCurrentThreadId();
1601  currentEntry = pWinModule->m_pCreateWndList;
1602  previousLink = &pWinModule->m_pCreateWndList;
1603  while (currentEntry != NULL)
1604  {
1605  if (currentEntry->m_dwThreadID == threadID)
1606  {
1607  *previousLink = currentEntry->m_pNext;
1608  result = currentEntry->m_pThis;
1609  break;
1610  }
1611  previousLink = &currentEntry->m_pNext;
1612  currentEntry = currentEntry->m_pNext;
1613  }
1614  return result;
1615 }
_AtlCreateWndData * m_pNext
Definition: atlbase.h:163
rwlock_t lock
Definition: tcpcore.h:1163
#define ATLASSERT(x)
Definition: CComVariant.cpp:9
CComCriticalSection m_csWindowCreate
Definition: atlbase.h:201
smooth NULL
Definition: ftsmooth.c:416
DWORD WINAPI GetCurrentThreadId(VOID)
Definition: thread.c:421
unsigned long DWORD
Definition: ntddk_ex.h:95
_AtlCreateWndData * m_pCreateWndList
Definition: atlbase.h:202
GLuint64EXT * result
Definition: glext.h:11304

◆ AtlWinModuleInit()

HRESULT __stdcall ATL::AtlWinModuleInit ( _ATL_WIN_MODULE pWinModule)
inline

Definition at line 1560 of file atlbase.h.

Referenced by ATL::CAtlWinModule::CAtlWinModule().

1561 {
1562  if (pWinModule == NULL)
1563  return E_INVALIDARG;
1564  pWinModule->m_pCreateWndList = NULL;
1565  return pWinModule->m_csWindowCreate.Init();
1566 }
CComCriticalSection m_csWindowCreate
Definition: atlbase.h:201
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
_AtlCreateWndData * m_pCreateWndList
Definition: atlbase.h:202

◆ AtlWinModuleTerm()

HRESULT __stdcall ATL::AtlWinModuleTerm ( _ATL_WIN_MODULE pWinModule,
HINSTANCE  hInst 
)
inline

Definition at line 1568 of file atlbase.h.

Referenced by ATL::CAtlWinModule::Term().

1569 {
1570  if (pWinModule == NULL)
1571  return E_INVALIDARG;
1572  pWinModule->m_csWindowCreate.Term();
1573  return S_OK;
1574 }
CComCriticalSection m_csWindowCreate
Definition: atlbase.h:201
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
#define S_OK
Definition: intsafe.h:59

◆ HRESULT()

typedef ATL::HRESULT ( WINAPI  _ATL_CREATORFUNC)

◆ InlineIsEqualUnknown()

BOOL WINAPI ATL::InlineIsEqualUnknown ( REFGUID  rguid1)
inline

Definition at line 336 of file atlbase.h.

Referenced by ATL::IConnectionPointImpl< T, piid, CDV >::_LocCPQueryInterface(), AtlInternalQueryInterface(), and ATL::CComClassFactory::CreateInstance().

337 {
338  return (
339  ((unsigned long *)&rguid1)[0] == 0 &&
340  ((unsigned long *)&rguid1)[1] == 0 &&
341  ((unsigned long *)&rguid1)[2] == 0x000000C0 &&
342  ((unsigned long *)&rguid1)[3] == 0x46000000);
343 }

◆ LPCTSTR()

typedef ATL::LPCTSTR ( WINAPI  _ATL_DESCRIPTIONFUNC)

◆ void()

typedef ATL::void ( __stdcall  _ATL_TERMFUNC)

Variable Documentation

◆ _AtlBaseModule

◆ _AtlComModule

CAtlComModule ATL::_AtlComModule

Definition at line 28 of file atlbase.cpp.

◆ _AtlWinModule