aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/script/scriptmgr.h
blob: 45b4775efe8f4736196ab45478200df7e4c89390 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#ifndef _SCRIPT_H
#define _SCRIPT_H

#include <api/script/objects/systemobj.h>
#ifdef WASABI_COMPILE_CONFIG
#include <api/script/objects/wacobj.h>
#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<WACObject> comps;
#endif

#endif