#ifndef _SCRIPT_H #define _SCRIPT_H #include #ifdef WASABI_COMPILE_CONFIG #include #endif #define SOM ScriptObjectManager // This class should ONLY contain generic functions which don't have to be duplicated for each script layer ! // This is why this is (mostly) a static class. Please DO NOT add anything which relates to function pointers, // variable tables, etc. class ScriptObjectManager { public: ScriptObjectManager(); ~ScriptObjectManager(); static scriptVar makeVar(int type); static scriptVar makeVar(int type, ScriptObject *o); static void assign(scriptVar *v, const wchar_t *str); static void assign(scriptVar *v, int i); static void assign(scriptVar *v, float f); static void assign(scriptVar *v, double d); static void assign(scriptVar *v, ScriptObject *o); static void assign(scriptVar *v1, scriptVar *v2); static void assignPersistent(scriptVar *v1, scriptVar *v2); static void strflatassign(scriptVar *v, const wchar_t *str); static void persistentstrassign(scriptVar *v, const wchar_t *str); static int compEq(scriptVar *v1, scriptVar *v2); static int compNeq(scriptVar *v1, scriptVar *v2); static int compA(scriptVar *v1, scriptVar *v2); static int compAe(scriptVar *v1, scriptVar *v2); static int compB(scriptVar *v1, scriptVar *v2); static int compBe(scriptVar *v1, scriptVar *v2); static void mid(wchar_t *dest, const wchar_t *str, int s, int l); static int makeInt(scriptVar *v); static float makeFloat(scriptVar *v); static double makeDouble(scriptVar *v); static bool makeBoolean(scriptVar *v); static int isNumeric(scriptVar *s); static int isString(scriptVar *s); static int isVoid(scriptVar *s); static int isObject(scriptVar *s); static int isNumericType(int t); #ifdef WASABI_COMPILE_COMPONENTS static WACObject *getWACObject(const wchar_t *guid); static WACObject *getWACObject(GUID cg); #endif static SystemObject *getSystemObject(int n); static SystemObject *getSystemObjectByScriptId(int id); static void registerSystemObject(SystemObject *o); static void unregisterSystemObject(SystemObject *o); static int getNumSystemObjects(); static SystemObject *enumSystemObject(int n); static int typeCheck(VCPUscriptVar *v, int fail = 1); static WindowHolder *getSuitableWindowHolderFromScript(GUID g); static int checkAbortShowHideWindow(GUID g, int visible); #ifdef WASABI_COMPILE_WND static ScriptObject *findObject(const wchar_t *name); #endif private: static SystemObject * system; static PtrList < SystemObject > syslist; static int inited; }; #ifdef WASABI_COMPILE_COMPONENTS extern PtrList comps; #endif #endif