1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #ifndef __SCRIPT_H
- #define __SCRIPT_H
- #include <bfc/ptrlist.h>
- #include <api/script/vcputypes.h>
- class String;
- #define GURU_POPEMPTYSTACK 0
- #define GURU_INVALIDHEADER 1
- #define GURU_INVALIDFUNCINDLF 2
- #define GURU_INVALIDFUNCBT 3
- #define GURU_INVALIDVARBT 4
- #define GURU_INVALIDEVENTDLF 5
- #define GURU_INVALIDEVENTADDR 6
- #define GURU_INVALIDEVENTVAR 7
- #define GURU_INVALIDSCRIPTID 8
- #define GURU_DLFSETUPFAILED 9
- #define GURU_SETNONINTERNAL 10
- #define GURU_INCSNONNUM 11
- #define GURU_DECSNONNUM 12
- #define GURU_INCPNONNUM 13
- #define GURU_DECPNONNUM 14
- #define GURU_OBJECTADD 15
- #define GURU_SUBNONNUM 16
- #define GURU_MULNONNUM 17
- #define GURU_DIVNONNUM 18
- #define GURU_DIVBYZERO 19
- #define GURU_MODNONNUM 20
- #define GURU_NEGNONNUM 21
- #define GURU_BNOTNONNUM 22
- #define GURU_SHLNONNUM 23
- #define GURU_SHRNONNUM 24
- #define GURU_XORNONNUM 25
- #define GURU_ANDNONNUM 26
- #define GURU_NEWFAILED 27
- #define GURU_NULLCALLED 28
- #define GURU_OLDFORMAT 29
- #define GURU_INVALIDPEEKSTACK 30
- #define GURU_INVALIDOLDID 31
- #define GURU_INCOMPATIBLEOBJECT 32
- #define GURU_EXCEPTION 33
- #define GURU_FUTUREFORMAT 34
- // This is our virtual machine basic type. Reducing of expression will use this
- // type. We will not malloc or new it, but we'll pass it on the stack for speed
- // and stability. 8 bytes should be ok for our stack. This way we won't have to
- // maintain lists on dynamically allocated computation values, and we won't have
- // to cleanup if some error (divide by zero ?) occurs in the middle of a
- // statement. String values are an exception since sdata will point to dynamic
- // data, but since every step of the virtual machine reducing strings will free
- // that data, cleanup will be automatic
- typedef struct {
- void *scriptBlock;
- int vcpuId; // id of script in virtual CPU. will be used later for unloading
- } scriptEntry;
- class Group;
- class SystemObject;
- class Script
- {
- public:
- static int addScript(const wchar_t *path, const wchar_t *filename, const wchar_t *id);
- static void unloadScript(int id);
- static void unloadAllScripts();
- static void guruMeditation(SystemObject *script, int code, const wchar_t *pub=NULL, int intinfo=0);
- static void setScriptParam(int id, const wchar_t *p);
- static int varIdToGlobal(int id, int script);
- static int getNumEventsLinked();
- static int getLinkedEventParams(int num, int *dlfid, int *scriptid, int *varid);
- static int getCacheCount();
- static int getUserAncestor(int varid, int scriptid);
- static int isValidScriptId(int id);
- static void setParentGroup(int id, Group *g);
- static void setSkinPartId(int id, int skinpartid);
- static int getNumScripts() { return scriptslist.getNumItems(); }
- static PtrList <scriptEntry> scriptslist;
- private:
- static int codeToSeverity(int code, wchar_t *t, int len);
- };
- #endif
|