aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/script/scriptobji.h
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/scriptobji.h
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/Wasabi/api/script/scriptobji.h')
-rw-r--r--Src/Wasabi/api/script/scriptobji.h134
1 files changed, 134 insertions, 0 deletions
diff --git a/Src/Wasabi/api/script/scriptobji.h b/Src/Wasabi/api/script/scriptobji.h
new file mode 100644
index 00000000..2a2aaf77
--- /dev/null
+++ b/Src/Wasabi/api/script/scriptobji.h
@@ -0,0 +1,134 @@
+#ifndef __SCRIPTOBJI_H
+#define __SCRIPTOBJI_H
+
+#include <api/script/vcputypes.h>
+#include <bfc/dispatch.h>
+
+#include <bfc/tlist.h>
+#include <bfc/ptrlist.h>
+#include <bfc/pair.h>
+
+//<?<autoheader/>
+#include "scriptobj.h"
+#include "scriptobjx.h"
+
+class ScriptHook;
+class ScriptObject;
+class ScriptObjectController;
+
+//?>
+
+
+class ScriptObjectController;
+class ScriptHook;
+
+/*[interface.header.h]
+enum {
+ INTERFACE_GENERICVOIDPTR=0,
+ INTERFACE_SCRIPTOBJECT,
+};
+*/
+
+// ----------------------------------------------------------------------------------------------------------
+
+/*class MemberVarCompare {
+ public:
+ static int compareItem(void *p1, void *p2);
+ static int compareAttrib(const wchar_t *attrib, void *p);
+};*/
+
+// ----------------------------------------------------------------------------------------------------------
+
+
+
+
+// ----------------------------------------------------------------------------------------------------------
+
+class ScriptObjectI : public ScriptObjectX
+{
+private:
+ /* These three classes are here to ensure they don't get used anywhere else */
+ struct assvar
+ {
+ int scriptid;
+ int varid;
+ TList<int> dlfs;
+ };
+
+ class InterfaceEntry
+ {
+ public:
+ InterfaceEntry(GUID _guid, void *_ptr, int _type = INTERFACE_GENERICVOIDPTR) : guid(_guid), ptr(_ptr), type(_type) {}
+ virtual ~InterfaceEntry() {}
+
+ virtual GUID getGuid() { return guid; }
+ virtual void *getInterface() { return ptr; }
+ virtual int getType() { return type; }
+
+ private:
+
+ GUID guid;
+ void *ptr;
+ int type;
+};
+
+ class MemberVar
+ {
+ public:
+ MemberVar(const wchar_t *name, int scriptid, int rettype);
+ virtual ~MemberVar();
+
+ const wchar_t *getName() { return name; }
+ int getScriptId() { return scriptid; }
+ int getReturnType() { return rettype; }
+ int getGlobalId() { return globalid; }
+
+ private:
+ StringW name;
+ int scriptid;
+ int rettype;
+ int globalid;
+};
+
+
+public:
+ ScriptObjectI(const wchar_t *class_name = NULL, ScriptObjectController *object_controller = NULL);
+ virtual ~ScriptObjectI();
+
+ DISPATCH(50) virtual void *vcpu_getInterface(GUID g, int *interfacetype = NULL);
+ DISPATCH(60) virtual void *vcpu_getInterfaceObject(GUID g, ScriptObject **o);
+ DISPATCH(100) int vcpu_getAssignedVariable(int start, int scriptid, int functionId, int *next, int *globalevententry, int *inheritedevent);
+ DISPATCH(200) void vcpu_removeAssignedVariable(int var, int id);
+ DISPATCH(300) void vcpu_addAssignedVariable(int var, int scriptid);
+ DISPATCH(400) virtual const wchar_t *vcpu_getClassName();
+ DISPATCH(500) virtual ScriptObjectController *vcpu_getController();
+// DISPATCH(600) virtual void vcpu_addClassHook(ScriptHook *h);
+// DISPATCH(700) virtual void vcpu_addObjectHook(ScriptHook *h);
+ DISPATCH(800) int vcpu_getScriptId();
+ DISPATCH(900) void vcpu_setScriptId(int i);
+ DISPATCH(1000) int vcpu_getMember(const wchar_t *id, int scriptid, int rettype);
+ DISPATCH(1100) void vcpu_delMembers(int scriptid);
+ DISPATCH(1200) virtual void vcpu_setInterface(GUID g, void *v, int interfacetype = INTERFACE_SCRIPTOBJECT);
+ DISPATCH(1300) virtual void vcpu_setClassName(const wchar_t *name);
+ DISPATCH(1400) virtual void vcpu_setController(ScriptObjectController *c);
+ DISPATCH(1500) virtual void vcpu_init();
+
+protected:
+ NODISPATCH int getEventForVar(assvar *var, int funcid, int *inheritedevent);
+ NODISPATCH void computeEventList(assvar *a);
+ PtrList < assvar > assignedVariables;
+ PtrList < MemberVar > memberVariables;
+ int cache_count;
+ int id;
+ StringW membercacheid;
+ int membercachesid;
+ int membercachegid;
+ PtrList < InterfaceEntry > interfaceslist;
+ const wchar_t *classname;
+ ScriptObjectController * controller;
+ int ingetinterface;
+
+
+};
+
+#endif