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
82
83
84
85
86
87
88
89
90
91
92
93
|
#pragma once
#include "vscript/languages/squirrel_re/include/squirrel.h"
struct SQTable;
struct SQRefCounted
{
void* vftable;
SQInteger uiRef;
void* weakRef; // Probably
};
struct SQCollectable : public SQRefCounted
{
SQCollectable* _next;
SQCollectable* _prev;
SQSharedState* _sharedstate;
};
struct SQDelegable : public SQCollectable
{
SQTable* _delegate;
};
enum SQObjectType : int
{
_RT_NULL = 0x1,
_RT_INTEGER = 0x2,
_RT_FLOAT = 0x4,
_RT_BOOL = 0x8,
_RT_STRING = 0x10,
_RT_TABLE = 0x20,
_RT_ARRAY = 0x40,
_RT_USERDATA = 0x80,
_RT_CLOSURE = 0x100,
_RT_NATIVECLOSURE = 0x200,
_RT_GENERATOR = 0x400,
OT_USERPOINTER = 0x800,
_RT_USERPOINTER = 0x800,
_RT_THREAD = 0x1000,
_RT_FUNCPROTO = 0x2000,
_RT_CLASS = 0x4000,
_RT_INSTANCE = 0x8000,
_RT_WEAKREF = 0x10000,
OT_VECTOR = 0x40000,
SQOBJECT_CANBEFALSE = 0x1000000,
OT_NULL = 0x1000001,
OT_BOOL = 0x1000008,
SQOBJECT_DELEGABLE = 0x2000000,
SQOBJECT_NUMERIC = 0x4000000,
OT_INTEGER = 0x5000002,
OT_FLOAT = 0x5000004,
SQOBJECT_REF_COUNTED = 0x8000000,
OT_STRING = 0x8000010,
OT_ARRAY = 0x8000040,
OT_CLOSURE = 0x8000100,
OT_NATIVECLOSURE = 0x8000200,
OT_ASSET = 0x8000400,
OT_THREAD = 0x8001000,
OT_FUNCPROTO = 0x8002000,
OT_CLAAS = 0x8004000,
OT_STRUCT = 0x8200000,
OT_WEAKREF = 0x8010000,
OT_TABLE = 0xA000020,
OT_USERDATA = 0xA000080,
OT_INSTANCE = 0xA008000,
OT_ENTITY = 0xA400000,
};
union SQObjectValue
{
SQString* asString;
SQTable* asTable;
SQClosure* asClosure;
SQFunctionProto* asFuncProto;
SQStructDef* asStructDef;
long long as64Integer;
SQNativeClosure* asNativeClosure;
SQArray* asArray;
HSQUIRRELVM asThread;
float asFloat;
int asInteger;
SQUserData* asUserdata;
SQStructInstance* asStructInstance;
};
struct SQObject
{
SQObjectType _Type;
int structNumber;
SQObjectValue _VAL;
};
|