1 module derelict.angelscript.types;
2 
3 enum ANGELSCRIPT_VERSION = 23200;
4 
5 enum asERetCodes {
6 	asSUCCESS                              =  0,
7 	asERROR                                = -1,
8 	asCONTEXT_ACTIVE                       = -2,
9 	asCONTEXT_NOT_FINISHED                 = -3,
10 	asCONTEXT_NOT_PREPARED                 = -4,
11 	asINVALID_ARG                          = -5,
12 	asNO_FUNCTION                          = -6,
13 	asNOT_SUPPORTED                        = -7,
14 	asINVALID_NAME                         = -8,
15 	asNAME_TAKEN                           = -9,
16 	asINVALID_DECLARATION                  = -10,
17 	asINVALID_OBJECT                       = -11,
18 	asINVALID_TYPE                         = -12,
19 	asALREADY_REGISTERED                   = -13,
20 	asMULTIPLE_FUNCTIONS                   = -14,
21 	asNO_MODULE                            = -15,
22 	asNO_GLOBAL_VAR                        = -16,
23 	asINVALID_CONFIGURATION                = -17,
24 	asINVALID_INTERFACE                    = -18,
25 	asCANT_BIND_ALL_FUNCTIONS              = -19,
26 	asLOWER_ARRAY_DIMENSION_NOT_REGISTERED = -20,
27 	asWRONG_CONFIG_GROUP                   = -21,
28 	asCONFIG_GROUP_IS_IN_USE               = -22,
29 	asILLEGAL_BEHAVIOUR_FOR_TYPE           = -23,
30 	asWRONG_CALLING_CONV                   = -24,
31 	asBUILD_IN_PROGRESS                    = -25,
32 	asINIT_GLOBAL_VARS_FAILED              = -26,
33 	asOUT_OF_MEMORY                        = -27,
34 	asMODULE_IS_IN_USE                     = -28
35 }
36 
37 enum asEEngineProp {
38 	asEP_ALLOW_UNSAFE_REFERENCES            = 1,
39 	asEP_OPTIMIZE_BYTECODE                  = 2,
40 	asEP_COPY_SCRIPT_SECTIONS               = 3,
41 	asEP_MAX_STACK_SIZE                     = 4,
42 	asEP_USE_CHARACTER_LITERALS             = 5,
43 	asEP_ALLOW_MULTILINE_STRINGS            = 6,
44 	asEP_ALLOW_IMPLICIT_HANDLE_TYPES        = 7,
45 	asEP_BUILD_WITHOUT_LINE_CUES            = 8,
46 	asEP_INIT_GLOBAL_VARS_AFTER_BUILD       = 9,
47 	asEP_REQUIRE_ENUM_SCOPE                 = 10,
48 	asEP_SCRIPT_SCANNER                     = 11,
49 	asEP_INCLUDE_JIT_INSTRUCTIONS           = 12,
50 	asEP_STRING_ENCODING                    = 13,
51 	asEP_PROPERTY_ACCESSOR_MODE             = 14,
52 	asEP_EXPAND_DEF_ARRAY_TO_TMPL           = 15,
53 	asEP_AUTO_GARBAGE_COLLECT               = 16,
54 	asEP_DISALLOW_GLOBAL_VARS               = 17,
55 	asEP_ALWAYS_IMPL_DEFAULT_CONSTRUCT      = 18,
56 	asEP_COMPILER_WARNINGS                  = 19,
57 	asEP_DISALLOW_VALUE_ASSIGN_FOR_REF_TYPE = 20,
58 	asEP_ALTER_SYNTAX_NAMED_ARGS            = 21,
59 	asEP_DISABLE_INTEGER_DIVISION           = 22,
60 	asEP_DISALLOW_EMPTY_LIST_ELEMENTS       = 23,
61 	asEP_PRIVATE_PROP_AS_PROTECTED          = 24,
62 	asEP_ALLOW_UNICODE_IDENTIFIERS          = 25,
63 	asEP_HEREDOC_TRIM_MODE                  = 26,
64 
65 	asEP_LAST_PROPERTY
66 }
67 
68 enum asECallConvTypes {
69 	asCALL_CDECL             = 0,
70 	asCALL_STDCALL           = 1,
71 	asCALL_THISCALL_ASGLOBAL = 2,
72 	asCALL_THISCALL          = 3,
73 	asCALL_CDECL_OBJLAST     = 4,
74 	asCALL_CDECL_OBJFIRST    = 5,
75 	asCALL_GENERIC           = 6,
76 	asCALL_THISCALL_OBJLAST  = 7,
77 	asCALL_THISCALL_OBJFIRST = 8
78 }
79 
80 enum asEObjTypeFlags {
81 	asOBJ_REF                        = (1<<0),
82 	asOBJ_VALUE                      = (1<<1),
83 	asOBJ_GC                         = (1<<2),
84 	asOBJ_POD                        = (1<<3),
85 	asOBJ_NOHANDLE                   = (1<<4),
86 	asOBJ_SCOPED                     = (1<<5),
87 	asOBJ_TEMPLATE                   = (1<<6),
88 	asOBJ_ASHANDLE                   = (1<<7),
89 	asOBJ_APP_CLASS                  = (1<<8),
90 	asOBJ_APP_CLASS_CONSTRUCTOR      = (1<<9),
91 	asOBJ_APP_CLASS_DESTRUCTOR       = (1<<10),
92 	asOBJ_APP_CLASS_ASSIGNMENT       = (1<<11),
93 	asOBJ_APP_CLASS_COPY_CONSTRUCTOR = (1<<12),
94 	asOBJ_APP_CLASS_C                = (asOBJ_APP_CLASS + asOBJ_APP_CLASS_CONSTRUCTOR),
95 	asOBJ_APP_CLASS_CD               = (asOBJ_APP_CLASS + asOBJ_APP_CLASS_CONSTRUCTOR + asOBJ_APP_CLASS_DESTRUCTOR),
96 	asOBJ_APP_CLASS_CA               = (asOBJ_APP_CLASS + asOBJ_APP_CLASS_CONSTRUCTOR + asOBJ_APP_CLASS_ASSIGNMENT),
97 	asOBJ_APP_CLASS_CK               = (asOBJ_APP_CLASS + asOBJ_APP_CLASS_CONSTRUCTOR + asOBJ_APP_CLASS_COPY_CONSTRUCTOR),
98 	asOBJ_APP_CLASS_CDA              = (asOBJ_APP_CLASS + asOBJ_APP_CLASS_CONSTRUCTOR + asOBJ_APP_CLASS_DESTRUCTOR + asOBJ_APP_CLASS_ASSIGNMENT),
99 	asOBJ_APP_CLASS_CDK              = (asOBJ_APP_CLASS + asOBJ_APP_CLASS_CONSTRUCTOR + asOBJ_APP_CLASS_DESTRUCTOR + asOBJ_APP_CLASS_COPY_CONSTRUCTOR),
100 	asOBJ_APP_CLASS_CAK              = (asOBJ_APP_CLASS + asOBJ_APP_CLASS_CONSTRUCTOR + asOBJ_APP_CLASS_ASSIGNMENT + asOBJ_APP_CLASS_COPY_CONSTRUCTOR),
101 	asOBJ_APP_CLASS_CDAK             = (asOBJ_APP_CLASS + asOBJ_APP_CLASS_CONSTRUCTOR + asOBJ_APP_CLASS_DESTRUCTOR + asOBJ_APP_CLASS_ASSIGNMENT + asOBJ_APP_CLASS_COPY_CONSTRUCTOR),
102 	asOBJ_APP_CLASS_D                = (asOBJ_APP_CLASS + asOBJ_APP_CLASS_DESTRUCTOR),
103 	asOBJ_APP_CLASS_DA               = (asOBJ_APP_CLASS + asOBJ_APP_CLASS_DESTRUCTOR + asOBJ_APP_CLASS_ASSIGNMENT),
104 	asOBJ_APP_CLASS_DK               = (asOBJ_APP_CLASS + asOBJ_APP_CLASS_DESTRUCTOR + asOBJ_APP_CLASS_COPY_CONSTRUCTOR),
105 	asOBJ_APP_CLASS_DAK              = (asOBJ_APP_CLASS + asOBJ_APP_CLASS_DESTRUCTOR + asOBJ_APP_CLASS_ASSIGNMENT + asOBJ_APP_CLASS_COPY_CONSTRUCTOR),
106 	asOBJ_APP_CLASS_A                = (asOBJ_APP_CLASS + asOBJ_APP_CLASS_ASSIGNMENT),
107 	asOBJ_APP_CLASS_AK               = (asOBJ_APP_CLASS + asOBJ_APP_CLASS_ASSIGNMENT + asOBJ_APP_CLASS_COPY_CONSTRUCTOR),
108 	asOBJ_APP_CLASS_K                = (asOBJ_APP_CLASS + asOBJ_APP_CLASS_COPY_CONSTRUCTOR),
109 	asOBJ_APP_PRIMITIVE              = (1<<13),
110 	asOBJ_APP_FLOAT                  = (1<<14),
111 	asOBJ_APP_ARRAY                  = (1<<15),
112 	asOBJ_APP_CLASS_ALLINTS          = (1<<16),
113 	asOBJ_APP_CLASS_ALLFLOATS        = (1<<17),
114 	asOBJ_NOCOUNT                    = (1<<18),
115 	asOBJ_APP_CLASS_ALIGN8           = (1<<19),
116 	asOBJ_IMPLICIT_HANDLE            = (1<<20),
117 	asOBJ_MASK_VALID_FLAGS           = 0x1FFFFF,
118 
119 	asOBJ_SCRIPT_OBJECT              = (1<<21),
120 	asOBJ_SHARED                     = (1<<22),
121 	asOBJ_NOINHERIT                  = (1<<23),
122 	asOBJ_FUNCDEF                    = (1<<24),
123 	asOBJ_LIST_PATTERN               = (1<<25),
124 	asOBJ_ENUM                       = (1<<26),
125 	asOBJ_TEMPLATE_SUBTYPE           = (1<<27),
126 	asOBJ_TYPEDEF                    = (1<<28),
127 	asOBJ_ABSTRACT                   = (1<<29),
128 	asOBJ_APP_ALIGN16                = (1<<30)
129 }
130 
131 enum asEBehaviours {
132 	asBEHAVE_CONSTRUCT,
133 	asBEHAVE_LIST_CONSTRUCT,
134 	asBEHAVE_DESTRUCT,
135 
136 	asBEHAVE_FACTORY,
137 	asBEHAVE_LIST_FACTORY,
138 	asBEHAVE_ADDREF,
139 	asBEHAVE_RELEASE,
140 	asBEHAVE_GET_WEAKREF_FLAG,
141 
142 	asBEHAVE_TEMPLATE_CALLBACK,
143 
144 	asBEHAVE_FIRST_GC,
145 	 asBEHAVE_GETREFCOUNT = asBEHAVE_FIRST_GC,
146 	 asBEHAVE_SETGCFLAG,
147 	 asBEHAVE_GETGCFLAG,
148 	 asBEHAVE_ENUMREFS,
149 	 asBEHAVE_RELEASEREFS,
150 	asBEHAVE_LAST_GC = asBEHAVE_RELEASEREFS,
151 
152 	asBEHAVE_MAX
153 }
154 
155 enum asEMsgType {
156 	asMSGTYPE_ERROR       = 0,
157 	asMSGTYPE_WARNING     = 1,
158 	asMSGTYPE_INFORMATION = 2
159 }
160 
161 enum asEContextState {
162 	asEXECUTION_FINISHED      = 0,
163 	asEXECUTION_SUSPENDED     = 1,
164 	asEXECUTION_ABORTED       = 2,
165 	asEXECUTION_EXCEPTION     = 3,
166 	asEXECUTION_PREPARED      = 4,
167 	asEXECUTION_UNINITIALIZED = 5,
168 	asEXECUTION_ACTIVE        = 6,
169 	asEXECUTION_ERROR         = 7
170 }
171 
172 enum asEGCFlags {
173 	asGC_FULL_CYCLE      = 1,
174 	asGC_ONE_STEP        = 2,
175 	asGC_DESTROY_GARBAGE = 4,
176 	asGC_DETECT_GARBAGE  = 8
177 }
178 
179 enum asETokenClass {
180 	asTC_UNKNOWN    = 0,
181 	asTC_KEYWORD    = 1,
182 	asTC_VALUE      = 2,
183 	asTC_IDENTIFIER = 3,
184 	asTC_COMMENT    = 4,
185 	asTC_WHITESPACE = 5
186 }
187 
188 enum asETypeIdFlags {
189 	asTYPEID_VOID           = 0,
190 	asTYPEID_BOOL           = 1,
191 	asTYPEID_INT8           = 2,
192 	asTYPEID_INT16          = 3,
193 	asTYPEID_INT32          = 4,
194 	asTYPEID_INT64          = 5,
195 	asTYPEID_UINT8          = 6,
196 	asTYPEID_UINT16         = 7,
197 	asTYPEID_UINT32         = 8,
198 	asTYPEID_UINT64         = 9,
199 	asTYPEID_FLOAT          = 10,
200 	asTYPEID_DOUBLE         = 11,
201 	asTYPEID_OBJHANDLE      = 0x40000000,
202 	asTYPEID_HANDLETOCONST  = 0x20000000,
203 	asTYPEID_MASK_OBJECT    = 0x1C000000,
204 	asTYPEID_APPOBJECT      = 0x04000000,
205 	asTYPEID_SCRIPTOBJECT   = 0x08000000,
206 	asTYPEID_TEMPLATE       = 0x10000000,
207 	asTYPEID_MASK_SEQNBR    = 0x03FFFFFF
208 }
209 
210 enum asETypeModifiers {
211 	asTM_NONE     = 0,
212 	asTM_INREF    = 1,
213 	asTM_OUTREF   = 2,
214 	asTM_INOUTREF = 3,
215 	asTM_CONST    = 4
216 }
217 
218 enum asEGMFlags {
219 	asGM_ONLY_IF_EXISTS       = 0,
220 	asGM_CREATE_IF_NOT_EXISTS = 1,
221 	asGM_ALWAYS_CREATE        = 2
222 }
223 
224 enum asECompileFlags {
225 	asCOMP_ADD_TO_MODULE = 1
226 }
227 
228 enum asEFuncType {
229 	asFUNC_DUMMY     =-1,
230 	asFUNC_SYSTEM    = 0,
231 	asFUNC_SCRIPT    = 1,
232 	asFUNC_INTERFACE = 2,
233 	asFUNC_VIRTUAL   = 3,
234 	asFUNC_FUNCDEF   = 4,
235 	asFUNC_IMPORTED  = 5,
236 	asFUNC_DELEGATE  = 6
237 }
238 
239 enum asBOOL {
240 	asTRUE = 1,
241 	asFALSE = 0
242 }
243 
244 alias asBYTE = ubyte;
245 alias asWORD = ushort;
246 alias asUINT = uint;
247 alias asPWORD = size_t;
248 static if ((void*).sizeof == long.sizeof) {
249 	alias asDWORD = uint;
250 	alias asQWORD = ulong;
251 	alias asINT64 = long;
252 } else {
253 	alias asDWORD = ulong;
254 	// TODO: Implement __GNUC__/__MWERKS__ from angelscript_c.h
255 	// TODO: Implement else part of that.
256 }
257 
258 
259 struct asSMessageInfo {
260 	const char *section;
261 	int         row;
262 	int         col;
263 	asEMsgType  type;
264 	const char *message;
265 }
266 
267 struct asIScriptEngine;
268 struct asIScriptModule;
269 struct asIScriptContext;
270 struct asIScriptGeneric;
271 struct asIScriptObject;
272 struct asITypeInfo;
273 struct asIScriptFunction;
274 struct asIBinaryStream;
275 struct asIJITCompiler;
276 struct asIThreadManager;
277 struct asILockableSharedBool;
278 
279 alias asBINARYREADFUNC_t = void function(void*, asUINT, void*);
280 alias asBINARYWRITEFUNC_t = void function(const(void*), asUINT, void*);
281 alias asFUNCTION_t = void function();
282 alias asGENFUNC_t = void function(asIScriptGeneric*);
283 alias asALLOCFUNC_t = void* function(size_t);
284 alias asFREEFUNC_t = void function(void*);
285 alias asCLEANENGINEFUNC_t = void function(asIScriptEngine*);
286 alias asCLEANMODULEFUNC_t = void function(asIScriptModule*);
287 alias asCLEANCONTEXTFUNC_t = void function(asIScriptContext*);
288 alias asCLEANFUNCTIONFUNC_t = void function(asIScriptFunction*);
289 alias asCLEANTYPEINFOFUNC_t = void function(asITypeInfo*);
290 alias asCLEANSCRIPTOBJECTFUNC_t = void function(asIScriptObject*);
291 alias asREQUESTCONTEXTFUNC_t = asIScriptContext* function(asIScriptEngine*, void*);
292 alias asRETURNCONTEXTFUNC_t = void function(asIScriptEngine*, asIScriptContext*, void*);