aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/script/makiapi.cpp
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Wasabi/api/script/makiapi.cpp
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/Wasabi/api/script/makiapi.cpp')
-rw-r--r--Src/Wasabi/api/script/makiapi.cpp248
1 files changed, 248 insertions, 0 deletions
diff --git a/Src/Wasabi/api/script/makiapi.cpp b/Src/Wasabi/api/script/makiapi.cpp
new file mode 100644
index 00000000..de3df611
--- /dev/null
+++ b/Src/Wasabi/api/script/makiapi.cpp
@@ -0,0 +1,248 @@
+#include "precomp.h"
+#include "makiapi.h"
+#include "../../studio/api.h"
+#include "../../bfc/api/api_maki.h"
+#include "../../studio/script/vcpu.h"
+#include "../../studio/script/objecttable.h"
+#include "../../studio/script/scriptmgr.h"
+#include "../../studio/script/script.h"
+#include "../../common/script/scriptobj.h"
+
+api_maki *makiApi = NULL;
+
+ScriptApi::ScriptApi() {
+ ObjectTable::loadExternalClasses();
+ VCPU::scriptManager = new ScriptObjectManager();
+}
+
+ScriptApi::~ScriptApi() {
+ delete VCPU::scriptManager;
+ VCPU::scriptManager = NULL;
+ VCPU::shutdown();
+ ObjectTable::unloadExternalClasses();
+}
+
+void ScriptApi::maki_pushObject(void *o) {
+ VCPU::pushObject(o);
+}
+
+void ScriptApi::maki_pushInt(int i) {
+ VCPU::pushInt(i);
+}
+
+void ScriptApi::maki_pushBoolean(int b) {
+ VCPU::pushBoolean(b);
+}
+
+void ScriptApi::maki_pushFloat(float f) {
+ VCPU::pushFloat(f);
+}
+
+void ScriptApi::maki_pushDouble(double d) {
+ VCPU::pushDouble(d);
+}
+
+void ScriptApi::maki_pushString(const char *s) {
+ VCPU::pushString(s);
+}
+
+void ScriptApi::maki_pushAny(scriptVar v) {
+ VCPU::push(v);
+}
+
+void ScriptApi::maki_pushVoid() {
+ VCPU::pushVoid();
+}
+
+void *ScriptApi::maki_popObject() {
+ return VCPU::popObject();
+}
+
+int ScriptApi::maki_popInt() {
+ return VCPU::popInt();
+}
+
+bool ScriptApi::maki_popBoolean() {
+ return VCPU::popBoolean();
+}
+
+float ScriptApi::maki_popFloat() {
+ return VCPU::popFloat();
+}
+
+double ScriptApi::maki_popDouble() {
+ return VCPU::popDouble();
+}
+
+const char *ScriptApi::maki_popString() {
+ return VCPU::popString();
+}
+
+scriptVar ScriptApi::maki_popAny() {
+ return VCPU::pop().v;
+}
+
+void ScriptApi::maki_popDiscard() {
+ VCPU::popDiscard();
+}
+
+const char *ScriptApi::maki_getFunction(int dlfid, int *nparams, ScriptObjectController **p) {
+ return ObjectTable::getFunction(dlfid, nparams, p);
+}
+
+int ScriptApi::maki_addDlfRef(ScriptObjectController *o, const char *function_name, void *host) {
+ return ObjectTable::dlfAddRef(o, function_name, host);
+}
+
+void ScriptApi::maki_remDlfRef(void *host) {
+ ObjectTable::dlfRemRef(host);
+}
+
+void ScriptApi::maki_addDlfClassRef(ScriptObjectController *o, void *host) {
+ ObjectTable::dlfAddClassRef(o, host);
+}
+
+scriptVar ScriptApi::maki_callFunction(ScriptObject *o, int dlfid, scriptVar **params) {
+ return ObjectTable::callFunction(o, dlfid, params);
+}
+
+scriptVar ScriptApi::maki_triggerEvent(ScriptObject *o, int dlfid, int np, int scriptid) {
+ scriptVar v = MAKE_SCRIPT_OBJECT(o);
+ return VCPU::executeEvent(v, dlfid, np, scriptid);
+}
+
+ScriptObject *ScriptApi::maki_instantiate(GUID classguid) {
+ int classid = ObjectTable::getClassFromGuid(classguid);
+ if (classid == -1) return NULL;
+ return ObjectTable::instantiate(classid);
+}
+
+void ScriptApi::maki_destroy(ScriptObject *o) {
+ ObjectTable::destroy(o);
+}
+
+void *ScriptApi::maki_encapsulate(GUID classguid, ScriptObject *o) {
+ int classid = ObjectTable::getClassFromGuid(classguid);
+ if (classid == -1) return NULL;
+ return ObjectTable::encapsulate(classid, o);
+}
+
+void ScriptApi::maki_deencapsulate(GUID classguid, void *o) {
+ int classid = ObjectTable::getClassFromGuid(classguid);
+ if (classid == -1) return;
+ ObjectTable::deencapsulate(classid, o);
+}
+
+ScriptObjectController *ScriptApi::maki_getController(GUID scriptclass) {
+ return ObjectTable::getController(scriptclass);
+}
+int ScriptApi::maki_createOrphan(int type) {
+ return VCPU::createOrphan(type);
+}
+
+void ScriptApi::maki_killOrphan(int id) {
+ VCPU::killOrphan(id);
+}
+
+int ScriptApi::maki_getScriptInt(scriptVar v) {
+ return SOM::makeInt(&v);
+}
+
+bool ScriptApi::maki_getScriptBoolean(scriptVar v) {
+ return SOM::makeBoolean(&v);
+}
+
+float ScriptApi::maki_getScriptFloat(scriptVar v) {
+ return SOM::makeFloat(&v);
+}
+
+double ScriptApi::maki_getScriptDouble(scriptVar v) {
+ return SOM::makeDouble(&v);
+}
+
+const char *ScriptApi::maki_getScriptString(scriptVar v) {
+ ASSERT(v.type == SCRIPT_STRING);
+ return v.data.sdata;
+}
+
+ScriptObject *ScriptApi::maki_getScriptObject(scriptVar v) {
+ ASSERT(!SOM::isNumeric(&v) && v.type != SCRIPT_STRING);
+ return v.data.odata;
+}
+
+scriptVar ScriptApi::maki_updateDlf(maki_cmd *cmd, int *dlfid, int *linkcount) {
+ switch (cmd->cmd) {
+ case MAKI_CMD_ADDREF:
+ (*linkcount)++;
+ break;
+ case MAKI_CMD_REMREF:
+ (*linkcount)--;
+ ASSERT(*linkcount >= 0);
+ if (*linkcount == 0)
+ *dlfid = -1;
+ break;
+ case MAKI_CMD_SETDLF:
+ ASSERT(*dlfid == -1);
+ *dlfid = cmd->id;
+ break;
+ case MAKI_CMD_GETDLF:
+ cmd->id = *dlfid;
+ break;
+ }
+ RETURN_SCRIPT_VOID
+}
+
+void ScriptApi::maki_setObjectAtom(const char *atomname, ScriptObject *object) {
+ VCPU::setAtom(atomname, object);
+}
+
+ScriptObject *ScriptApi::maki_getObjectAtom(const char *atomname) {
+ return VCPU::getAtom(atomname);
+}
+
+#ifdef WASABI_COMPILE_WND
+ScriptObject *ScriptApi::maki_findObject(const char *name) {
+ return ScriptObjectManager::findObject(name);
+}
+#endif
+
+void ScriptApi::vcpu_addScriptObject(ScriptObject *o) {
+ SystemObject::addScriptObject(o);
+}
+
+void ScriptApi::vcpu_removeScriptObject(ScriptObject *o) {
+ SystemObject::removeScriptObject(o);
+}
+
+int ScriptApi::vcpu_getCacheCount() {
+ return Script::getCacheCount();
+}
+
+int ScriptApi::vcpu_isValidScriptId(int id) {
+ return Script::isValidScriptId(id);
+}
+
+int ScriptApi::vcpu_mapVarId(int varid, int scriptid) {
+ return Script::varIdToGlobal(varid, scriptid);
+}
+
+int ScriptApi::vcpu_getUserAncestorId(int varid, int scriptid) {
+ return Script::getUserAncestor(varid, scriptid);
+}
+
+int ScriptApi::vcpu_getNumEvents() {
+ return Script::getNumEventsLinked();
+}
+
+int ScriptApi::vcpu_getEvent(int event, int *dlf, int *script, int *var) {
+ return Script::getLinkedEventParams(event, dlf, script, var);
+}
+
+int ScriptApi::vcpu_getComplete() {
+ return VCPU::getComplete();
+}
+
+const char * ScriptApi::vcpu_getClassName(int vcpuid, int localclassid) {
+ return VCPU::getClassName(vcpuid, localclassid);
+}
+