25#ifdef _SQ_CONFIG_INCLUDE
26#include _SQ_CONFIG_INCLUDE
34#define SQUIRREL_API extern
37#if (defined(_WIN64) || defined(_LP64))
64#define SQUIRREL_VERSION _SC("Squirrel 3.1 stable")
65#define SQUIRREL_COPYRIGHT _SC("Copyright (C) 2003-2017 Alberto Demichelis")
66#define SQUIRREL_AUTHOR _SC("Alberto Demichelis")
67#define SQUIRREL_VERSION_NUMBER 310
69#define SQ_VMSTATE_IDLE 0
70#define SQ_VMSTATE_RUNNING 1
71#define SQ_VMSTATE_SUSPENDED 2
74#define SQ_BYTECODE_STREAM_TAG 0xFAFA
76#define SQOBJECT_REF_COUNTED 0x08000000
77#define SQOBJECT_NUMERIC 0x04000000
78#define SQOBJECT_DELEGABLE 0x02000000
79#define SQOBJECT_CANBEFALSE 0x01000000
81#define SQ_MATCHTYPEMASKSTRING (-99999)
83#define _RT_MASK 0x00FFFFFF
84#define _RAW_TYPE(type) (type&_RT_MASK)
86#define _RT_NULL 0x00000001
87#define _RT_INTEGER 0x00000002
88#define _RT_FLOAT 0x00000004
89#define _RT_BOOL 0x00000008
90#define _RT_STRING 0x00000010
91#define _RT_TABLE 0x00000020
92#define _RT_ARRAY 0x00000040
93#define _RT_USERDATA 0x00000080
94#define _RT_CLOSURE 0x00000100
95#define _RT_NATIVECLOSURE 0x00000200
96#define _RT_GENERATOR 0x00000400
97#define _RT_USERPOINTER 0x00000800
98#define _RT_THREAD 0x00001000
99#define _RT_FUNCPROTO 0x00002000
100#define _RT_CLASS 0x00004000
101#define _RT_INSTANCE 0x00008000
102#define _RT_WEAKREF 0x00010000
103#define _RT_OUTER 0x00020000
105typedef enum tagSQObjectType{
106 OT_NULL = (_RT_NULL|SQOBJECT_NUMERIC|SQOBJECT_CANBEFALSE),
107 OT_INTEGER = (_RT_INTEGER|SQOBJECT_NUMERIC|SQOBJECT_CANBEFALSE),
108 OT_FLOAT = (_RT_FLOAT|SQOBJECT_NUMERIC|SQOBJECT_CANBEFALSE),
109 OT_BOOL = (_RT_BOOL|SQOBJECT_NUMERIC|SQOBJECT_CANBEFALSE),
110 OT_STRING = (_RT_STRING|SQOBJECT_REF_COUNTED),
111 OT_TABLE = (_RT_TABLE|SQOBJECT_REF_COUNTED|SQOBJECT_DELEGABLE),
112 OT_ARRAY = (_RT_ARRAY|SQOBJECT_REF_COUNTED),
113 OT_USERDATA = (_RT_USERDATA|SQOBJECT_REF_COUNTED|SQOBJECT_DELEGABLE),
114 OT_CLOSURE = (_RT_CLOSURE|SQOBJECT_REF_COUNTED),
115 OT_NATIVECLOSURE = (_RT_NATIVECLOSURE|SQOBJECT_REF_COUNTED),
116 OT_GENERATOR = (_RT_GENERATOR|SQOBJECT_REF_COUNTED),
117 OT_USERPOINTER = _RT_USERPOINTER,
118 OT_THREAD = (_RT_THREAD|SQOBJECT_REF_COUNTED) ,
119 OT_FUNCPROTO = (_RT_FUNCPROTO|SQOBJECT_REF_COUNTED),
120 OT_CLASS = (_RT_CLASS|SQOBJECT_REF_COUNTED),
121 OT_INSTANCE = (_RT_INSTANCE|SQOBJECT_REF_COUNTED|SQOBJECT_DELEGABLE),
122 OT_WEAKREF = (_RT_WEAKREF|SQOBJECT_REF_COUNTED),
123 OT_OUTER = (_RT_OUTER|SQOBJECT_REF_COUNTED)
126#define ISREFCOUNTED(t) (t&SQOBJECT_REF_COUNTED)
141 SQUserPointer pUserPointer;
145 struct SQVM *pThread;
165 const SQChar* funcname;
166 const SQChar* source;
174typedef SQInteger (*SQRELEASEHOOK)(SQUserPointer,SQInteger size);
175typedef void (*SQCOMPILERERROR)(
HSQUIRRELVM,
const SQChar * ,
const SQChar * ,SQInteger ,SQInteger );
176typedef void (*SQPRINTFUNCTION)(
HSQUIRRELVM,
const SQChar * ,...);
177typedef void (*SQDEBUGHOOK)(
HSQUIRRELVM , SQInteger ,
const SQChar * , SQInteger ,
const SQChar * );
178typedef SQInteger (*SQWRITEFUNC)(SQUserPointer,SQUserPointer,SQInteger);
179typedef SQInteger (*SQREADFUNC)(SQUserPointer,SQUserPointer,SQInteger);
181typedef SQInteger (*SQLEXREADFUNC)(SQUserPointer);
186 SQInteger nparamscheck;
187 const SQChar *typemask;
191 SQUserPointer funcid;
193 const SQChar *source;
198SQUIRREL_API
HSQUIRRELVM sq_open(SQInteger initialstacksize);
200SQUIRREL_API
void sq_seterrorhandler(
HSQUIRRELVM v);
202SQUIRREL_API
void sq_setforeignptr(
HSQUIRRELVM v,SQUserPointer p);
203SQUIRREL_API SQUserPointer sq_getforeignptr(
HSQUIRRELVM v);
204SQUIRREL_API
void sq_setsharedforeignptr(
HSQUIRRELVM v,SQUserPointer p);
205SQUIRREL_API SQUserPointer sq_getsharedforeignptr(
HSQUIRRELVM v);
206SQUIRREL_API
void sq_setvmreleasehook(
HSQUIRRELVM v,SQRELEASEHOOK hook);
207SQUIRREL_API SQRELEASEHOOK sq_getvmreleasehook(
HSQUIRRELVM v);
208SQUIRREL_API
void sq_setsharedreleasehook(
HSQUIRRELVM v,SQRELEASEHOOK hook);
209SQUIRREL_API SQRELEASEHOOK sq_getsharedreleasehook(
HSQUIRRELVM v);
210SQUIRREL_API
void sq_setprintfunc(
HSQUIRRELVM v, SQPRINTFUNCTION printfunc,SQPRINTFUNCTION errfunc);
211SQUIRREL_API SQPRINTFUNCTION sq_getprintfunc(
HSQUIRRELVM v);
212SQUIRREL_API SQPRINTFUNCTION sq_geterrorfunc(
HSQUIRRELVM v);
214SQUIRREL_API SQRESULT sq_wakeupvm(
HSQUIRRELVM v,SQBool resumedret,SQBool retval,SQBool raiseerror,SQBool throwerror);
215SQUIRREL_API SQInteger sq_getvmstate(
HSQUIRRELVM v);
216SQUIRREL_API SQInteger sq_getversion();
219SQUIRREL_API SQRESULT sq_compile(
HSQUIRRELVM v,SQLEXREADFUNC read,SQUserPointer p,
const SQChar *sourcename,SQBool raiseerror);
220SQUIRREL_API SQRESULT sq_compilebuffer(
HSQUIRRELVM v,
const SQChar *s,SQInteger size,
const SQChar *sourcename,SQBool raiseerror);
221SQUIRREL_API
void sq_enabledebuginfo(
HSQUIRRELVM v, SQBool enable);
222SQUIRREL_API
void sq_notifyallexceptions(
HSQUIRRELVM v, SQBool enable);
223SQUIRREL_API
void sq_setcompilererrorhandler(
HSQUIRRELVM v,SQCOMPILERERROR f);
226SQUIRREL_API
void sq_push(
HSQUIRRELVM v,SQInteger idx);
227SQUIRREL_API
void sq_pop(
HSQUIRRELVM v,SQInteger nelemstopop);
229SQUIRREL_API
void sq_remove(
HSQUIRRELVM v,SQInteger idx);
231SQUIRREL_API
void sq_settop(
HSQUIRRELVM v,SQInteger newtop);
232SQUIRREL_API SQRESULT sq_reservestack(
HSQUIRRELVM v,SQInteger nsize);
237SQUIRREL_API SQUserPointer sq_newuserdata(
HSQUIRRELVM v,SQUnsignedInteger size);
239SQUIRREL_API
void sq_newtableex(
HSQUIRRELVM v,SQInteger initialcapacity);
240SQUIRREL_API
void sq_newarray(
HSQUIRRELVM v,SQInteger size);
241SQUIRREL_API
void sq_newclosure(
HSQUIRRELVM v,SQFUNCTION func,SQUnsignedInteger nfreevars);
242SQUIRREL_API SQRESULT sq_setparamscheck(
HSQUIRRELVM v,SQInteger nparamscheck,
const SQChar *typemask);
243SQUIRREL_API SQRESULT sq_bindenv(
HSQUIRRELVM v,SQInteger idx);
244SQUIRREL_API SQRESULT sq_setclosureroot(
HSQUIRRELVM v,SQInteger idx);
245SQUIRREL_API SQRESULT sq_getclosureroot(
HSQUIRRELVM v,SQInteger idx);
246SQUIRREL_API
void sq_pushstring(
HSQUIRRELVM v,
const SQChar *s,SQInteger len);
247SQUIRREL_API
void sq_pushfloat(
HSQUIRRELVM v,SQFloat f);
248SQUIRREL_API
void sq_pushinteger(
HSQUIRRELVM v,SQInteger n);
249SQUIRREL_API
void sq_pushbool(
HSQUIRRELVM v,SQBool b);
250SQUIRREL_API
void sq_pushuserpointer(
HSQUIRRELVM v,SQUserPointer p);
253SQUIRREL_API SQObjectType sq_gettype(
HSQUIRRELVM v,SQInteger idx);
254SQUIRREL_API SQRESULT sq_typeof(
HSQUIRRELVM v,SQInteger idx);
255SQUIRREL_API SQInteger sq_getsize(
HSQUIRRELVM v,SQInteger idx);
256SQUIRREL_API SQHash sq_gethash(
HSQUIRRELVM v, SQInteger idx);
257SQUIRREL_API SQRESULT sq_getbase(
HSQUIRRELVM v,SQInteger idx);
259SQUIRREL_API SQRESULT sq_tostring(
HSQUIRRELVM v,SQInteger idx);
260SQUIRREL_API
void sq_tobool(
HSQUIRRELVM v, SQInteger idx, SQBool *b);
261SQUIRREL_API SQRESULT sq_getstringandsize(
HSQUIRRELVM v,SQInteger idx,
const SQChar **c,SQInteger *size);
262SQUIRREL_API SQRESULT sq_getstring(
HSQUIRRELVM v,SQInteger idx,
const SQChar **c);
263SQUIRREL_API SQRESULT sq_getinteger(
HSQUIRRELVM v,SQInteger idx,SQInteger *i);
264SQUIRREL_API SQRESULT sq_getfloat(
HSQUIRRELVM v,SQInteger idx,SQFloat *f);
265SQUIRREL_API SQRESULT sq_getbool(
HSQUIRRELVM v,SQInteger idx,SQBool *b);
267SQUIRREL_API SQRESULT sq_getuserpointer(
HSQUIRRELVM v,SQInteger idx,SQUserPointer *p);
268SQUIRREL_API SQRESULT sq_getuserdata(
HSQUIRRELVM v,SQInteger idx,SQUserPointer *p,SQUserPointer *typetag);
269SQUIRREL_API SQRESULT sq_settypetag(
HSQUIRRELVM v,SQInteger idx,SQUserPointer typetag);
270SQUIRREL_API SQRESULT sq_gettypetag(
HSQUIRRELVM v,SQInteger idx,SQUserPointer *typetag);
271SQUIRREL_API
void sq_setreleasehook(
HSQUIRRELVM v,SQInteger idx,SQRELEASEHOOK hook);
272SQUIRREL_API SQRELEASEHOOK sq_getreleasehook(
HSQUIRRELVM v,SQInteger idx);
273SQUIRREL_API SQChar *sq_getscratchpad(
HSQUIRRELVM v,SQInteger minsize);
275SQUIRREL_API SQRESULT sq_getclosureinfo(
HSQUIRRELVM v,SQInteger idx,SQInteger *nparams,SQInteger *nfreevars);
276SQUIRREL_API SQRESULT sq_getclosurename(
HSQUIRRELVM v,SQInteger idx);
277SQUIRREL_API SQRESULT sq_setnativeclosurename(
HSQUIRRELVM v,SQInteger idx,
const SQChar *name);
278SQUIRREL_API SQRESULT sq_setinstanceup(
HSQUIRRELVM v, SQInteger idx, SQUserPointer p);
279SQUIRREL_API SQRESULT sq_getinstanceup(
HSQUIRRELVM v, SQInteger idx, SQUserPointer *p,SQUserPointer typetag);
280SQUIRREL_API SQRESULT sq_setclassudsize(
HSQUIRRELVM v, SQInteger idx, SQInteger udsize);
281SQUIRREL_API SQRESULT sq_newclass(
HSQUIRRELVM v,SQBool hasbase);
282SQUIRREL_API SQRESULT sq_createinstance(
HSQUIRRELVM v,SQInteger idx);
283SQUIRREL_API SQRESULT sq_setattributes(
HSQUIRRELVM v,SQInteger idx);
284SQUIRREL_API SQRESULT sq_getattributes(
HSQUIRRELVM v,SQInteger idx);
285SQUIRREL_API SQRESULT sq_getclass(
HSQUIRRELVM v,SQInteger idx);
286SQUIRREL_API
void sq_weakref(
HSQUIRRELVM v,SQInteger idx);
287SQUIRREL_API SQRESULT sq_getdefaultdelegate(
HSQUIRRELVM v,SQObjectType t);
294SQUIRREL_API
void sq_pushregistrytable(
HSQUIRRELVM v);
296SQUIRREL_API SQRESULT sq_setroottable(
HSQUIRRELVM v);
297SQUIRREL_API SQRESULT sq_setconsttable(
HSQUIRRELVM v);
298SQUIRREL_API SQRESULT sq_newslot(
HSQUIRRELVM v, SQInteger idx, SQBool bstatic);
299SQUIRREL_API SQRESULT sq_deleteslot(
HSQUIRRELVM v,SQInteger idx,SQBool pushval);
300SQUIRREL_API SQRESULT sq_set(
HSQUIRRELVM v,SQInteger idx);
301SQUIRREL_API SQRESULT sq_get(
HSQUIRRELVM v,SQInteger idx);
302SQUIRREL_API SQRESULT sq_rawget(
HSQUIRRELVM v,SQInteger idx);
303SQUIRREL_API SQRESULT sq_rawset(
HSQUIRRELVM v,SQInteger idx);
304SQUIRREL_API SQRESULT sq_rawdeleteslot(
HSQUIRRELVM v,SQInteger idx,SQBool pushval);
305SQUIRREL_API SQRESULT sq_newmember(
HSQUIRRELVM v,SQInteger idx,SQBool bstatic);
306SQUIRREL_API SQRESULT sq_rawnewmember(
HSQUIRRELVM v,SQInteger idx,SQBool bstatic);
307SQUIRREL_API SQRESULT sq_arrayappend(
HSQUIRRELVM v,SQInteger idx);
308SQUIRREL_API SQRESULT sq_arraypop(
HSQUIRRELVM v,SQInteger idx,SQBool pushval);
309SQUIRREL_API SQRESULT sq_arrayresize(
HSQUIRRELVM v,SQInteger idx,SQInteger newsize);
310SQUIRREL_API SQRESULT sq_arrayreverse(
HSQUIRRELVM v,SQInteger idx);
311SQUIRREL_API SQRESULT sq_arrayremove(
HSQUIRRELVM v,SQInteger idx,SQInteger itemidx);
312SQUIRREL_API SQRESULT sq_arrayinsert(
HSQUIRRELVM v,SQInteger idx,SQInteger destpos);
313SQUIRREL_API SQRESULT sq_setdelegate(
HSQUIRRELVM v,SQInteger idx);
314SQUIRREL_API SQRESULT sq_getdelegate(
HSQUIRRELVM v,SQInteger idx);
315SQUIRREL_API SQRESULT sq_clone(
HSQUIRRELVM v,SQInteger idx);
316SQUIRREL_API SQRESULT sq_setfreevariable(
HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval);
317SQUIRREL_API SQRESULT sq_next(
HSQUIRRELVM v,SQInteger idx);
318SQUIRREL_API SQRESULT sq_getweakrefval(
HSQUIRRELVM v,SQInteger idx);
319SQUIRREL_API SQRESULT sq_clear(
HSQUIRRELVM v,SQInteger idx);
322SQUIRREL_API SQRESULT sq_call(
HSQUIRRELVM v,SQInteger params,SQBool retval,SQBool raiseerror);
323SQUIRREL_API SQRESULT sq_resume(
HSQUIRRELVM v,SQBool retval,SQBool raiseerror);
324SQUIRREL_API
const SQChar *sq_getlocal(
HSQUIRRELVM v,SQUnsignedInteger level,SQUnsignedInteger idx);
326SQUIRREL_API
const SQChar *sq_getfreevariable(
HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval);
327SQUIRREL_API SQRESULT sq_throwerror(
HSQUIRRELVM v,
const SQChar *err);
328SQUIRREL_API SQRESULT sq_throwobject(
HSQUIRRELVM v);
331SQUIRREL_API SQRESULT sq_tailcall(
HSQUIRRELVM v, SQInteger nparams);
339SQUIRREL_API
void sq_resetobject(
HSQOBJECT *po);
340SQUIRREL_API
const SQChar *sq_objtostring(
const HSQOBJECT *o);
341SQUIRREL_API SQBool sq_objtobool(
const HSQOBJECT *o);
342SQUIRREL_API SQInteger sq_objtointeger(
const HSQOBJECT *o);
343SQUIRREL_API SQFloat sq_objtofloat(
const HSQOBJECT *o);
344SQUIRREL_API SQUserPointer sq_objtouserpointer(
const HSQOBJECT *o);
345SQUIRREL_API SQRESULT sq_getobjtypetag(
const HSQOBJECT *o,SQUserPointer * typetag);
350SQUIRREL_API SQInteger sq_collectgarbage(
HSQUIRRELVM v);
351SQUIRREL_API SQRESULT sq_resurrectunreachable(
HSQUIRRELVM v);
354SQUIRREL_API SQRESULT sq_writeclosure(
HSQUIRRELVM vm,SQWRITEFUNC writef,SQUserPointer up);
355SQUIRREL_API SQRESULT sq_readclosure(
HSQUIRRELVM vm,SQREADFUNC readf,SQUserPointer up);
358SQUIRREL_API
void *sq_malloc(SQUnsignedInteger size);
359SQUIRREL_API
void *sq_realloc(
void* p,SQUnsignedInteger oldsize,SQUnsignedInteger newsize);
360SQUIRREL_API
void sq_free(
void *p,SQUnsignedInteger size);
365SQUIRREL_API
void sq_setnativedebughook(
HSQUIRRELVM v,SQDEBUGHOOK hook);
368#define sq_isnumeric(o) ((o)._type&SQOBJECT_NUMERIC)
369#define sq_istable(o) ((o)._type==OT_TABLE)
370#define sq_isarray(o) ((o)._type==OT_ARRAY)
371#define sq_isfunction(o) ((o)._type==OT_FUNCPROTO)
372#define sq_isclosure(o) ((o)._type==OT_CLOSURE)
373#define sq_isgenerator(o) ((o)._type==OT_GENERATOR)
374#define sq_isnativeclosure(o) ((o)._type==OT_NATIVECLOSURE)
375#define sq_isstring(o) ((o)._type==OT_STRING)
376#define sq_isinteger(o) ((o)._type==OT_INTEGER)
377#define sq_isfloat(o) ((o)._type==OT_FLOAT)
378#define sq_isuserpointer(o) ((o)._type==OT_USERPOINTER)
379#define sq_isuserdata(o) ((o)._type==OT_USERDATA)
380#define sq_isthread(o) ((o)._type==OT_THREAD)
381#define sq_isnull(o) ((o)._type==OT_NULL)
382#define sq_isclass(o) ((o)._type==OT_CLASS)
383#define sq_isinstance(o) ((o)._type==OT_INSTANCE)
384#define sq_isbool(o) ((o)._type==OT_BOOL)
385#define sq_isweakref(o) ((o)._type==OT_WEAKREF)
386#define sq_type(o) ((o)._type)
389#define sq_createslot(v,n) sq_newslot(v,n,SQFalse)
394#define SQ_FAILED(res) (res<0)
395#define SQ_SUCCEEDED(res) (res>=0)
398# define SQ_UNUSED_ARG(x) x __attribute__((__unused__))
400# define SQ_UNUSED_ARG(x) x
Definition: sqclosure.h:11
Definition: sqobject.h:339
Definition: sqfuncproto.h:50
Definition: sqclosure.h:109
Definition: sqclosure.h:148
Definition: sqclosure.h:75
Definition: sqobject.h:88
Definition: sqstring.h:15
Definition: squserdata.h:6
Definition: sqobject.h:99
Definition: squirrel.h:190
Definition: squirrel.h:159
Definition: squirrel.h:154
Definition: squirrel.h:183
Definition: squirrel.h:164
Definition: squirrel.h:130