Revert "Update to SQUIRREL 3.0.4"
[supertux.git] / external / squirrel / include / squirrel.h
old mode 100644 (file)
new mode 100755 (executable)
index da3a4d1..df1f7fe
@@ -1,23 +1,32 @@
 /*\r
-Copyright (c) 2003-2012 Alberto Demichelis\r
-\r
-Permission is hereby granted, free of charge, to any person obtaining a copy\r
-of this software and associated documentation files (the "Software"), to deal\r
-in the Software without restriction, including without limitation the rights\r
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r
-copies of the Software, and to permit persons to whom the Software is\r
-furnished to do so, subject to the following conditions:\r
-\r
-The above copyright notice and this permission notice shall be included in\r
-all copies or substantial portions of the Software.\r
-\r
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r
-THE SOFTWARE.\r
+Copyright (c) 2003-2011 Alberto Demichelis\r
+\r
+This software is provided 'as-is', without any \r
+express or implied warranty. In no event will the \r
+authors be held liable for any damages arising from \r
+the use of this software.\r
+\r
+Permission is granted to anyone to use this software \r
+for any purpose, including commercial applications, \r
+and to alter it and redistribute it freely, subject \r
+to the following restrictions:\r
+\r
+               1. The origin of this software must not be \r
+               misrepresented; you must not claim that \r
+               you wrote the original software. If you \r
+               use this software in a product, an \r
+               acknowledgment in the product \r
+               documentation would be appreciated but is \r
+               not required.\r
+\r
+               2. Altered source versions must be plainly \r
+               marked as such, and must not be \r
+               misrepresented as being the original \r
+               software.\r
+\r
+               3. This notice may not be removed or \r
+               altered from any source distribution.\r
+\r
 */\r
 #ifndef _SQUIRREL_H_\r
 #define _SQUIRREL_H_\r
@@ -36,23 +45,21 @@ extern "C" {
 #endif\r
 #endif\r
 \r
-#ifdef _SQ64\r
 \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 long SQInteger;\r
-typedef unsigned long long SQUnsignedInteger;\r
-typedef unsigned long long SQHash; /*should be the same size of a pointer*/\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
-typedef unsigned int SQUnsignedInteger32;\r
 #else \r
 typedef int SQInteger;\r
 typedef int SQInt32; /*must be 32 bits(also on 64bits processors)*/\r
-typedef unsigned int SQUnsignedInteger32; /*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
 #endif\r
@@ -76,14 +83,6 @@ typedef SQUnsignedInteger SQRawObjectVal; //is 32 bits on 32 bits builds and 64
 #define SQ_OBJECT_RAWINIT()\r
 #endif\r
 \r
-#ifndef SQ_ALIGNMENT // SQ_ALIGNMENT shall be less than or equal to SQ_MALLOC alignments, and its value shall be power of 2.\r
-#if defined(SQUSEDOUBLE) || defined(_SQ64)\r
-#define SQ_ALIGNMENT 8\r
-#else\r
-#define SQ_ALIGNMENT 4\r
-#endif\r
-#endif\r
-\r
 typedef void* SQUserPointer;\r
 typedef SQUnsignedInteger SQBool;\r
 typedef SQInteger SQRESULT;\r
@@ -104,7 +103,6 @@ struct SQRefCounted;
 struct SQClass;\r
 struct SQInstance;\r
 struct SQDelegable;\r
-struct SQOuter;\r
 \r
 #ifdef _UNICODE\r
 #define SQUNICODE\r
@@ -113,7 +111,7 @@ struct SQOuter;
 #ifdef SQUNICODE\r
 #if (defined(_MSC_VER) && _MSC_VER >= 1400) // 1400 = VS8\r
 \r
-#if !defined(_NATIVE_WCHAR_T_DEFINED) //this is if the compiler considers wchar_t as native type\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
 \r
@@ -127,11 +125,7 @@ typedef wchar_t SQChar;
 #define scsprintf      swprintf\r
 #define scstrlen       wcslen\r
 #define scstrtod       wcstod\r
-#ifdef _SQ64\r
-#define scstrtol       _wcstoi64\r
-#else\r
 #define scstrtol       wcstol\r
-#endif\r
 #define scatoi         _wtoi\r
 #define scstrtoul      wcstoul\r
 #define scvsprintf     vswprintf\r
@@ -151,15 +145,7 @@ typedef char SQChar;
 #define scsprintf      sprintf\r
 #define scstrlen       strlen\r
 #define scstrtod       strtod\r
-#ifdef _SQ64\r
-#ifdef _MSC_VER\r
-#define scstrtol       _strtoi64\r
-#else\r
-#define scstrtol       strtoll\r
-#endif\r
-#else\r
 #define scstrtol       strtol\r
-#endif\r
 #define scatoi         atoi\r
 #define scstrtoul      strtoul\r
 #define scvsprintf     vsprintf\r
@@ -174,17 +160,10 @@ typedef char SQChar;
 #define MAX_CHAR 0xFF\r
 #endif\r
 \r
-#ifdef _SQ64\r
-#define _PRINT_INT_PREC _SC("ll")\r
-#define _PRINT_INT_FMT _SC("%lld")\r
-#else\r
-#define _PRINT_INT_FMT _SC("%d")\r
-#endif\r
-\r
-#define SQUIRREL_VERSION       _SC("Squirrel 3.0.4 stable")\r
-#define SQUIRREL_COPYRIGHT     _SC("Copyright (C) 2003-2012 Alberto Demichelis")\r
+#define SQUIRREL_VERSION       _SC("Squirrel 2.2.5 stable")\r
+#define SQUIRREL_COPYRIGHT     _SC("Copyright (C) 2003-2010 Alberto Demichelis")\r
 #define SQUIRREL_AUTHOR                _SC("Alberto Demichelis")\r
-#define SQUIRREL_VERSION_NUMBER        304\r
+#define SQUIRREL_VERSION_NUMBER        225\r
 \r
 #define SQ_VMSTATE_IDLE                        0\r
 #define SQ_VMSTATE_RUNNING             1\r
@@ -220,7 +199,6 @@ typedef char SQChar;
 #define _RT_CLASS                      0x00004000\r
 #define _RT_INSTANCE           0x00008000\r
 #define _RT_WEAKREF                    0x00010000\r
-#define _RT_OUTER                      0x00020000\r
 \r
 typedef enum tagSQObjectType{\r
        OT_NULL =                       (_RT_NULL|SQOBJECT_CANBEFALSE),\r
@@ -239,8 +217,7 @@ typedef enum tagSQObjectType{
        OT_FUNCPROTO =          (_RT_FUNCPROTO|SQOBJECT_REF_COUNTED), //internal usage only\r
        OT_CLASS =                      (_RT_CLASS|SQOBJECT_REF_COUNTED),\r
        OT_INSTANCE =           (_RT_INSTANCE|SQOBJECT_REF_COUNTED|SQOBJECT_DELEGABLE),\r
-       OT_WEAKREF =            (_RT_WEAKREF|SQOBJECT_REF_COUNTED),\r
-       OT_OUTER =                      (_RT_OUTER|SQOBJECT_REF_COUNTED) //internal usage only\r
+       OT_WEAKREF =            (_RT_WEAKREF|SQOBJECT_REF_COUNTED)\r
 }SQObjectType;\r
 \r
 #define ISREFCOUNTED(t) (t&SQOBJECT_REF_COUNTED)\r
@@ -251,7 +228,6 @@ typedef union tagSQObjectValue
        struct SQTable *pTable;\r
        struct SQArray *pArray;\r
        struct SQClosure *pClosure;\r
-       struct SQOuter *pOuter;\r
        struct SQGenerator *pGenerator;\r
        struct SQNativeClosure *pNativeClosure;\r
        struct SQString *pString;\r
@@ -276,11 +252,6 @@ typedef struct tagSQObject
        SQObjectValue _unVal;\r
 }SQObject;\r
 \r
-typedef struct  tagSQMemberHandle{\r
-       SQBool _static;\r
-       SQInteger _index;\r
-}SQMemberHandle;\r
-\r
 typedef struct tagSQStackInfos{\r
        const SQChar* funcname;\r
        const SQChar* source;\r
@@ -289,12 +260,11 @@ typedef struct tagSQStackInfos{
 \r
 typedef struct SQVM* HSQUIRRELVM;\r
 typedef SQObject HSQOBJECT;\r
-typedef SQMemberHandle HSQMEMBERHANDLE;\r
 typedef SQInteger (*SQFUNCTION)(HSQUIRRELVM);\r
 typedef SQInteger (*SQRELEASEHOOK)(SQUserPointer,SQInteger size);\r
 typedef void (*SQCOMPILERERROR)(HSQUIRRELVM,const SQChar * /*desc*/,const SQChar * /*source*/,SQInteger /*line*/,SQInteger /*column*/);\r
 typedef void (*SQPRINTFUNCTION)(HSQUIRRELVM,const SQChar * ,...);\r
-typedef void (*SQDEBUGHOOK)(HSQUIRRELVM /*v*/, SQInteger /*type*/, const SQChar * /*sourcename*/, SQInteger /*line*/, const SQChar * /*funcname*/);\r
+\r
 typedef SQInteger (*SQWRITEFUNC)(SQUserPointer,SQUserPointer,SQInteger);\r
 typedef SQInteger (*SQREADFUNC)(SQUserPointer,SQUserPointer,SQInteger);\r
 \r
@@ -313,6 +283,7 @@ typedef struct tagSQFunctionInfo {
        const SQChar *source;\r
 }SQFunctionInfo;\r
 \r
+\r
 /*vm*/\r
 SQUIRREL_API HSQUIRRELVM sq_open(SQInteger initialstacksize);\r
 SQUIRREL_API HSQUIRRELVM sq_newthread(HSQUIRRELVM friendvm, SQInteger initialstacksize);\r
@@ -320,13 +291,11 @@ SQUIRREL_API void sq_seterrorhandler(HSQUIRRELVM v);
 SQUIRREL_API void sq_close(HSQUIRRELVM v);\r
 SQUIRREL_API void sq_setforeignptr(HSQUIRRELVM v,SQUserPointer p);\r
 SQUIRREL_API SQUserPointer sq_getforeignptr(HSQUIRRELVM v);\r
-SQUIRREL_API void sq_setprintfunc(HSQUIRRELVM v, SQPRINTFUNCTION printfunc,SQPRINTFUNCTION errfunc);\r
+SQUIRREL_API void sq_setprintfunc(HSQUIRRELVM v, SQPRINTFUNCTION printfunc);\r
 SQUIRREL_API SQPRINTFUNCTION sq_getprintfunc(HSQUIRRELVM v);\r
-SQUIRREL_API SQPRINTFUNCTION sq_geterrorfunc(HSQUIRRELVM v);\r
 SQUIRREL_API SQRESULT sq_suspendvm(HSQUIRRELVM v);\r
 SQUIRREL_API SQRESULT sq_wakeupvm(HSQUIRRELVM v,SQBool resumedret,SQBool retval,SQBool raiseerror,SQBool throwerror);\r
 SQUIRREL_API SQInteger sq_getvmstate(HSQUIRRELVM v);\r
-SQUIRREL_API SQInteger sq_getversion();\r
 \r
 /*compiler*/\r
 SQUIRREL_API SQRESULT sq_compile(HSQUIRRELVM v,SQLEXREADFUNC read,SQUserPointer p,const SQChar *sourcename,SQBool raiseerror);\r
@@ -342,14 +311,13 @@ SQUIRREL_API void sq_poptop(HSQUIRRELVM v);
 SQUIRREL_API void sq_remove(HSQUIRRELVM v,SQInteger idx);\r
 SQUIRREL_API SQInteger sq_gettop(HSQUIRRELVM v);\r
 SQUIRREL_API void sq_settop(HSQUIRRELVM v,SQInteger newtop);\r
-SQUIRREL_API SQRESULT sq_reservestack(HSQUIRRELVM v,SQInteger nsize);\r
+SQUIRREL_API void sq_reservestack(HSQUIRRELVM v,SQInteger nsize);\r
 SQUIRREL_API SQInteger sq_cmp(HSQUIRRELVM v);\r
 SQUIRREL_API void sq_move(HSQUIRRELVM dest,HSQUIRRELVM src,SQInteger idx);\r
 \r
 /*object creation handling*/\r
 SQUIRREL_API SQUserPointer sq_newuserdata(HSQUIRRELVM v,SQUnsignedInteger size);\r
 SQUIRREL_API void sq_newtable(HSQUIRRELVM v);\r
-SQUIRREL_API void sq_newtableex(HSQUIRRELVM v,SQInteger initialcapacity);\r
 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
@@ -361,12 +329,10 @@ SQUIRREL_API void sq_pushbool(HSQUIRRELVM v,SQBool b);
 SQUIRREL_API void sq_pushuserpointer(HSQUIRRELVM v,SQUserPointer p);\r
 SQUIRREL_API void sq_pushnull(HSQUIRRELVM v);\r
 SQUIRREL_API SQObjectType sq_gettype(HSQUIRRELVM v,SQInteger idx);\r
-SQUIRREL_API SQRESULT sq_typeof(HSQUIRRELVM v,SQInteger idx);\r
 SQUIRREL_API SQInteger sq_getsize(HSQUIRRELVM v,SQInteger idx);\r
-SQUIRREL_API SQHash sq_gethash(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 SQRESULT sq_tostring(HSQUIRRELVM v,SQInteger idx);\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
@@ -379,9 +345,8 @@ SQUIRREL_API SQRESULT sq_settypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer ty
 SQUIRREL_API SQRESULT sq_gettypetag(HSQUIRRELVM v,SQInteger idx,SQUserPointer *typetag);\r
 SQUIRREL_API void sq_setreleasehook(HSQUIRRELVM v,SQInteger idx,SQRELEASEHOOK hook);\r
 SQUIRREL_API SQChar *sq_getscratchpad(HSQUIRRELVM v,SQInteger minsize);\r
-SQUIRREL_API SQRESULT sq_getfunctioninfo(HSQUIRRELVM v,SQInteger level,SQFunctionInfo *fi);\r
+SQUIRREL_API SQRESULT sq_getfunctioninfo(HSQUIRRELVM v,SQInteger idx,SQFunctionInfo *fi);\r
 SQUIRREL_API SQRESULT sq_getclosureinfo(HSQUIRRELVM v,SQInteger idx,SQUnsignedInteger *nparams,SQUnsignedInteger *nfreevars);\r
-SQUIRREL_API SQRESULT sq_getclosurename(HSQUIRRELVM v,SQInteger idx);\r
 SQUIRREL_API SQRESULT sq_setnativeclosurename(HSQUIRRELVM v,SQInteger idx,const SQChar *name);\r
 SQUIRREL_API SQRESULT sq_setinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer p);\r
 SQUIRREL_API SQRESULT sq_getinstanceup(HSQUIRRELVM v, SQInteger idx, SQUserPointer *p,SQUserPointer typetag);\r
@@ -393,9 +358,6 @@ SQUIRREL_API SQRESULT sq_getattributes(HSQUIRRELVM v,SQInteger idx);
 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
-SQUIRREL_API SQRESULT sq_getmemberhandle(HSQUIRRELVM v,SQInteger idx,HSQMEMBERHANDLE *handle);\r
-SQUIRREL_API SQRESULT sq_getbyhandle(HSQUIRRELVM v,SQInteger idx,const HSQMEMBERHANDLE *handle);\r
-SQUIRREL_API SQRESULT sq_setbyhandle(HSQUIRRELVM v,SQInteger idx,const HSQMEMBERHANDLE *handle);\r
 \r
 /*object manipulation*/\r
 SQUIRREL_API void sq_pushroottable(HSQUIRRELVM v);\r
@@ -410,8 +372,6 @@ SQUIRREL_API SQRESULT sq_get(HSQUIRRELVM v,SQInteger idx);
 SQUIRREL_API SQRESULT sq_rawget(HSQUIRRELVM v,SQInteger idx);\r
 SQUIRREL_API SQRESULT sq_rawset(HSQUIRRELVM v,SQInteger idx);\r
 SQUIRREL_API SQRESULT sq_rawdeleteslot(HSQUIRRELVM v,SQInteger idx,SQBool pushval);\r
-SQUIRREL_API SQRESULT sq_newmember(HSQUIRRELVM v,SQInteger idx,SQBool bstatic);\r
-SQUIRREL_API SQRESULT sq_rawnewmember(HSQUIRRELVM v,SQInteger idx,SQBool bstatic);\r
 SQUIRREL_API SQRESULT sq_arrayappend(HSQUIRRELVM v,SQInteger idx);\r
 SQUIRREL_API SQRESULT sq_arraypop(HSQUIRRELVM v,SQInteger idx,SQBool pushval); \r
 SQUIRREL_API SQRESULT sq_arrayresize(HSQUIRRELVM v,SQInteger idx,SQInteger newsize); \r
@@ -430,10 +390,8 @@ SQUIRREL_API SQRESULT sq_clear(HSQUIRRELVM v,SQInteger idx);
 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 SQRESULT sq_getcallee(HSQUIRRELVM v);\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
-SQUIRREL_API SQRESULT sq_throwobject(HSQUIRRELVM v);\r
 SQUIRREL_API void sq_reseterror(HSQUIRRELVM v);\r
 SQUIRREL_API void sq_getlasterror(HSQUIRRELVM v);\r
 \r
@@ -442,18 +400,15 @@ SQUIRREL_API SQRESULT sq_getstackobj(HSQUIRRELVM v,SQInteger idx,HSQOBJECT *po);
 SQUIRREL_API void sq_pushobject(HSQUIRRELVM v,HSQOBJECT obj);\r
 SQUIRREL_API void sq_addref(HSQUIRRELVM v,HSQOBJECT *po);\r
 SQUIRREL_API SQBool sq_release(HSQUIRRELVM v,HSQOBJECT *po);\r
-SQUIRREL_API SQUnsignedInteger sq_getrefcount(HSQUIRRELVM v,HSQOBJECT *po);\r
 SQUIRREL_API void sq_resetobject(HSQOBJECT *po);\r
-SQUIRREL_API const SQChar *sq_objtostring(const HSQOBJECT *o);\r
-SQUIRREL_API SQBool sq_objtobool(const HSQOBJECT *o);\r
-SQUIRREL_API SQInteger sq_objtointeger(const HSQOBJECT *o);\r
-SQUIRREL_API SQFloat sq_objtofloat(const HSQOBJECT *o);\r
-SQUIRREL_API SQUserPointer sq_objtouserpointer(const HSQOBJECT *o);\r
-SQUIRREL_API SQRESULT sq_getobjtypetag(const HSQOBJECT *o,SQUserPointer * typetag);\r
+SQUIRREL_API const SQChar *sq_objtostring(HSQOBJECT *o);\r
+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
-SQUIRREL_API SQRESULT sq_resurrectunreachable(HSQUIRRELVM v);\r
 \r
 /*serialization*/\r
 SQUIRREL_API SQRESULT sq_writeclosure(HSQUIRRELVM vm,SQWRITEFUNC writef,SQUserPointer up);\r
@@ -467,7 +422,6 @@ SQUIRREL_API void sq_free(void *p,SQUnsignedInteger size);
 /*debug*/\r
 SQUIRREL_API SQRESULT sq_stackinfos(HSQUIRRELVM v,SQInteger level,SQStackInfos *si);\r
 SQUIRREL_API void sq_setdebughook(HSQUIRRELVM v);\r
-SQUIRREL_API void sq_setnativedebughook(HSQUIRRELVM v,SQDEBUGHOOK hook);\r
 \r
 /*UTILITY MACRO*/\r
 #define sq_isnumeric(o) ((o)._type&SQOBJECT_NUMERIC)\r