Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cXObjModule.h
Go to the documentation of this file.
1 //
4 //
5 
6 #ifndef _INC_cXObjModule_H
7 #define _INC_cXObjModule_H
8 #ifndef NO_PRAGMA_ONCE
9 #pragma once
10 #endif
11 
12 #include "cXObjPack.h"
13 #include "../System/cOSModDyn.h"
14 
15 namespace GrayLib
16 {
17  class cXObjModule;
18  class cXObjEventSink;
19  class cXObjPackChild;
20  class cXObjTypeDef;
21  class cXObjModuleFactory;
22 
24  : public cXObjPack
25  {
30 
31  typedef cXObjPack SUPER_t;
32 
33  private:
34  const cObjectSignature<> m_Sig;
35  cOSModule m_OSMod;
36  cOSModDyn* m_pOSModDyn;
37 
38  public:
39  cXObjModule(const FILECHAR_t* pszPathName, cXObjModuleFactory* pFactory, HMODULE hModule);
40  virtual ~cXObjModule();
41 
42  bool inline IsValidSignature(UINT32 nGrayLibVer, size_t nSizeofThis) const
43  {
46  if (!cMem::IsValidApp(this))
47  return false;
48  return m_Sig.IsValidSignature(nGrayLibVer, nSizeofThis);
49  }
50 
52  {
54  return m_pOSModDyn;
55  }
56 
57  virtual HRESULT LoadXObjPack(IXObject* pRoot) override;
58  virtual void UnloadXObject() override;
59  virtual HRESULT DisposeThis() override;
60 
61  virtual HRESULT InvokeMethodInt(cXObjPackChild* pEventSink, const ATOMCHAR_t* pszMethod, const cVariant& vArgs, OUT cVariant& vValRet) override;
62  };
63 
65 
67  : public cXObjPackFactory
68  , public cSingleton<cXObjModuleFactory>
69  {
73  public:
75  virtual ~cXObjModuleFactory();
76  virtual cXObjPackPtr CreateXObjFile(const FILECHAR_t* pszFilePath) override;
77  };
78 };
79 #endif // _INC_cXObjModule_H
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
#define CHEAPOBJECT_IMPL
Definition: cHeapObject.h:32
Definition: cOSModDyn.h:18
Definition: cVariant.h:26
Definition: cXObjModule.h:69
Definition: cXObjModule.h:25
cOSModImpl * get_XObjModUnload() const
Definition: cXObjModule.h:51
bool IsValidSignature(UINT32 nGrayLibVer, size_t nSizeofThis) const
Definition: cXObjModule.h:42
Definition: cXObjPackChild.h:18
Definition: cXObjPack.h:110
Definition: cXObjPack.h:30
Definition: cXObject.h:78
Definition: cOSModImpl.h:25
Definition: cOSModule.h:34
Definition: cObject.h:22
bool IsValidSignature(UINT32 nVer, size_t nSizeofThis) const
Definition: cObject.h:40
Definition: cRefPtr.h:225
Definition: cSingleton.h:127
Definition: IXObject.h:46
Definition: cMesh.h:22
cRefPtr< cXObjModule > cXObjModulePtr
Definition: cXObjModule.h:64
char FILECHAR_t
a UTF8 char in a file name. like TCHAR
Definition: FileName.h:22
char ATOMCHAR_t
the char form (UNICODE or not) for an atom. (for symbolic names)
Definition: StrConst.h:15
static bool IsValidApp(const void *pData) noexcept
Definition: cMem.h:42