123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- #include <precomp.h>
- #include "WinampConfigScriptObject.h"
- // {B2AD3F2B-31ED-4e31-BC6D-E9951CD555BB}
- static const GUID winampConfigScriptGuid =
- { 0xb2ad3f2b, 0x31ed, 0x4e31, { 0xbc, 0x6d, 0xe9, 0x95, 0x1c, 0xd5, 0x55, 0xbb } };
- // {FC17844E-C72B-4518-A068-A8F930A5BA80}
- static const GUID winampConfigGroupScriptGuid =
- { 0xfc17844e, 0xc72b, 0x4518, { 0xa0, 0x68, 0xa8, 0xf9, 0x30, 0xa5, 0xba, 0x80 } };
- static WinampConfigScriptController _winampConfigController;
- ScriptObjectController *winampConfigController = &_winampConfigController;
- static WinampConfigGroupScriptController _winampConfigGroupController;
- ScriptObjectController *winampConfigGroupController = &_winampConfigGroupController;
- BEGIN_SERVICES(WinampConfig_svcs);
- DECLARE_SERVICETSINGLE(svc_scriptObject, WinampConfigScriptObjectSvc);
- END_SERVICES(WinampConfig_svcs, _WinampConfig_svcs);
- #ifdef _X86_
- extern "C"
- {
- int _link_WinampConfig_svcs;
- }
- #else
- extern "C"
- {
- int __link_WinampConfig_svcs;
- }
- #endif
- // -----------------------------------------------------------------------------------------------------
- // Service
- ScriptObjectController *WinampConfigScriptObjectSvc::getController(int n)
- {
- switch (n)
- {
- case 0:
- return winampConfigController;
- case 1:
- return winampConfigGroupController;
- }
- return NULL;
- }
- // -- Functions table -------------------------------------
- function_descriptor_struct WinampConfigScriptController::exportedFunction[] =
- {
- {L"getGroup", 1, (void*)WinampConfig::script_vcpu_getGroup },
- };
- // --------------------------------------------------------
- const wchar_t *WinampConfigScriptController::getClassName()
- {
- return L"WinampConfig";
- }
- const wchar_t *WinampConfigScriptController::getAncestorClassName()
- {
- return L"Object";
- }
- ScriptObject *WinampConfigScriptController::instantiate()
- {
- WinampConfig *wc = new WinampConfig;
- ASSERT(wc != NULL);
- return wc->getScriptObject();
- }
- void WinampConfigScriptController::destroy(ScriptObject *o)
- {
- WinampConfig *wc = static_cast<WinampConfig *>(o->vcpu_getInterface(winampConfigScriptGuid));
- if (wc)
- delete wc;
- }
- void *WinampConfigScriptController::encapsulate(ScriptObject *o)
- {
- return NULL; // no encapsulation yet
- }
- void WinampConfigScriptController::deencapsulate(void *o)
- {
- }
- int WinampConfigScriptController::getNumFunctions()
- {
- return sizeof(exportedFunction) / sizeof(function_descriptor_struct);
- }
- const function_descriptor_struct *WinampConfigScriptController::getExportedFunctions()
- {
- return exportedFunction;
- }
- GUID WinampConfigScriptController::getClassGuid()
- {
- return winampConfigScriptGuid;
- }
- /* ------------- */
- WinampConfig::WinampConfig()
- {
- getScriptObject()->vcpu_setInterface(winampConfigScriptGuid, (void *)static_cast<WinampConfig *>(this));
- getScriptObject()->vcpu_setClassName(L"WinampConfig");
- getScriptObject()->vcpu_setController(winampConfigController);
- waServiceFactory *sf = WASABI_API_SVC->service_getServiceByGuid(Agave::AgaveConfigGUID);
- if (sf)
- config = (Agave::api_config *)sf->getInterface();
- }
- WinampConfig::~WinampConfig()
- {
- waServiceFactory *sf = WASABI_API_SVC->service_getServiceByGuid(Agave::AgaveConfigGUID);
- if (sf)
- sf->releaseInterface(config);
- }
- scriptVar WinampConfig::script_vcpu_getGroup(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar groupguid)
- {
- SCRIPT_FUNCTION_INIT
- const wchar_t *g = GET_SCRIPT_STRING(groupguid);
- GUID _g = nsGUID::fromCharW(g);
- WinampConfig *wc = static_cast<WinampConfig *>(o->vcpu_getInterface(winampConfigScriptGuid));
- if (wc)
- {
- Agave::ifc_configgroup *group = wc->config->GetGroup(_g);
- if (group)
- {
- WinampConfigGroup *winampConfigGroup = new WinampConfigGroup(group);
- return MAKE_SCRIPT_OBJECT(winampConfigGroup->getScriptObject());
- }
- }
- RETURN_SCRIPT_NULL;
- }
- /* ------------- */
- // -- Functions table -------------------------------------
- function_descriptor_struct WinampConfigGroupScriptController::exportedFunction[] =
- {
- {L"getBool", 1, (void*)WinampConfigGroup::script_vcpu_getBool },
- {L"getString", 1, (void*)WinampConfigGroup::script_vcpu_getString },
- {L"getInt", 1, (void*)WinampConfigGroup::script_vcpu_getInt },
- {L"setBool", 2, (void*)WinampConfigGroup::script_vcpu_setBool },
- };
- // --------------------------------------------------------
- const wchar_t *WinampConfigGroupScriptController::getClassName()
- {
- return L"WinampConfigGroup";
- }
- const wchar_t *WinampConfigGroupScriptController::getAncestorClassName()
- {
- return L"Object";
- }
- ScriptObject *WinampConfigGroupScriptController::instantiate()
- {
- WinampConfigGroup *wc = new WinampConfigGroup;
- ASSERT(wc != NULL);
- return wc->getScriptObject();
- }
- void WinampConfigGroupScriptController::destroy(ScriptObject *o)
- {
- WinampConfigGroup *wc = static_cast<WinampConfigGroup *>(o->vcpu_getInterface(winampConfigGroupScriptGuid));
- if (wc)
- delete wc;
- }
- void *WinampConfigGroupScriptController::encapsulate(ScriptObject *o)
- {
- return NULL; // no encapsulation yet
- }
- void WinampConfigGroupScriptController::deencapsulate(void *o)
- {
- }
- int WinampConfigGroupScriptController::getNumFunctions()
- {
- return sizeof(exportedFunction) / sizeof(function_descriptor_struct);
- }
- const function_descriptor_struct *WinampConfigGroupScriptController::getExportedFunctions()
- {
- return exportedFunction;
- }
- GUID WinampConfigGroupScriptController::getClassGuid()
- {
- return winampConfigGroupScriptGuid;
- }
- /* ------------- */
- WinampConfigGroup::WinampConfigGroup()
- {
- getScriptObject()->vcpu_setInterface(winampConfigGroupScriptGuid, (void *)static_cast<WinampConfigGroup *>(this));
- getScriptObject()->vcpu_setClassName(L"WinampConfigGroup");
- getScriptObject()->vcpu_setController(winampConfigGroupController);
- configGroup = 0;
- }
- WinampConfigGroup::WinampConfigGroup(Agave::ifc_configgroup *_configGroup)
- {
- getScriptObject()->vcpu_setInterface(winampConfigGroupScriptGuid, (void *)static_cast<WinampConfigGroup *>(this));
- getScriptObject()->vcpu_setClassName(L"WinampConfigGroup");
- getScriptObject()->vcpu_setController(winampConfigGroupController);
- configGroup = _configGroup;
- }
- Agave::ifc_configitem *WinampConfigGroup::GetItem(ScriptObject *o, scriptVar itemname)
- {
- const wchar_t *item = GET_SCRIPT_STRING(itemname);
- WinampConfigGroup *group = static_cast<WinampConfigGroup *>(o->vcpu_getInterface(winampConfigGroupScriptGuid));
- if (group)
- {
- Agave::ifc_configitem *configitem = group->configGroup->GetItem(item);
- return configitem;
- }
- return 0;
- }
- scriptVar WinampConfigGroup::script_vcpu_getBool(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar itemname)
- {
- SCRIPT_FUNCTION_INIT
- Agave::ifc_configitem *configitem = GetItem(o, itemname);
- if (configitem)
- return MAKE_SCRIPT_BOOLEAN(configitem->GetBool());
-
- RETURN_SCRIPT_ZERO;
- }
- scriptVar WinampConfigGroup::script_vcpu_getString(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar itemname)
- {
- SCRIPT_FUNCTION_INIT
- Agave::ifc_configitem *configitem = GetItem(o, itemname);
- if (configitem)
- return MAKE_SCRIPT_STRING(configitem->GetString());
-
- RETURN_SCRIPT_ZERO;
- }
- scriptVar WinampConfigGroup::script_vcpu_getInt(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar itemname)
- {
- SCRIPT_FUNCTION_INIT
- Agave::ifc_configitem *configitem = GetItem(o, itemname);
- if (configitem)
- return MAKE_SCRIPT_INT(configitem->GetInt());
-
- RETURN_SCRIPT_ZERO;
- }
- scriptVar WinampConfigGroup::script_vcpu_setBool(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar itemname, scriptVar value)
- {
- SCRIPT_FUNCTION_INIT
- const wchar_t *item = GET_SCRIPT_STRING(itemname);
- WinampConfigGroup *group = static_cast<WinampConfigGroup *>(o->vcpu_getInterface(winampConfigGroupScriptGuid));
- if (group)
- {
- Agave::ifc_configitem *configitem = group->configGroup->GetItem(item);
- if (configitem)
- configitem->SetBool(!!GET_SCRIPT_BOOLEAN(value));
- }
- RETURN_SCRIPT_VOID;
- }
|