Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cScriptableInterfaceDynamic.h
Go to the documentation of this file.
1 //
4 //
5 
6 #ifndef _INC_cScriptableInterfaceDynamic_H
7 #define _INC_cScriptableInterfaceDynamic_H
8 #ifndef NO_PRAGMA_ONCE
9 #pragma once
10 #endif
11 
12 #include "cScriptableInterface.h"
13 #include "cScriptableObj.h"
14 #include "GrayCore/include/cAtom.h"
16 
17 namespace GrayLib
18 {
21 
23  {
27  typedef cScriptableProp SUPER_t;
28 
29  public:
33 
34  public:
36  virtual ~cScriptablePropDynamic();
37 
38  HRESULT SerializeInput(cStreamInput& stmIn);
40  {
41  return S_OK;
42  }
43  STDMETHOD_(cString, get_Name)() const
44  {
45  return cString(m_aKey.get_StrA());
46  }
47  };
48 
50 
52  {
55 
56  public:
59 
60  public:
61  cScriptTagDef(ATOMCODE_t tid, const ATOMCHAR_t* pszTagName)
62  : m_aTagName(pszTagName)
63  , m_tid(tid)
64  {
65  }
66  virtual ~cScriptTagDef()
67  {
68  }
70  {
71  return m_tid;
72  }
73  STDMETHOD_(cStringA, get_Name)() const
74  {
75  return cStringA(m_aTagName.get_StrA());
76  }
77  };
78 
80 
83  , public cHeapObject
84  , public cRefBase
85  {
89 
90  protected:
92  public:
93  CSCRIPT_CLASS_DEF1(ScriptInterfaceDynamic, cScriptableInterfaceDef);
94 
99 
100  public:
102  virtual ~cScriptableInterfaceDynamic();
103 
104  virtual HRESULT DisposeThis();
105  HRESULT SerializeInput(cStreamInput& stmIn);
107  {
108  return get_InterfaceID();
109  }
110 
112  {
113  if (!m_aMethods.IsValidIndex(index))
114  return nullptr;
115  return m_aMethods[index];
116  }
117  virtual SCRIPTPROPID_t GetMethodIndex(const cScriptableMethod* pMethod) const
118  {
119  return (SCRIPTPROPID_t)m_aMethods.FindIForAK(static_cast<const cScriptablePropDynamic*>(pMethod));
120  }
122  {
123  if (!m_aProps.IsValidIndex(index))
124  return nullptr;
125  return m_aProps[index];
126  }
127  virtual SCRIPTPROPID_t GetPropIndex(const cScriptableProp* pProp) const
128  {
129  return (SCRIPTPROPID_t)m_aProps.FindIFor(const_cast<cScriptablePropDynamic*>(static_cast<const cScriptablePropDynamic*>(pProp)));
130  }
131 
132  // STDMETHOD(s_PropPut)( const cScriptableProp* pProp, const cVariant& vVal );
133  // STDMETHOD(s_PropGet)( const cScriptableProp* pProp, cVariant& vValRet );
134  // IUNKNOWN_DISAMBIG(cRefBase);
135  };
136 
137  typedef cRefPtr<cScriptableInterfaceDynamic> cScriptableInterfaceDynamicPtr;
138 }
139 
140 #ifdef GRAY_DLL // force implementation/instantiate for DLL/SO.
141 namespace Gray
142 {
143  template class GRAYLIB_LINK cRefPtr<GrayLib::cScriptableInterfaceDynamic>;
144  template class GRAYLIB_LINK cArrayRef<GrayLib::cScriptablePropDynamic>;
145  template class GRAYLIB_LINK cArraySortName<GrayLib::cScriptablePropDynamic>;
146 }
147 #endif
148 
149 #endif // _INC_cScriptableInterfaceDynamic_H
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
#define CSCRIPT_CLASS_DEF1(TYPE, _BASETYPE)
Definition: cScriptableInterface.h:277
Definition: cScriptableInterfaceDynamic.h:52
virtual ~cScriptTagDef()
Definition: cScriptableInterfaceDynamic.h:66
cScriptTagDef(ATOMCODE_t tid, const ATOMCHAR_t *pszTagName)
Definition: cScriptableInterfaceDynamic.h:61
ATOMCODE_t get_HashCode() const
Definition: cScriptableInterfaceDynamic.h:69
STDMETHOD_(cStringA, get_Name)() const
Definition: cScriptableInterfaceDynamic.h:73
ATOMCODE_t m_tid
the atom id from the source side for the tag name.
Definition: cScriptableInterfaceDynamic.h:58
cAtomRef m_aTagName
m_pszKey such that it can be used in m_TagMap
Definition: cScriptableInterfaceDynamic.h:57
Definition: cScriptableInterface.h:300
Definition: cScriptableInterfaceDynamic.h:85
cArrayRef< cScriptablePropDynamic > m_aProps
m_pProps (cannot assume sorted)
Definition: cScriptableInterfaceDynamic.h:97
virtual SCRIPTPROPID_t GetMethodIndex(const cScriptableMethod *pMethod) const
Definition: cScriptableInterfaceDynamic.h:117
SCRIPTINTERFACEID_t get_HashCode() const noexcept
Definition: cScriptableInterfaceDynamic.h:106
virtual SCRIPTPROPID_t GetPropIndex(const cScriptableProp *pProp) const
Definition: cScriptableInterfaceDynamic.h:127
CHEAPOBJECT_IMPL
Definition: cScriptableInterfaceDynamic.h:91
cAtomRef m_aName
m_pszName storage for the interface
Definition: cScriptableInterfaceDynamic.h:93
virtual cScriptableProp * GetPropPtr(SCRIPTPROPID_t index) const
Definition: cScriptableInterfaceDynamic.h:121
virtual cScriptableMethod * GetMethodPtr(SCRIPTPROPID_t index) const noexcept
Definition: cScriptableInterfaceDynamic.h:111
cArraySortName< cScriptablePropDynamic > m_aMethods
m_pMethods
Definition: cScriptableInterfaceDynamic.h:98
cStringA m_sHelp
m_pszHelp storage for the interface.
Definition: cScriptableInterfaceDynamic.h:96
Definition: cScriptableInterfaceDynamic.h:23
cAtomRef m_aKey
m_pszKey such that it can be used in m_TagMap
Definition: cScriptableInterfaceDynamic.h:31
cStringA m_sHelp
Definition: cScriptableInterfaceDynamic.h:32
STDMETHOD_(cString, get_Name)() const
Definition: cScriptableInterfaceDynamic.h:43
cScriptableInterfaceDynamicPtr m_pInterfaceDef
hold a lock on my interface!
Definition: cScriptableInterfaceDynamic.h:30
HRESULT DisposeThis()
Definition: cScriptableInterfaceDynamic.h:39
Definition: cScriptableInterface.h:97
Definition: cArrayRef.h:21
bool IsValidIndex(ITERATE_t i) const noexcept
Definition: cArraySort.h:432
Definition: cArraySortRef.h:199
ITERATE_t FindIForAK(const TYPE *pBase) const
Definition: cArraySortRef.h:228
bool IsValidIndex(ITERATE_t i) const noexcept
Definition: cArray.h:495
ITERATE_t FindIFor(ARG_TYPE arg) const
Definition: cArray.h:614
Definition: cAtom.h:63
const STR_t & get_StrA() const noexcept
Definition: cAtom.h:120
Definition: cHeapObject.h:38
Definition: cRefPtr.h:22
Definition: cStream.h:306
Definition: cMesh.h:22
cRefPtr< cScriptableInterfaceDynamic > cScriptableInterfaceDynamicPtr
Definition: cScriptableInterfaceDynamic.h:20
BYTE SCRIPTINTERFACEID_t
enumerate all the defined interface definitions.
Definition: cScriptableInterface.h:35
cRefPtr< cScriptablePropDynamic > cScriptablePropDynamicPtr
Definition: cScriptableInterfaceDynamic.h:49
BYTE SCRIPTPROPID_t
index to method or prop.
Definition: cScriptableEventsMask.h:28
class __DECL_IMPORT cScriptableInterfaceDynamic
Definition: cScriptableInterfaceDynamic.h:19
cRefPtr< cScriptTagDef > cScriptTagDefPtr
Definition: cScriptableInterfaceDynamic.h:79
< The main namespace for all Core functions.
Definition: GrayCore.cpp:14
HASHCODE32_t ATOMCODE_t
Encode a atom as a 32 bit hashcode instead of using its name/pointer. StrT::GetHashCode32()
Definition: cAtom.h:18
cStringT< char > cStringA
Definition: cString.h:635
char ATOMCHAR_t
the char form (UNICODE or not) for an atom. (for symbolic names)
Definition: StrConst.h:15
cStringT< GChar_t > cString
Definition: cString.h:636
uint16 index
Definition: sample3.cpp:29