00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef _SQUIRREL_H_
00032 #define _SQUIRREL_H_
00033
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037
00038 #if defined(_MSC_VER) && _MSC_VER >= 1400 // MSVC 2005 safety checks
00039 # pragma warning(disable: 4996) // '_wfopen' was declared deprecated
00040 # define _CRT_SECURE_NO_DEPRECATE // all deprecated 'unsafe string functions
00041 # define _CRT_NON_CONFORMING_SWPRINTFS // another deprecated stuff
00042 #endif
00043
00044 #ifndef SQUIRREL_API
00045 #define SQUIRREL_API extern
00046 #endif
00047
00048 #if (defined(_WIN64) || defined(_LP64)) && !defined(_SQ64)
00049 #define _SQ64
00050 #endif
00051
00052 #ifdef _SQ64
00053 #ifdef _MSC_VER
00054 typedef __int64 SQInteger;
00055 typedef unsigned __int64 SQUnsignedInteger;
00056 typedef unsigned __int64 SQHash;
00057 #else
00058 typedef long SQInteger;
00059 typedef unsigned long SQUnsignedInteger;
00060 typedef unsigned long SQHash;
00061 #endif
00062 typedef int SQInt32;
00063 #else
00064 typedef int SQInteger;
00065 typedef int SQInt32;
00066 typedef unsigned int SQUnsignedInteger;
00067 typedef unsigned int SQHash;
00068 #endif
00069
00070
00071 typedef float SQFloat;
00072 typedef void* SQUserPointer;
00073 typedef SQUnsignedInteger SQBool;
00074 typedef SQInteger SQRESULT;
00075
00076 #define SQTrue (1)
00077 #define SQFalse (0)
00078
00079 struct SQVM;
00080 struct SQTable;
00081 struct SQArray;
00082 struct SQString;
00083 struct SQClosure;
00084 struct SQGenerator;
00085 struct SQNativeClosure;
00086 struct SQUserData;
00087 struct SQFunctionProto;
00088 struct SQRefCounted;
00089 struct SQClass;
00090 struct SQInstance;
00091 struct SQDelegable;
00092
00093 #ifdef _UNICODE
00094 #define SQUNICODE
00095 #endif
00096
00097 #ifdef SQUNICODE
00098 #if (defined(_MSC_VER) && _MSC_VER >= 1400) // 1400 = VS8
00099
00100 #ifndef _WCHAR_T_DEFINED //this is if the compiler considers wchar_t as native type
00101 typedef unsigned short wchar_t;
00102 #endif
00103 #endif
00104
00105 typedef wchar_t SQChar;
00106 #define _SC(a) L##a
00107 #define scstrcmp wcscmp
00108 #define scsprintf swprintf
00109 #define scsnprintf _snwprintf
00110 #define scstrlen wcslen
00111 #define scstrtod wcstod
00112 #define scstrtol wcstol
00113 #define scatoi _wtoi
00114 #define scstrtoul wcstoul
00115 #define scvsprintf vswprintf
00116 #define scstrstr wcsstr
00117 #define scisspace iswspace
00118 #define scisdigit iswdigit
00119 #define scisxdigit iswxdigit
00120 #define scisalpha iswalpha
00121 #define sciscntrl iswcntrl
00122 #define scisalnum iswalnum
00123 #define scprintf wprintf
00124 #define scfprintf fwprintf
00125 #define scvprintf vwprintf
00126 #define scvfprintf vfwprintf
00127 #define scvsnprintf _vsnwprintf
00128 #define scstrdup _wcsdup
00129 #define scstrrchr wcsrchr
00130 #define scstrcat wcscat
00131 #define MAX_CHAR 0xFFFF
00132 #else
00133 typedef char SQChar;
00134 #define _SC(a) a
00135 #define scstrcmp strcmp
00136 #define scsprintf sprintf
00137 #define scsnprintf snprintf
00138 #define scstrlen strlen
00139 #define scstrtod strtod
00140 #define scstrtol strtol
00141 #define scatoi atoi
00142 #define scstrtoul strtoul
00143 #define scvsprintf vsprintf
00144 #define scstrstr strstr
00145 #define scisspace isspace
00146 #define scisdigit isdigit
00147 #define scisxdigit isxdigit
00148 #define sciscntrl iscntrl
00149 #define scisalpha isalpha
00150 #define scisalnum isalnum
00151 #define scprintf printf
00152 #define scfprintf fprintf
00153 #define scvprintf vprintf
00154 #define scvfprintf vfprintf
00155 #define scvsnprintf vsnprintf
00156 #define scstrdup strdup
00157 #define scstrrchr strrchr
00158 #define scstrcat strcat
00159 #define MAX_CHAR 0xFF
00160 #endif
00161
00162 #define SQUIRREL_VERSION _SC("Squirrel 2.2.2 stable - With custom OpenTTD modifications")
00163 #define SQUIRREL_COPYRIGHT _SC("Copyright (C) 2003-2008 Alberto Demichelis")
00164 #define SQUIRREL_AUTHOR _SC("Alberto Demichelis")
00165
00166 #define SQ_VMSTATE_IDLE 0
00167 #define SQ_VMSTATE_RUNNING 1
00168 #define SQ_VMSTATE_SUSPENDED 2
00169
00170 #define SQUIRREL_EOB 0
00171 #define SQ_BYTECODE_STREAM_TAG 0xFAFA
00172
00173 #define SQOBJECT_REF_COUNTED 0x08000000
00174 #define SQOBJECT_NUMERIC 0x04000000
00175 #define SQOBJECT_DELEGABLE 0x02000000
00176 #define SQOBJECT_CANBEFALSE 0x01000000
00177
00178 #define SQ_MATCHTYPEMASKSTRING (-99999)
00179
00180 #define _RT_MASK 0x00FFFFFF
00181 #define _RAW_TYPE(type) (type&_RT_MASK)
00182
00183 #define _RT_NULL 0x00000001
00184 #define _RT_INTEGER 0x00000002
00185 #define _RT_FLOAT 0x00000004
00186 #define _RT_BOOL 0x00000008
00187 #define _RT_STRING 0x00000010
00188 #define _RT_TABLE 0x00000020
00189 #define _RT_ARRAY 0x00000040
00190 #define _RT_USERDATA 0x00000080
00191 #define _RT_CLOSURE 0x00000100
00192 #define _RT_NATIVECLOSURE 0x00000200
00193 #define _RT_GENERATOR 0x00000400
00194 #define _RT_USERPOINTER 0x00000800
00195 #define _RT_THREAD 0x00001000
00196 #define _RT_FUNCPROTO 0x00002000
00197 #define _RT_CLASS 0x00004000
00198 #define _RT_INSTANCE 0x00008000
00199 #define _RT_WEAKREF 0x00010000
00200
00201 typedef enum tagSQObjectType{
00202 OT_NULL = (_RT_NULL|SQOBJECT_CANBEFALSE),
00203 OT_INTEGER = (_RT_INTEGER|SQOBJECT_NUMERIC|SQOBJECT_CANBEFALSE),
00204 OT_FLOAT = (_RT_FLOAT|SQOBJECT_NUMERIC|SQOBJECT_CANBEFALSE),
00205 OT_BOOL = (_RT_BOOL|SQOBJECT_CANBEFALSE),
00206 OT_STRING = (_RT_STRING|SQOBJECT_REF_COUNTED),
00207 OT_TABLE = (_RT_TABLE|SQOBJECT_REF_COUNTED|SQOBJECT_DELEGABLE),
00208 OT_ARRAY = (_RT_ARRAY|SQOBJECT_REF_COUNTED),
00209 OT_USERDATA = (_RT_USERDATA|SQOBJECT_REF_COUNTED|SQOBJECT_DELEGABLE),
00210 OT_CLOSURE = (_RT_CLOSURE|SQOBJECT_REF_COUNTED),
00211 OT_NATIVECLOSURE = (_RT_NATIVECLOSURE|SQOBJECT_REF_COUNTED),
00212 OT_GENERATOR = (_RT_GENERATOR|SQOBJECT_REF_COUNTED),
00213 OT_USERPOINTER = _RT_USERPOINTER,
00214 OT_THREAD = (_RT_THREAD|SQOBJECT_REF_COUNTED) ,
00215 OT_FUNCPROTO = (_RT_FUNCPROTO|SQOBJECT_REF_COUNTED),
00216 OT_CLASS = (_RT_CLASS|SQOBJECT_REF_COUNTED),
00217 OT_INSTANCE = (_RT_INSTANCE|SQOBJECT_REF_COUNTED|SQOBJECT_DELEGABLE),
00218 OT_WEAKREF = (_RT_WEAKREF|SQOBJECT_REF_COUNTED)
00219 }SQObjectType;
00220
00221 #define ISREFCOUNTED(t) (t&SQOBJECT_REF_COUNTED)
00222
00223
00224 typedef union tagSQObjectValue
00225 {
00226 struct SQTable *pTable;
00227 struct SQArray *pArray;
00228 struct SQClosure *pClosure;
00229 struct SQGenerator *pGenerator;
00230 struct SQNativeClosure *pNativeClosure;
00231 struct SQString *pString;
00232 struct SQUserData *pUserData;
00233 SQInteger nInteger;
00234 SQFloat fFloat;
00235 SQUserPointer pUserPointer;
00236 struct SQFunctionProto *pFunctionProto;
00237 struct SQRefCounted *pRefCounted;
00238 struct SQDelegable *pDelegable;
00239 struct SQVM *pThread;
00240 struct SQClass *pClass;
00241 struct SQInstance *pInstance;
00242 struct SQWeakRef *pWeakRef;
00243 }SQObjectValue;
00244
00245
00246 typedef struct tagSQObject
00247 {
00248 SQObjectType _type;
00249 SQObjectValue _unVal;
00250 }SQObject;
00251
00252 typedef struct tagSQStackInfos{
00253 const SQChar* funcname;
00254 const SQChar* source;
00255 SQInteger line;
00256 }SQStackInfos;
00257
00258 typedef struct SQVM* HSQUIRRELVM;
00259 typedef SQObject HSQOBJECT;
00260 typedef SQInteger (*SQFUNCTION)(HSQUIRRELVM);
00261 typedef SQInteger (*SQRELEASEHOOK)(SQUserPointer,SQInteger size);
00262 typedef void (*SQCOMPILERERROR)(HSQUIRRELVM,const SQChar * ,const SQChar * ,SQInteger ,SQInteger );
00263 typedef void (*SQPRINTFUNCTION)(HSQUIRRELVM,const SQChar * ,...);
00264
00265 typedef SQInteger (*SQWRITEFUNC)(SQUserPointer,SQUserPointer,SQInteger);
00266 typedef SQInteger (*SQREADFUNC)(SQUserPointer,SQUserPointer,SQInteger);
00267
00268 typedef SQInteger (*SQLEXREADFUNC)(SQUserPointer);
00269
00270 typedef struct tagSQRegFunction{
00271 const SQChar *name;
00272 SQFUNCTION f;
00273 SQInteger nparamscheck;
00274 const SQChar *typemask;
00275 }SQRegFunction;
00276
00277
00278 SQUIRREL_API bool sq_can_suspend(HSQUIRRELVM v);
00279 SQUIRREL_API HSQUIRRELVM sq_open(SQInteger initialstacksize);
00280 SQUIRREL_API HSQUIRRELVM sq_newthread(HSQUIRRELVM friendvm, SQInteger initialstacksize);
00281 SQUIRREL_API void sq_seterrorhandler(HSQUIRRELVM v);
00282 SQUIRREL_API void sq_close(HSQUIRRELVM v);
00283 SQUIRREL_API void sq_setforeignptr(HSQUIRRELVM v,SQUserPointer p);
00284 SQUIRREL_API SQUserPointer sq_getforeignptr(HSQUIRRELVM v);
00285 SQUIRREL_API void sq_setprintfunc(HSQUIRRELVM v, SQPRINTFUNCTION printfunc);
00286 SQUIRREL_API SQPRINTFUNCTION sq_getprintfunc(HSQUIRRELVM v);
00287 SQUIRREL_API SQRESULT sq_suspendvm(HSQUIRRELVM v);
00288 SQUIRREL_API bool sq_resumecatch(HSQUIRRELVM v, int suspend = -1);
00289 SQUIRREL_API bool sq_resumeerror(HSQUIRRELVM v);
00290 SQUIRREL_API SQRESULT sq_wakeupvm(HSQUIRRELVM v,SQBool resumedret,SQBool retval,SQBool raiseerror);
00291 SQUIRREL_API SQInteger sq_getvmstate(HSQUIRRELVM v);
00292
00293
00294 SQUIRREL_API SQRESULT sq_compile(HSQUIRRELVM v,SQLEXREADFUNC read,SQUserPointer p,const SQChar *sourcename,SQBool raiseerror);
00295 SQUIRREL_API SQRESULT sq_compilebuffer(HSQUIRRELVM v,const SQChar *s,SQInteger size,const SQChar *sourcename,SQBool raiseerror);
00296 SQUIRREL_API void sq_enabledebuginfo(HSQUIRRELVM v, SQBool enable);
00297 SQUIRREL_API void sq_notifyallexceptions(HSQUIRRELVM v, SQBool enable);
00298 SQUIRREL_API void sq_setcompilererrorhandler(HSQUIRRELVM v,SQCOMPILERERROR f);
00299
00300
00301 SQUIRREL_API void sq_push(HSQUIRRELVM v,SQInteger idx);
00302 SQUIRREL_API void sq_pop(HSQUIRRELVM v,SQInteger nelemstopop);
00303 SQUIRREL_API void sq_poptop(HSQUIRRELVM v);
00304 SQUIRREL_API void sq_remove(HSQUIRRELVM v,SQInteger idx);
00305 SQUIRREL_API SQInteger sq_gettop(HSQUIRRELVM v);
00306 SQUIRREL_API void sq_settop(HSQUIRRELVM v,SQInteger newtop);
00307 SQUIRREL_API void sq_reservestack(HSQUIRRELVM v,SQInteger nsize);
00308 SQUIRREL_API SQInteger sq_cmp(HSQUIRRELVM v);
00309 SQUIRREL_API void sq_move(HSQUIRRELVM dest,HSQUIRRELVM src,SQInteger idx);
00310
00311
00312 SQUIRREL_API SQUserPointer sq_newuserdata(HSQUIRRELVM v,SQUnsignedInteger size);
00313 SQUIRREL_API void sq_newtable(HSQUIRRELVM v);
00314 SQUIRREL_API void sq_newarray(HSQUIRRELVM v,SQInteger size);
00315 SQUIRREL_API void sq_newclosure(HSQUIRRELVM v,SQFUNCTION func,SQUnsignedInteger nfreevars);
00316 SQUIRREL_API SQRESULT sq_setparamscheck(HSQUIRRELVM v,SQInteger nparamscheck,const SQChar *typemask);
00317 SQUIRREL_API SQRESULT sq_bindenv(HSQUIRRELVM v,SQInteger idx);
00318 SQUIRREL_API void sq_pushstring(HSQUIRRELVM v,const SQChar *s,SQInteger len);
00319 SQUIRREL_API void sq_pushfloat(HSQUIRRELVM v,SQFloat f);
00320 SQUIRREL_API void sq_pushinteger(HSQUIRRELVM v,SQInteger n);
00321 SQUIRREL_API void sq_pushbool(HSQUIRRELVM v,SQBool b);
00322 SQUIRREL_API void sq_pushuserpointer(HSQUIRRELVM v,SQUserPointer p);
00323 SQUIRREL_API void sq_pushnull(HSQUIRRELVM v);
00324 SQUIRREL_API SQObjectType sq_gettype(HSQUIRRELVM v,SQInteger idx);
00325 SQUIRREL_API SQInteger sq_getsize(HSQUIRRELVM v,SQInteger idx);
00326 SQUIRREL_API SQRESULT sq_getbase(HSQUIRRELVM v,SQInteger idx);
00327 SQUIRREL_API SQBool sq_instanceof(HSQUIRRELVM v);
00328 SQUIRREL_API void sq_tostring(HSQUIRRELVM v,SQInteger idx);
00329 SQUIRREL_API void sq_tobool(HSQUIRRELVM v, SQInteger idx, SQBool *b);
00330 SQUIRREL_API SQRESULT sq_getstring(HSQUIRRELVM v,SQInteger idx,const SQChar **c);
00331 SQUIRREL_API SQRESULT sq_getinteger(HSQUIRRELVM v,SQInteger idx,SQInteger *i);
00332 SQUIRREL_API SQRESULT sq_getfloat(HSQUIRRELVM v,SQInteger idx,SQFloat *f);
00333 SQUIRREL_API SQRESULT sq_getbool(HSQUIRRELVM v,SQInteger idx,SQBool *b);
00334 SQUIRREL_API SQRESULT sq_getthread(HSQUIRRELVM v,SQInteger idx,HSQUIRRELVM *thread);
00335 SQUIRREL_API SQRESULT sq_getuserpointer(HSQUIRRELVM v,SQInteger idx,SQUserPointer *p);
00336 SQUIRREL_API SQRESULT sq_getuserdata(HSQUIRRELVM v,SQInteger idx,SQUserPointer *p,SQUserPointer *typetag);
00337 SQUIRREL_API SQRESULT sq_settypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer typetag);
00338 SQUIRREL_API SQRESULT sq_gettypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer *typetag);
00339 SQUIRREL_API void sq_setreleasehook(HSQUIRRELVM v,SQInteger idx,SQRELEASEHOOK hook);
00340 SQUIRREL_API SQChar *sq_getscratchpad(HSQUIRRELVM v,SQInteger minsize);
00341 SQUIRREL_API SQRESULT sq_getclosureinfo(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger *nparams,SQUnsignedInteger *nfreevars);
00342 SQUIRREL_API SQRESULT sq_setnativeclosurename(HSQUIRRELVM v,SQInteger idx,const SQChar *name);
00343 SQUIRREL_API SQRESULT sq_setinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer p);
00344 SQUIRREL_API SQRESULT sq_getinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer *p,SQUserPointer typetag);
00345 SQUIRREL_API SQRESULT sq_setclassudsize(HSQUIRRELVM v, SQInteger idx, SQInteger udsize);
00346 SQUIRREL_API SQRESULT sq_newclass(HSQUIRRELVM v,SQBool hasbase);
00347 SQUIRREL_API SQRESULT sq_createinstance(HSQUIRRELVM v,SQInteger idx);
00348 SQUIRREL_API SQRESULT sq_setattributes(HSQUIRRELVM v,SQInteger idx);
00349 SQUIRREL_API SQRESULT sq_getattributes(HSQUIRRELVM v,SQInteger idx);
00350 SQUIRREL_API SQRESULT sq_getclass(HSQUIRRELVM v,SQInteger idx);
00351 SQUIRREL_API void sq_weakref(HSQUIRRELVM v,SQInteger idx);
00352 SQUIRREL_API SQRESULT sq_getdefaultdelegate(HSQUIRRELVM v,SQObjectType t);
00353
00354
00355 SQUIRREL_API void sq_pushroottable(HSQUIRRELVM v);
00356 SQUIRREL_API void sq_pushregistrytable(HSQUIRRELVM v);
00357 SQUIRREL_API void sq_pushconsttable(HSQUIRRELVM v);
00358 SQUIRREL_API SQRESULT sq_setroottable(HSQUIRRELVM v);
00359 SQUIRREL_API SQRESULT sq_setconsttable(HSQUIRRELVM v);
00360 SQUIRREL_API SQRESULT sq_newslot(HSQUIRRELVM v, SQInteger idx, SQBool bstatic);
00361 SQUIRREL_API SQRESULT sq_deleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval);
00362 SQUIRREL_API SQRESULT sq_set(HSQUIRRELVM v,SQInteger idx);
00363 SQUIRREL_API SQRESULT sq_get(HSQUIRRELVM v,SQInteger idx);
00364 SQUIRREL_API SQRESULT sq_rawget(HSQUIRRELVM v,SQInteger idx);
00365 SQUIRREL_API SQRESULT sq_rawset(HSQUIRRELVM v,SQInteger idx);
00366 SQUIRREL_API SQRESULT sq_rawdeleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval);
00367 SQUIRREL_API SQRESULT sq_arrayappend(HSQUIRRELVM v,SQInteger idx);
00368 SQUIRREL_API SQRESULT sq_arraypop(HSQUIRRELVM v,SQInteger idx,SQBool pushval);
00369 SQUIRREL_API SQRESULT sq_arrayresize(HSQUIRRELVM v,SQInteger idx,SQInteger newsize);
00370 SQUIRREL_API SQRESULT sq_arrayreverse(HSQUIRRELVM v,SQInteger idx);
00371 SQUIRREL_API SQRESULT sq_arrayremove(HSQUIRRELVM v,SQInteger idx,SQInteger itemidx);
00372 SQUIRREL_API SQRESULT sq_arrayinsert(HSQUIRRELVM v,SQInteger idx,SQInteger destpos);
00373 SQUIRREL_API SQRESULT sq_setdelegate(HSQUIRRELVM v,SQInteger idx);
00374 SQUIRREL_API SQRESULT sq_getdelegate(HSQUIRRELVM v,SQInteger idx);
00375 SQUIRREL_API SQRESULT sq_clone(HSQUIRRELVM v,SQInteger idx);
00376 SQUIRREL_API SQRESULT sq_setfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval);
00377 SQUIRREL_API SQRESULT sq_next(HSQUIRRELVM v,SQInteger idx);
00378 SQUIRREL_API SQRESULT sq_getweakrefval(HSQUIRRELVM v,SQInteger idx);
00379 SQUIRREL_API SQRESULT sq_clear(HSQUIRRELVM v,SQInteger idx);
00380
00381
00382 SQUIRREL_API SQRESULT sq_call(HSQUIRRELVM v,SQInteger params,SQBool retval,SQBool raiseerror, int suspend = -1);
00383 SQUIRREL_API SQRESULT sq_resume(HSQUIRRELVM v,SQBool retval,SQBool raiseerror);
00384 SQUIRREL_API const SQChar *sq_getlocal(HSQUIRRELVM v,SQUnsignedInteger level,SQUnsignedInteger idx);
00385 SQUIRREL_API const SQChar *sq_getfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval);
00386 SQUIRREL_API SQRESULT sq_throwerror(HSQUIRRELVM v,const SQChar *err);
00387 SQUIRREL_API void sq_reseterror(HSQUIRRELVM v);
00388 SQUIRREL_API void sq_getlasterror(HSQUIRRELVM v);
00389
00390
00391 SQUIRREL_API SQRESULT sq_getstackobj(HSQUIRRELVM v,SQInteger idx,HSQOBJECT *po);
00392 SQUIRREL_API void sq_pushobject(HSQUIRRELVM v,HSQOBJECT obj);
00393 SQUIRREL_API void sq_addref(HSQUIRRELVM v,HSQOBJECT *po);
00394 SQUIRREL_API SQBool sq_release(HSQUIRRELVM v,HSQOBJECT *po);
00395 SQUIRREL_API void sq_resetobject(HSQOBJECT *po);
00396 SQUIRREL_API const SQChar *sq_objtostring(HSQOBJECT *o);
00397 SQUIRREL_API SQBool sq_objtobool(HSQOBJECT *o);
00398 SQUIRREL_API SQInteger sq_objtointeger(HSQOBJECT *o);
00399 SQUIRREL_API SQFloat sq_objtofloat(HSQOBJECT *o);
00400 SQUIRREL_API SQRESULT sq_getobjtypetag(HSQOBJECT *o,SQUserPointer * typetag);
00401
00402
00403 SQUIRREL_API SQInteger sq_collectgarbage(HSQUIRRELVM v);
00404
00405
00406 SQUIRREL_API SQRESULT sq_writeclosure(HSQUIRRELVM vm,SQWRITEFUNC writef,SQUserPointer up);
00407 SQUIRREL_API SQRESULT sq_readclosure(HSQUIRRELVM vm,SQREADFUNC readf,SQUserPointer up);
00408
00409
00410 SQUIRREL_API void *sq_malloc(SQUnsignedInteger size);
00411 SQUIRREL_API void *sq_realloc(void* p,SQUnsignedInteger oldsize,SQUnsignedInteger newsize);
00412 SQUIRREL_API void sq_free(void *p,SQUnsignedInteger size);
00413
00414
00415 SQUIRREL_API SQRESULT sq_stackinfos(HSQUIRRELVM v,SQInteger level,SQStackInfos *si);
00416 SQUIRREL_API void sq_setdebughook(HSQUIRRELVM v);
00417
00418
00419 #define sq_isnumeric(o) ((o)._type&SQOBJECT_NUMERIC)
00420 #define sq_istable(o) ((o)._type==OT_TABLE)
00421 #define sq_isarray(o) ((o)._type==OT_ARRAY)
00422 #define sq_isfunction(o) ((o)._type==OT_FUNCPROTO)
00423 #define sq_isclosure(o) ((o)._type==OT_CLOSURE)
00424 #define sq_isgenerator(o) ((o)._type==OT_GENERATOR)
00425 #define sq_isnativeclosure(o) ((o)._type==OT_NATIVECLOSURE)
00426 #define sq_isstring(o) ((o)._type==OT_STRING)
00427 #define sq_isinteger(o) ((o)._type==OT_INTEGER)
00428 #define sq_isfloat(o) ((o)._type==OT_FLOAT)
00429 #define sq_isuserpointer(o) ((o)._type==OT_USERPOINTER)
00430 #define sq_isuserdata(o) ((o)._type==OT_USERDATA)
00431 #define sq_isthread(o) ((o)._type==OT_THREAD)
00432 #define sq_isnull(o) ((o)._type==OT_NULL)
00433 #define sq_isclass(o) ((o)._type==OT_CLASS)
00434 #define sq_isinstance(o) ((o)._type==OT_INSTANCE)
00435 #define sq_isbool(o) ((o)._type==OT_BOOL)
00436 #define sq_isweakref(o) ((o)._type==OT_WEAKREF)
00437 #define sq_type(o) ((o)._type)
00438
00439
00440 #define sq_createslot(v,n) sq_newslot(v,n,SQFalse)
00441
00442 #define SQ_OK (0)
00443 #define SQ_ERROR (-1)
00444
00445 #define SQ_FAILED(res) (res<0)
00446 #define SQ_SUCCEEDED(res) (res>=0)
00447
00448 #ifdef __cplusplus
00449 }
00450 #endif
00451
00452 #endif