- Avoid some expensive SDL_GetTicks() calls
[supertux.git] / src / squirrel / include / squirrel.h
index d301f83..12fb4d5 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-Copyright (c) 2003-2005 Alberto Demichelis\r
+Copyright (c) 2003-2006 Alberto Demichelis\r
 \r
 This software is provided 'as-is', without any \r
 express or implied warranty. In no event will the \r
@@ -39,12 +39,26 @@ extern "C" {
 #define SQUIRREL_API extern\r
 #endif\r
 \r
-typedef float SQFloat;\r
+#ifdef _SQ64\r
+#ifdef _MSC_VER\r
+typedef __int64 SQInteger;\r
+typedef unsigned __int64 SQUnsignedInteger;\r
+typedef unsigned __int64 SQHash; /*should be the same size of a pointer*/\r
+#else\r
+typedef long SQInteger;\r
+typedef unsigned long SQUnsignedInteger;\r
+typedef unsigned long SQHash; /*should be the same size of a pointer*/\r
+#endif\r
+typedef int SQInt32; \r
+#else \r
 typedef int SQInteger;\r
-typedef int SQInt32; //must be 32 bits(also on 64bits processors)\r
-typedef void* SQUserPointer;\r
+typedef int SQInt32; /*must be 32 bits(also on 64bits processors)*/\r
 typedef unsigned int SQUnsignedInteger;\r
-typedef unsigned int SQHash; //should be the same size of a pointer\r
+typedef unsigned int SQHash; /*should be the same size of a pointer*/\r
+#endif\r
+\r
+typedef float SQFloat;\r
+typedef void* SQUserPointer;\r
 typedef SQUnsignedInteger SQBool;\r
 typedef SQInteger SQRESULT;\r
 \r
@@ -71,7 +85,10 @@ struct SQDelegable;
 #endif\r
 \r
 #ifdef SQUNICODE\r
-typedef unsigned short SQChar;\r
+#if defined(wchar_t) //this is if the compiler considers wchar_t as native type\r
+#define wchar_t unsigned short\r
+#endif\r
+typedef wchar_t SQChar;\r
 #define _SC(a) L##a\r
 #define        scstrcmp        wcscmp\r
 #define scsprintf      swprintf\r
@@ -84,6 +101,7 @@ typedef unsigned short SQChar;
 #define scstrstr       wcsstr\r
 #define scisspace      iswspace\r
 #define scisdigit      iswdigit\r
+#define scisxdigit     iswxdigit\r
 #define scisalpha      iswalpha\r
 #define sciscntrl      iswcntrl\r
 #define scisalnum      iswalnum\r
@@ -103,6 +121,7 @@ typedef char SQChar;
 #define scstrstr       strstr\r
 #define scisspace      isspace\r
 #define scisdigit      isdigit\r
+#define scisxdigit     isxdigit\r
 #define sciscntrl      iscntrl\r
 #define scisalpha      isalpha\r
 #define scisalnum      isalnum\r
@@ -110,8 +129,8 @@ typedef char SQChar;
 #define MAX_CHAR 0xFF\r
 #endif\r
 \r
-#define SQUIRREL_VERSION       _SC("Squirrel 2.0.5 stable")\r
-#define SQUIRREL_COPYRIGHT     _SC("Copyright (C) 2003-2005 Alberto Demichelis")\r
+#define SQUIRREL_VERSION       _SC("Squirrel 2.1 stable")\r
+#define SQUIRREL_COPYRIGHT     _SC("Copyright (C) 2003-2006 Alberto Demichelis")\r
 #define SQUIRREL_AUTHOR                _SC("Alberto Demichelis")\r
 \r
 #define SQ_VMSTATE_IDLE                        0\r
@@ -149,7 +168,7 @@ typedef char SQChar;
 #define _RT_INSTANCE           0x00008000\r
 #define _RT_WEAKREF                    0x00010000\r
 \r
-typedef enum {\r
+typedef enum tagSQObjectType{\r
        OT_NULL =                       (_RT_NULL|SQOBJECT_CANBEFALSE),\r
        OT_INTEGER =            (_RT_INTEGER|SQOBJECT_NUMERIC|SQOBJECT_CANBEFALSE),\r
        OT_FLOAT =                      (_RT_FLOAT|SQOBJECT_NUMERIC|SQOBJECT_CANBEFALSE),\r
@@ -235,13 +254,14 @@ SQUIRREL_API SQUserPointer sq_getforeignptr(HSQUIRRELVM v);
 SQUIRREL_API void sq_setprintfunc(HSQUIRRELVM v, SQPRINTFUNCTION printfunc);\r
 SQUIRREL_API SQPRINTFUNCTION sq_getprintfunc(HSQUIRRELVM v);\r
 SQUIRREL_API SQRESULT sq_suspendvm(HSQUIRRELVM v);\r
-SQUIRREL_API SQRESULT sq_wakeupvm(HSQUIRRELVM v,SQBool resumedret,SQBool retval);\r
+SQUIRREL_API SQRESULT sq_wakeupvm(HSQUIRRELVM v,SQBool resumedret,SQBool retval,SQBool raiseerror);\r
 SQUIRREL_API SQInteger sq_getvmstate(HSQUIRRELVM v);\r
 \r
 /*compiler*/\r
 SQUIRREL_API SQRESULT sq_compile(HSQUIRRELVM v,SQLEXREADFUNC read,SQUserPointer p,const SQChar *sourcename,SQBool raiseerror);\r
 SQUIRREL_API SQRESULT sq_compilebuffer(HSQUIRRELVM v,const SQChar *s,SQInteger size,const SQChar *sourcename,SQBool raiseerror);\r
-SQUIRREL_API void sq_enabledebuginfo(HSQUIRRELVM v, SQBool debuginfo);\r
+SQUIRREL_API void sq_enabledebuginfo(HSQUIRRELVM v, SQBool enable);\r
+SQUIRREL_API void sq_notifyallexceptions(HSQUIRRELVM v, SQBool enable);\r
 SQUIRREL_API void sq_setcompilererrorhandler(HSQUIRRELVM v,SQCOMPILERERROR f);\r
 \r
 /*stack operations*/\r
@@ -261,6 +281,7 @@ SQUIRREL_API void sq_newtable(HSQUIRRELVM v);
 SQUIRREL_API void sq_newarray(HSQUIRRELVM v,SQInteger size);\r
 SQUIRREL_API void sq_newclosure(HSQUIRRELVM v,SQFUNCTION func,SQUnsignedInteger nfreevars);\r
 SQUIRREL_API SQRESULT sq_setparamscheck(HSQUIRRELVM v,SQInteger nparamscheck,const SQChar *typemask);\r
+SQUIRREL_API SQRESULT sq_bindenv(HSQUIRRELVM v,SQInteger idx);\r
 SQUIRREL_API void sq_pushstring(HSQUIRRELVM v,const SQChar *s,SQInteger len);\r
 SQUIRREL_API void sq_pushfloat(HSQUIRRELVM v,SQFloat f);\r
 SQUIRREL_API void sq_pushinteger(HSQUIRRELVM v,SQInteger n);\r
@@ -269,7 +290,10 @@ SQUIRREL_API void sq_pushuserpointer(HSQUIRRELVM v,SQUserPointer p);
 SQUIRREL_API void sq_pushnull(HSQUIRRELVM v);\r
 SQUIRREL_API SQObjectType sq_gettype(HSQUIRRELVM v,SQInteger idx);\r
 SQUIRREL_API SQInteger sq_getsize(HSQUIRRELVM v,SQInteger idx);\r
+SQUIRREL_API SQRESULT sq_getbase(HSQUIRRELVM v,SQInteger idx);\r
+SQUIRREL_API SQBool sq_instanceof(HSQUIRRELVM v);\r
 SQUIRREL_API void sq_tostring(HSQUIRRELVM v,SQInteger idx);\r
+SQUIRREL_API void sq_tobool(HSQUIRRELVM v, SQInteger idx, SQBool *b);\r
 SQUIRREL_API SQRESULT sq_getstring(HSQUIRRELVM v,SQInteger idx,const SQChar **c);\r
 SQUIRREL_API SQRESULT sq_getinteger(HSQUIRRELVM v,SQInteger idx,SQInteger *i);\r
 SQUIRREL_API SQRESULT sq_getfloat(HSQUIRRELVM v,SQInteger idx,SQFloat *f);\r
@@ -291,12 +315,14 @@ SQUIRREL_API SQRESULT sq_setattributes(HSQUIRRELVM v,SQInteger idx);
 SQUIRREL_API SQRESULT sq_getattributes(HSQUIRRELVM v,SQInteger idx);\r
 SQUIRREL_API SQRESULT sq_getclass(HSQUIRRELVM v,SQInteger idx);\r
 SQUIRREL_API void sq_weakref(HSQUIRRELVM v,SQInteger idx);\r
+SQUIRREL_API SQRESULT sq_getdefaultdelegate(HSQUIRRELVM v,SQObjectType t);\r
 \r
 /*object manipulation*/\r
 SQUIRREL_API void sq_pushroottable(HSQUIRRELVM v);\r
 SQUIRREL_API void sq_pushregistrytable(HSQUIRRELVM v);\r
 SQUIRREL_API SQRESULT sq_setroottable(HSQUIRRELVM v);\r
-SQUIRREL_API SQRESULT sq_createslot(HSQUIRRELVM v,SQInteger idx);\r
+/*SQUIRREL_API SQRESULT sq_createslot(HSQUIRRELVM v,SQInteger idx);*/\r
+SQRESULT sq_newslot(HSQUIRRELVM v, SQInteger idx, SQBool bstatic);\r
 SQUIRREL_API SQRESULT sq_deleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval);\r
 SQUIRREL_API SQRESULT sq_set(HSQUIRRELVM v,SQInteger idx);\r
 SQUIRREL_API SQRESULT sq_get(HSQUIRRELVM v,SQInteger idx);\r
@@ -315,8 +341,8 @@ SQUIRREL_API SQRESULT sq_next(HSQUIRRELVM v,SQInteger idx);
 SQUIRREL_API SQRESULT sq_getweakrefval(HSQUIRRELVM v,SQInteger idx);\r
 \r
 /*calls*/\r
-SQUIRREL_API SQRESULT sq_call(HSQUIRRELVM v,SQInteger params,SQBool retval);\r
-SQUIRREL_API SQRESULT sq_resume(HSQUIRRELVM v,SQBool retval);\r
+SQUIRREL_API SQRESULT sq_call(HSQUIRRELVM v,SQInteger params,SQBool retval,SQBool raiseerror);\r
+SQUIRREL_API SQRESULT sq_resume(HSQUIRRELVM v,SQBool retval,SQBool raiseerror);\r
 SQUIRREL_API const SQChar *sq_getlocal(HSQUIRRELVM v,SQUnsignedInteger level,SQUnsignedInteger idx);\r
 SQUIRREL_API const SQChar *sq_getfreevariable(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger nval);\r
 SQUIRREL_API SQRESULT sq_throwerror(HSQUIRRELVM v,const SQChar *err);\r
@@ -333,6 +359,7 @@ SQUIRREL_API const SQChar *sq_objtostring(HSQOBJECT *o);
 SQUIRREL_API SQBool sq_objtobool(HSQOBJECT *o);\r
 SQUIRREL_API SQInteger sq_objtointeger(HSQOBJECT *o);\r
 SQUIRREL_API SQFloat sq_objtofloat(HSQOBJECT *o);\r
+SQUIRREL_API SQRESULT sq_getobjtypetag(HSQOBJECT *o,SQUserPointer * typetag);\r
 \r
 /*GC*/\r
 SQUIRREL_API SQInteger sq_collectgarbage(HSQUIRRELVM v);\r
@@ -371,6 +398,9 @@ SQUIRREL_API void sq_setdebughook(HSQUIRRELVM v);
 #define sq_isweakref(o) ((o)._type==OT_WEAKREF)\r
 #define sq_type(o) ((o)._type)\r
 \r
+/* deprecated */\r
+#define sq_createslot(v,n) sq_newslot(v,n,SQFalse)\r
+\r
 #define SQ_OK (0)\r
 #define SQ_ERROR (-1)\r
 \r