Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cScriptableInterface.h File Reference

Go to the source code of this file.

Classes

class  GrayLib::cScriptableProp
 
class  GrayLib::cScriptableInterfaceDef
 
class  GrayLib::cScriptableInterfaceTemplate< TYPE >
 
class  GrayLib::cScriptableInterfaceMgr
 

Namespaces

 GrayLib
 

Macros

#define CSCRIPT_PROP_HELP(c)   c
 used to compile out the descriptive help text. _HELP More...
 
#define CSCRIPT_PROP_IMP(a, b, c)   { { #a, { VARTYPE_NoType, 0, 0 } }, b, PLEVEL_GM, PLEVEL_GM, CSCRIPT_PROP_HELP(c), false, &sm_ScriptInterfaceDef }
 
#define CSCRIPT_METHOD_IMP(a, b, c)   { { #a, { VARTYPE_NoType, 0, 0 } }, b, PLEVEL_GM, PLEVEL_QTY, CSCRIPT_PROP_HELP(c), true, &sm_ScriptInterfaceDef }
 
#define CSCRIPT_METHOD_IMP2(a, b, c, d)   { { #a, { VARTYPE_NoType, 0, 0 } }, b, c, PLEVEL_QTY, CSCRIPT_PROP_HELP(d), true, &sm_ScriptInterfaceDef }
 
#define CSCRIPT_PROP_END   { { nullptr, { VARTYPE_NoType, 0, 0 } }, 0 }
 
#define CSCRIPT_CLASS_DEF0_N   static cScriptableInterfaceDef sm_ScriptInterfaceDef;
 
#define CSCRIPT_CLASS_DEF0(TYPE)   CSCRIPT_CLASS_DEF0_N virtual cScriptableInterfaceDefPtr _stdcall get_ScriptInterfaceDef() const { return(&sm_ScriptInterfaceDef); }
 
#define CSCRIPT_CLASS_IMP0(TYPE, _PROPS, _METHODS, _HELP)   cScriptableInterfaceDef c##TYPE::sm_ScriptInterfaceDef(typeid(c##TYPE),#TYPE,_PROPS,_METHODS,nullptr,CSCRIPT_PROP_HELP(_HELP));
 
#define CSCRIPT_CLASS_DEF1(TYPE, _BASETYPE)
 
#define CSCRIPT_CLASS_IMP1(TYPE, _PROPS, _METHODS, _HELP)    cScriptableInterfaceDef c##TYPE::sm_ScriptInterfaceDef(typeid(c##TYPE),#TYPE,_PROPS,_METHODS,&c##TYPE::CSCRIPTABLE_SUPER_t::sm_ScriptInterfaceDef,CSCRIPT_PROP_HELP(_HELP));
 
#define CSCRIPT_CLASS_DEF2(TYPE, _BASETYPE)
 
#define CSCRIPT_CLASS_IMP2(TYPE, _PROPS, _METHODS, _HELP)
 
#define cScriptableInterfaceProp(a, b, c)   P_##a,
 
#define CSCRIPT_PROP(_CLASS, _PROP)   (_CLASS::sm_Props[_CLASS::P_##_PROP])
 
#define CSCRIPT_PROP_NAME(_CLASS, _PROP)   (CSCRIPT_PROP(_CLASS,_PROP).m_a.m_pszKey)
 
#define CSCRIPT_PROP_NAMEA(_CLASS, _PROP)   (CSCRIPT_PROP(_CLASS,_PROP).get_NamePropA())
 
#define CSCRIPT_METHOD(_CLASS, _PROP)   (_CLASS::sm_Methods[_CLASS::M_##_PROP])
 
#define CSCRIPT_METHOD_NAME(_CLASS, _PROP)   (CSCRIPT_METHOD(_CLASS,_PROP).m_a.m_pszKey)
 
#define CSCRIPT_METHOD_NAMEA(_CLASS, _PROP)   (CSCRIPT_METHOD(_CLASS,_PROP).get_NamePropA())
 

Typedefs

typedef cScriptableInterfaceDef * GrayLib::cScriptableInterfaceDefPtr
 
typedef BYTE GrayLib::SCRIPTINTERFACEID_t
 enumerate all the defined interface definitions. More...
 
typedef UINT GrayLib::XOBJ_DUMP_MASK_t
 enum XOBJ_DUMP_MASK_ More...
 
typedef WORD GrayLib::CSCRIPTPROP_MASK_t
 
typedef cScriptableProp GrayLib::cScriptableMethod
 Methods are really similar to Props. More...
 

Enumerations

enum  GrayLib::XOBJ_DUMP_MASK_ {
  GrayLib::XOBJ_DUMP_NAME = 0x01 , GrayLib::XOBJ_DUMP_VALUE = 0x02 , GrayLib::XOBJ_DUMP_HELP = 0x04 , GrayLib::XOBJ_DUMP_FLAGS = 0x08 ,
  GrayLib::XOBJ_DUMP_INTERFACE = 0x10 , GrayLib::XOBJ_DUMP_UNUSED = 0x20
}
 
enum  GrayLib::CSCRIPTPROP_MASK_ {
  GrayLib::CSCRIPTPROP_DEFAULT = 0 , GrayLib::CSCRIPTPROP_RETNUL = 0x0000 , GrayLib::CSCRIPTPROP_RETVAL = 0x0020 , GrayLib::CSCRIPTPROP_RETREF = 0x0040 ,
  GrayLib::CSCRIPTPROP_EXTPROP = 0x0080 , GrayLib::CSCRIPTPROPP_READO = 0x0100 , GrayLib::CSCRIPTPROP_NARGS = 0x0100 , GrayLib::CSCRIPTPROPP_WRITEO = 0x0200 ,
  GrayLib::CSCRIPTPROP_ARG1S = 0x0401 , GrayLib::CSCRIPTPROPM_DISPAT = 0x0800 , GrayLib::CSCRIPTPROPP_NOPRIV = 0x0800 , GrayLib::CSCRIPTPROP_UNUSED = 0x1000 ,
  GrayLib::CSCRIPTPROP_DUPE = 0x2000 , GrayLib::CSCRIPTPROPP_TEMP = 0x4000 , GrayLib::CSCRIPTPROPP_KEY = 0x0010 , GrayLib::CSCRIPTPROPI_STATIC = 0x4000 ,
  GrayLib::CSCRIPTPROPI_PRIVNAME = 0x8000 , GrayLib::CSCRIPTPROPM_DELETE = 0x4000 , GrayLib::CSCRIPTPROPM_FUNC = 0x8000 , GrayLib::CSCRIPTPROP_ARG1 = 0x0001 ,
  GrayLib::CSCRIPTPROP_ARG2 = 0x0002 , GrayLib::CSCRIPTPROP_ARG3 = 0x0003 , GrayLib::CSCRIPTPROP_ARG4 = 0x0004 , GrayLib::CSCRIPTPROP_ARG5 = 0x0005 ,
  GrayLib::CSCRIPTPROP_ARGS_MASK = 0x000F , GrayLib::CSCRIPTPROP_NARG1 = CSCRIPTPROP_NARGS | CSCRIPTPROP_ARG1 , GrayLib::CSCRIPTPROP_NARG2 = CSCRIPTPROP_NARGS | CSCRIPTPROP_ARG2 , GrayLib::CSCRIPTPROP_NARG3 = CSCRIPTPROP_NARGS | CSCRIPTPROP_ARG3 ,
  GrayLib::CSCRIPTPROP_NARG4 = CSCRIPTPROP_NARGS | CSCRIPTPROP_ARG4 , GrayLib::CSCRIPTPROP_NARG5 = CSCRIPTPROP_NARGS | CSCRIPTPROP_ARG5
}
 

Functions

 GrayLib::UNITTEST2_PREDEF (cScriptableInterface)
 

Variables

class __DECL_IMPORT GrayLib::cScriptContext
 
const SCRIPTINTERFACEID_t GrayLib::SCRIPTINTERFACEID_MAX = 0xFF
 
const SCRIPTPROPID_t GrayLib::SCRIPTPROPINDEX_MAX = 0xFF
 

Detailed Description

Define a basic scriptable object. (though object need not be actually scripted)

Macro Definition Documentation

◆ CSCRIPT_CLASS_DEF0

#define CSCRIPT_CLASS_DEF0 (   TYPE)    CSCRIPT_CLASS_DEF0_N virtual cScriptableInterfaceDefPtr _stdcall get_ScriptInterfaceDef() const { return(&sm_ScriptInterfaceDef); }

◆ CSCRIPT_CLASS_DEF0_N

#define CSCRIPT_CLASS_DEF0_N   static cScriptableInterfaceDef sm_ScriptInterfaceDef;

◆ CSCRIPT_CLASS_DEF1

#define CSCRIPT_CLASS_DEF1 (   TYPE,
  _BASETYPE 
)
Value:
typedef _BASETYPE CSCRIPTABLE_SUPER_t; \
#define TYPE
Definition: StrT.cpp:38
#define CSCRIPT_CLASS_DEF0(TYPE)
Definition: cScriptableInterface.h:271

◆ CSCRIPT_CLASS_DEF2

#define CSCRIPT_CLASS_DEF2 (   TYPE,
  _BASETYPE 
)
Value:
static cScriptableInterfaceTemplate<c##TYPE> sm_ScriptInterfaceDef; \
typedef _BASETYPE CSCRIPTABLE_SUPER_t; \
virtual cScriptableInterfaceDefPtr _stdcall get_ScriptInterfaceDef() const \
{ return(&sm_ScriptInterfaceDef); }
cScriptableInterfaceDef * cScriptableInterfaceDefPtr
Definition: cScriptableInterface.h:33

◆ CSCRIPT_CLASS_IMP0

#define CSCRIPT_CLASS_IMP0 (   TYPE,
  _PROPS,
  _METHODS,
  _HELP 
)    cScriptableInterfaceDef c##TYPE::sm_ScriptInterfaceDef(typeid(c##TYPE),#TYPE,_PROPS,_METHODS,nullptr,CSCRIPT_PROP_HELP(_HELP));

◆ CSCRIPT_CLASS_IMP1

#define CSCRIPT_CLASS_IMP1 (   TYPE,
  _PROPS,
  _METHODS,
  _HELP 
)     cScriptableInterfaceDef c##TYPE::sm_ScriptInterfaceDef(typeid(c##TYPE),#TYPE,_PROPS,_METHODS,&c##TYPE::CSCRIPTABLE_SUPER_t::sm_ScriptInterfaceDef,CSCRIPT_PROP_HELP(_HELP));

◆ CSCRIPT_CLASS_IMP2

#define CSCRIPT_CLASS_IMP2 (   TYPE,
  _PROPS,
  _METHODS,
  _HELP 
)
Value:
template class cScriptableInterfaceTemplate<c##TYPE>; \
cScriptableInterfaceTemplate<c##TYPE> c##TYPE::sm_ScriptInterfaceDef(typeid(c##TYPE),#TYPE,_PROPS,_METHODS,&c##TYPE::CSCRIPTABLE_SUPER_t::sm_ScriptInterfaceDef,CSCRIPT_PROP_HELP(_HELP));
#define CSCRIPT_PROP_HELP(c)
used to compile out the descriptive help text. _HELP
Definition: cScriptableInterface.h:256

◆ CSCRIPT_METHOD

#define CSCRIPT_METHOD (   _CLASS,
  _PROP 
)    (_CLASS::sm_Methods[_CLASS::M_##_PROP])

◆ CSCRIPT_METHOD_IMP

#define CSCRIPT_METHOD_IMP (   a,
  b,
 
)    { { #a, { VARTYPE_NoType, 0, 0 } }, b, PLEVEL_GM, PLEVEL_QTY, CSCRIPT_PROP_HELP(c), true, &sm_ScriptInterfaceDef }

◆ CSCRIPT_METHOD_IMP2

#define CSCRIPT_METHOD_IMP2 (   a,
  b,
  c,
 
)    { { #a, { VARTYPE_NoType, 0, 0 } }, b, c, PLEVEL_QTY, CSCRIPT_PROP_HELP(d), true, &sm_ScriptInterfaceDef }

◆ CSCRIPT_METHOD_NAME

#define CSCRIPT_METHOD_NAME (   _CLASS,
  _PROP 
)    (CSCRIPT_METHOD(_CLASS,_PROP).m_a.m_pszKey)

◆ CSCRIPT_METHOD_NAMEA

#define CSCRIPT_METHOD_NAMEA (   _CLASS,
  _PROP 
)    (CSCRIPT_METHOD(_CLASS,_PROP).get_NamePropA())

◆ CSCRIPT_PROP

#define CSCRIPT_PROP (   _CLASS,
  _PROP 
)    (_CLASS::sm_Props[_CLASS::P_##_PROP])

◆ CSCRIPT_PROP_END

#define CSCRIPT_PROP_END   { { nullptr, { VARTYPE_NoType, 0, 0 } }, 0 }

◆ CSCRIPT_PROP_HELP

#define CSCRIPT_PROP_HELP (   c)    c

used to compile out the descriptive help text. _HELP

◆ CSCRIPT_PROP_IMP

#define CSCRIPT_PROP_IMP (   a,
  b,
 
)    { { #a, { VARTYPE_NoType, 0, 0 } }, b, PLEVEL_GM, PLEVEL_GM, CSCRIPT_PROP_HELP(c), false, &sm_ScriptInterfaceDef }

◆ CSCRIPT_PROP_NAME

#define CSCRIPT_PROP_NAME (   _CLASS,
  _PROP 
)    (CSCRIPT_PROP(_CLASS,_PROP).m_a.m_pszKey)

◆ CSCRIPT_PROP_NAMEA

#define CSCRIPT_PROP_NAMEA (   _CLASS,
  _PROP 
)    (CSCRIPT_PROP(_CLASS,_PROP).get_NamePropA())

◆ cScriptableInterfaceProp

#define cScriptableInterfaceProp (   a,
  b,
 
)    P_##a,