--- a/src/squirrel_helper.hpp Fri Jul 13 14:44:31 2007 +0000
+++ b/src/squirrel_helper.hpp Fri Jul 13 18:10:33 2007 +0000
@@ -61,20 +61,22 @@
template <> inline int Return<bool> (HSQUIRRELVM vm, bool res) { sq_pushbool (vm, res); return 1; }
template <> inline int Return<char *> (HSQUIRRELVM vm, char *res) { if (res == NULL) sq_pushnull(vm); else sq_pushstring (vm, OTTD2FS(res), strlen(res)); free(res); return 1; }
template <> inline int Return<const char *>(HSQUIRRELVM vm, const char *res) { if (res == NULL) sq_pushnull(vm); else sq_pushstring (vm, OTTD2FS(res), strlen(res)); return 1; }
+ template <> inline int Return<void *> (HSQUIRRELVM vm, void *res) { sq_pushuserpointer(vm, res); return 1; }
/**
* To get a param from squirrel, we call this function. It converts to the right format.
*/
template <typename T> static T GetParam(ForceType<T>, HSQUIRRELVM vm, int index);
- template <> inline uint8 GetParam(ForceType<uint8> , HSQUIRRELVM vm, int index) { SQInteger tmp; sq_getinteger(vm, index, &tmp); sq_remove(vm, index); return tmp; }
- template <> inline uint16 GetParam(ForceType<uint16> , HSQUIRRELVM vm, int index) { SQInteger tmp; sq_getinteger(vm, index, &tmp); sq_remove(vm, index); return tmp; }
- template <> inline uint32 GetParam(ForceType<uint32> , HSQUIRRELVM vm, int index) { SQInteger tmp; sq_getinteger(vm, index, &tmp); sq_remove(vm, index); return tmp; }
- template <> inline int8 GetParam(ForceType<int8> , HSQUIRRELVM vm, int index) { SQInteger tmp; sq_getinteger(vm, index, &tmp); sq_remove(vm, index); return tmp; }
- template <> inline int16 GetParam(ForceType<int16> , HSQUIRRELVM vm, int index) { SQInteger tmp; sq_getinteger(vm, index, &tmp); sq_remove(vm, index); return tmp; }
- template <> inline int32 GetParam(ForceType<int32> , HSQUIRRELVM vm, int index) { SQInteger tmp; sq_getinteger(vm, index, &tmp); sq_remove(vm, index); return tmp; }
- template <> inline bool GetParam(ForceType<bool> , HSQUIRRELVM vm, int index) { SQBool tmp; sq_getbool (vm, index, &tmp); sq_remove(vm, index); return tmp != 0; }
- template <> inline const char *GetParam(ForceType<const char *>, HSQUIRRELVM vm, int index) { const SQChar *tmp; sq_getstring (vm, index, &tmp); sq_remove(vm, index); return FS2OTTD(tmp); }
+ template <> inline uint8 GetParam(ForceType<uint8> , HSQUIRRELVM vm, int index) { SQInteger tmp; sq_getinteger (vm, index, &tmp); sq_remove(vm, index); return tmp; }
+ template <> inline uint16 GetParam(ForceType<uint16> , HSQUIRRELVM vm, int index) { SQInteger tmp; sq_getinteger (vm, index, &tmp); sq_remove(vm, index); return tmp; }
+ template <> inline uint32 GetParam(ForceType<uint32> , HSQUIRRELVM vm, int index) { SQInteger tmp; sq_getinteger (vm, index, &tmp); sq_remove(vm, index); return tmp; }
+ template <> inline int8 GetParam(ForceType<int8> , HSQUIRRELVM vm, int index) { SQInteger tmp; sq_getinteger (vm, index, &tmp); sq_remove(vm, index); return tmp; }
+ template <> inline int16 GetParam(ForceType<int16> , HSQUIRRELVM vm, int index) { SQInteger tmp; sq_getinteger (vm, index, &tmp); sq_remove(vm, index); return tmp; }
+ template <> inline int32 GetParam(ForceType<int32> , HSQUIRRELVM vm, int index) { SQInteger tmp; sq_getinteger (vm, index, &tmp); sq_remove(vm, index); return tmp; }
+ template <> inline bool GetParam(ForceType<bool> , HSQUIRRELVM vm, int index) { SQBool tmp; sq_getbool (vm, index, &tmp); sq_remove(vm, index); return tmp != 0; }
+ template <> inline const char *GetParam(ForceType<const char *>, HSQUIRRELVM vm, int index) { const SQChar *tmp; sq_getstring (vm, index, &tmp); sq_remove(vm, index); return FS2OTTD(tmp); }
+ template <> inline void *GetParam(ForceType<void *> , HSQUIRRELVM vm, int index) { SQUserPointer tmp; sq_getuserpointer(vm, index, &tmp); sq_remove(vm, index); return tmp; }
/**
* Helper class to recognize the function type (retval type, args) and use the proper specialization