123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- #ifndef __CFGSCRIPTOBJ_H
- #define __CFGSCRIPTOBJ_H
- #include <api/script/objects/rootobj.h>
- #include <api/script/objcontroller.h>
- #include <api/script/scriptobj.h>
- #include <bfc/depview.h>
- #include <api/service/svcs/svc_scriptobji.h>
- #include <api/config/items/attribs.h>
- class CfgItem;
- class ConfigObject;
- class ConfigItemObject;
- class ConfigAttributeObject;
- extern ScriptObjectController *configController;
- extern ScriptObjectController *configItemController;
- extern ScriptObjectController *configAttributeController;
- enum cfgtypes {
- CFG_INT = 0,
- CFG_BOOL = 1,
- CFG_FLOAT = 2,
- CFG_STRING = 3,
- };
- // -----------------------------------------------------------------------------------------------------
- // ScriptObject Provider Service
- class ConfigScriptObjectSvc : public svc_scriptObjectI {
- public:
- ConfigScriptObjectSvc() {};
- virtual ~ConfigScriptObjectSvc() {};
- static const char *getServiceName() { return "Config maki object"; }
- virtual ScriptObjectController *getController(int n);
- static void addItemObject(ConfigItemObject *item);
- static void addAttrObject(ConfigAttributeObject *attr);
- static void removeItemObject(ConfigItemObject *item);
- static void removeAttrObject(ConfigAttributeObject *attr);
- };
- // -----------------------------------------------------------------------------------------------------
- // Script classes GUIDS
- // {593DBA22-D077-4976-B952-F4713655400B}
- static const GUID CONFIG_SCRIPTOBJECT_GUID =
- { 0x593dba22, 0xd077, 0x4976, { 0xb9, 0x52, 0xf4, 0x71, 0x36, 0x55, 0x40, 0xb } };
- // {D4030282-3AAB-4d87-878D-12326FADFCD5}
- static const GUID CONFIGITEM_SCRIPTOBJECT_GUID =
- { 0xd4030282, 0x3aab, 0x4d87, { 0x87, 0x8d, 0x12, 0x32, 0x6f, 0xad, 0xfc, 0xd5 } };
- // {24DEC283-B76E-4a36-8CCC-9E24C46B6C73}
- static const GUID CONFIGATTRIBUTE_SCRIPTOBJECT_GUID =
- { 0x24dec283, 0xb76e, 0x4a36, { 0x8c, 0xcc, 0x9e, 0x24, 0xc4, 0x6b, 0x6c, 0x73 } };
- // -----------------------------------------------------------------------------------------------------
- // ScriptObject Interfaces
- // Config
- class ConfigObject : public RootObjectInstance {
-
- public:
- ConfigObject();
- virtual ~ConfigObject();
-
- static scriptVar config_getItem(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar configitem_name);
- static scriptVar config_getItemByGuid(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar configitem_name);
- static scriptVar config_newItem(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar configitem_name, scriptVar guid);
- private:
- static ConfigItemObject *getItem(const wchar_t *nameorguid, ConfigObject *co);
- PtrList<ConfigItemObject> mylist;
- static PtrList<CfgItemI> ouraddeditems;
- static int numobjects;
- };
- // ConfigItem
- class ConfigItemObject : public RootObjectInstance {
-
- public:
- ConfigItemObject(CfgItem *item);
- virtual ~ConfigItemObject();
- ConfigAttributeObject *getAttribute(const wchar_t *name);
- const wchar_t *getGuid() { return guid; }
- ConfigAttributeObject *newAttribute(const wchar_t *name, const wchar_t *defval);
- CfgItem *getCfgItem() { return item; }
- static scriptVar configItem_getAttribute(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar attr_name);
- static scriptVar configItem_getGuid(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- static scriptVar configItem_newAttribute(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar attr_name, scriptVar defval);
- private:
- CfgItem *item;
- StringW guid;
- PtrList<ConfigAttributeObject> mylist;
- };
- // ConfigAttribute
- class ConfigAttributeObject : public RootObjectInstance, public DependentViewerTPtr<CfgItem> {
-
- public:
- ConfigAttributeObject(CfgItem *item, const wchar_t *attr, ConfigItemObject *parent);
- virtual ~ConfigAttributeObject();
- void setData(const wchar_t *data);
- const wchar_t *getData();
- ConfigItemObject *getParentItem() { return parent; }
- const wchar_t *getAttributeName() { return attr; }
- void setAutoDelete() { autodelete = 1; }
- virtual int viewer_onEvent(CfgItem *item, int event, intptr_t param, void *ptr, size_t ptrlen);
-
- static scriptVar configAttr_getData(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- static scriptVar configAttr_setData(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar val);
- static scriptVar configAttr_onDataChanged(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- static scriptVar configAttr_getParentItem(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- static scriptVar configAttr_getAttributeName(SCRIPT_FUNCTION_PARAMS, ScriptObject *o);
- private:
- CfgItem *item;
- StringW attr;
- ConfigItemObject *parent;
- int autodelete;
- };
- // -----------------------------------------------------------------------------------------------------
- // ScriptObjectControllers for our script classes
- // Config
- class ConfigScriptObjectController : public ScriptObjectControllerI {
- public:
- virtual const wchar_t *getClassName() { return L"Config"; }
- virtual const wchar_t *getAncestorClassName() { return L"Object"; }
- virtual ScriptObjectController *getAncestorController() { return NULL; }
- virtual int getNumFunctions();
- virtual const function_descriptor_struct *getExportedFunctions() { return exportedFunction; }
- virtual GUID getClassGuid() { return CONFIG_SCRIPTOBJECT_GUID; }
- virtual int getInstantiable() { return 0; }
- virtual int getReferenceable() { return 0; }
- virtual ScriptObject *instantiate();
- virtual void destroy(ScriptObject *o);
- virtual void *encapsulate(ScriptObject *o);
- virtual void deencapsulate(void *o);
- private:
- static function_descriptor_struct exportedFunction[];
- };
- // ConfigItem
- class ConfigItemScriptObjectController : public ScriptObjectControllerI {
- public:
- virtual const wchar_t *getClassName() { return L"ConfigItem"; }
- virtual const wchar_t *getAncestorClassName() { return L"Object"; }
- virtual ScriptObjectController *getAncestorController() { return NULL; }
- virtual int getNumFunctions();
- virtual const function_descriptor_struct *getExportedFunctions() { return exportedFunction; }
- virtual GUID getClassGuid() { return CONFIGITEM_SCRIPTOBJECT_GUID; }
- virtual int getInstantiable() { return 0; }
- virtual int getReferenceable() { return 1; }
- virtual ScriptObject *instantiate() { return NULL; };
- virtual void destroy(ScriptObject *o) { };
- virtual void *encapsulate(ScriptObject *o) { return NULL; };
- virtual void deencapsulate(void *o) { };
- private:
- static function_descriptor_struct exportedFunction[];
- };
- // ConfigAttribute
- class ConfigAttributeScriptObjectController : public ScriptObjectControllerI {
- public:
- virtual const wchar_t *getClassName() { return L"ConfigAttribute"; }
- virtual const wchar_t *getAncestorClassName() { return L"Object"; }
- virtual ScriptObjectController *getAncestorController() { return NULL; }
- virtual int getNumFunctions();
- virtual const function_descriptor_struct *getExportedFunctions() { return exportedFunction; }
- virtual GUID getClassGuid() { return CONFIGATTRIBUTE_SCRIPTOBJECT_GUID; }
- virtual int getInstantiable() { return 0; }
- virtual int getReferenceable() { return 1; }
- virtual ScriptObject *instantiate() { return NULL; };
- virtual void destroy(ScriptObject *o) { };
- virtual void *encapsulate(ScriptObject *o) { return NULL; };
- virtual void deencapsulate(void *o) { };
- private:
- static function_descriptor_struct exportedFunction[];
- };
- #endif
|