Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
IScriptableObj.h
Go to the documentation of this file.
1 //
4 //
5 
6 #ifndef _INC_IScriptableObj_H
7 #define _INC_IScriptableObj_H
8 #ifndef NO_PRAGMA_ONCE
9 #pragma once
10 #endif
11 
12 #include "../GrayLibBase.h"
13 #include "GrayCore/include/IUnkObject.h" // __IUnknown_INTERFACE_DEFINED__
14 #include "../UID/cGuid.h"
15 
16 #ifdef __linux__ // oaidl.h
17 MIDL_INTERFACE("00020400-0000-0000-C000-000000000046") IDispatch : public IUnknown
18 {
19  // Just stub this out for stuff we care about.
20  IGNORE_WARN_INTERFACE(IDispatch);
21 public:
22  STDMETHOD(GetTypeInfoCount)( /* [out] */ UINT *pctinfo) = 0;
23 };
24 #endif
25 
26 #ifdef __GNUC__
27 extern GrayLib::cGuid IID_IScriptableObj;
28 #endif
29 
30 namespace GrayLib
31 {
32  class cVariant;
33  class cScriptableProp;
34  typedef cScriptableProp cScriptableMethod; // Methods are really similar to Props.
36  class cScriptContext;
37 
38  MIDL_INTERFACE("0C3E2E71-B93C-11d2-AAD0-006007654302") IScriptableEnumerator
39  {
43 
44  STDMETHOD(s_GetEnum)(ITERATE_t i, OUT cStringA& rsPropName, OUT cVariant& rvValRet) = 0;
45 
48  // STDMETHOD(s_GetReadState)( cStringA& rsReadState );
49  };
50 
51  MIDL_INTERFACE("0C3E2E71-B93C-11d2-AAD0-006007654303") IScriptableGetter
52  {
57  STDMETHOD(s_GetByName)(const ATOMCHAR_t* pszPropName, OUT cVariant& vValRet) = 0;
58  };
59 
61 
62  MIDL_INTERFACE("0C3E2E71-B93C-11d2-AAD0-006007654301") IScriptableSetter
63  {
68  STDMETHOD(s_Put)(const ATOMCHAR_t* pszPropName, const cVariant& vValSet) = 0;
69  };
70 
71  MIDL_INTERFACE("0C3E2E71-B93C-11d2-AAD0-006007654304") IScriptableObj
72  : public IUnkObject // IUnknown, get_HashCodeX, get_Name
73  , public IScriptableEnumerator // s_GetEnum
74  , public IScriptableGetter // s_GetByName
75  , public IScriptableSetter // s_Put
76  {
84 
86  STDMETHOD_(cScriptableInterfaceDefPtr, get_ScriptInterfaceDef)() const = 0;
87 
89  STDMETHOD(s_PropGet)(const cScriptableProp* pProp, OUT cVariant& vValRet) = 0;
90  STDMETHOD(s_PropPut)(const cScriptableProp* pProp, const cVariant& vVal) = 0;
91  STDMETHOD(s_Invoke)(const cScriptableMethod* pMethod, const cVariant& vArgs, OUT cVariant& vValRet) = 0;
92  };
93 };
94 #endif
MIDL_INTERFACE("7ED943DD-52E8-40b5-A8D8-76685C406330") ID3DXBaseMesh
#define IGNORE_WARN_INTERFACE(c)
Definition: GrayCore.h:79
Definition: cGuid.h:21
Definition: IScriptableObj.h:38
Definition: IScriptableObj.h:51
Definition: IScriptableObj.h:71
Definition: IScriptableObj.h:62
Definition: IUnknown.h:68
Definition: cMesh.h:22
cScriptableProp cScriptableMethod
Methods are really similar to Props.
Definition: cScriptableInterface.h:253
class __DECL_IMPORT cScriptableInterfaceDef
Definition: cScriptableEventsMask.h:31
cScriptableInterfaceDef * cScriptableInterfaceDefPtr
Definition: cScriptableInterface.h:33
class __DECL_IMPORT cVariant
Definition: cJSONWriter.h:19
class __DECL_IMPORT cScriptContext
Definition: cScriptableInterface.h:31
class __DECL_IMPORT cScriptableProp
Definition: cXObject.h:30
MIDL_INTERFACE("0C3E2E71-B93C-11d2-AAD0-006007654304") IScriptableObj
int ITERATE_t
like size_t but signed
Definition: Index.h:28
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