--- a/src/squirrel_helper.hpp Tue May 27 08:16:43 2008 +0000
+++ b/src/squirrel_helper.hpp Tue May 27 09:52:05 2008 +0000
@@ -14,8 +14,13 @@
* The Squirrel convert routines
*/
namespace SQConvert {
- struct SQConvertedStrings : SmallVector<char *, 1> {
- ~SQConvertedStrings()
+ /**
+ * Pointers assigned to this class will be free'd when this instance
+ * comes out of scope. Useful to make sure you can use strdup(),
+ * without leaking memory.
+ */
+ struct SQAutoFreePointers : SmallVector<void *, 1> {
+ ~SQAutoFreePointers()
{
for (uint i = 0; i < this->items; i++) free(this->data[i]);
}
@@ -78,17 +83,17 @@
/**
* 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, SQConvertedStrings *str);
+ template <typename T> static T GetParam(ForceType<T>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr);
- template <> inline uint8 GetParam(ForceType<uint8> , HSQUIRRELVM vm, int index, SQConvertedStrings *str) { SQInteger tmp; sq_getinteger (vm, index, &tmp); return tmp; }
- template <> inline uint16 GetParam(ForceType<uint16> , HSQUIRRELVM vm, int index, SQConvertedStrings *str) { SQInteger tmp; sq_getinteger (vm, index, &tmp); return tmp; }
- template <> inline uint32 GetParam(ForceType<uint32> , HSQUIRRELVM vm, int index, SQConvertedStrings *str) { SQInteger tmp; sq_getinteger (vm, index, &tmp); return tmp; }
- template <> inline int8 GetParam(ForceType<int8> , HSQUIRRELVM vm, int index, SQConvertedStrings *str) { SQInteger tmp; sq_getinteger (vm, index, &tmp); return tmp; }
- template <> inline int16 GetParam(ForceType<int16> , HSQUIRRELVM vm, int index, SQConvertedStrings *str) { SQInteger tmp; sq_getinteger (vm, index, &tmp); return tmp; }
- template <> inline int32 GetParam(ForceType<int32> , HSQUIRRELVM vm, int index, SQConvertedStrings *str) { SQInteger tmp; sq_getinteger (vm, index, &tmp); return tmp; }
- template <> inline bool GetParam(ForceType<bool> , HSQUIRRELVM vm, int index, SQConvertedStrings *str) { SQBool tmp; sq_getbool (vm, index, &tmp); return tmp != 0; }
- template <> inline const char *GetParam(ForceType<const char *>, HSQUIRRELVM vm, int index, SQConvertedStrings *str) { const SQChar *tmp; sq_getstring (vm, index, &tmp); char *tmp_str = *str->Append() = strdup(FS2OTTD(tmp)); return tmp_str; }
- template <> inline void *GetParam(ForceType<void *> , HSQUIRRELVM vm, int index, SQConvertedStrings *str) { SQUserPointer tmp; sq_getuserpointer(vm, index, &tmp); return tmp; }
+ template <> inline uint8 GetParam(ForceType<uint8> , HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger (vm, index, &tmp); return tmp; }
+ template <> inline uint16 GetParam(ForceType<uint16> , HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger (vm, index, &tmp); return tmp; }
+ template <> inline uint32 GetParam(ForceType<uint32> , HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger (vm, index, &tmp); return tmp; }
+ template <> inline int8 GetParam(ForceType<int8> , HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger (vm, index, &tmp); return tmp; }
+ template <> inline int16 GetParam(ForceType<int16> , HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger (vm, index, &tmp); return tmp; }
+ template <> inline int32 GetParam(ForceType<int32> , HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger (vm, index, &tmp); return tmp; }
+ template <> inline bool GetParam(ForceType<bool> , HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQBool tmp; sq_getbool (vm, index, &tmp); return tmp != 0; }
+ template <> inline const char *GetParam(ForceType<const char *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { const SQChar *tmp; sq_getstring (vm, index, &tmp); char *tmp_str = strdup(FS2OTTD(tmp)); *ptr->Append() = (void *)tmp_str; return tmp_str; }
+ template <> inline void *GetParam(ForceType<void *> , HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer tmp; sq_getuserpointer(vm, index, &tmp); return tmp; }
/**
* Helper class to recognize the function type (retval type, args) and use the proper specialization
@@ -155,9 +160,9 @@
struct HelperT<Tretval (*)(Targ1), false> {
static int SQCall(void *instance, Tretval (*func)(Targ1), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
Tretval ret = (*func)(
- GetParam(ForceType<Targ1>(), vm, 2,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr)
);
sq_pop(vm, 1);
return Return(vm, ret);
@@ -171,9 +176,9 @@
struct HelperT<Tretval (*)(Targ1), true> {
static int SQCall(void *instance, Tretval (*func)(Targ1), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
(*func)(
- GetParam(ForceType<Targ1>(), vm, 2,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr)
);
sq_pop(vm, 1);
return 0;
@@ -187,9 +192,9 @@
struct HelperT<Tretval (Tcls::*)(Targ1), false> {
static int SQCall(Tcls *instance, Tretval (Tcls::*func)(Targ1), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
Tretval ret = (instance->*func)(
- GetParam(ForceType<Targ1>(), vm, 2,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr)
);
sq_pop(vm, 1);
return Return(vm, ret);
@@ -203,9 +208,9 @@
struct HelperT<Tretval (Tcls::*)(Targ1), true> {
static int SQCall(Tcls *instance, Tretval (Tcls::*func)(Targ1), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
(instance->*func)(
- GetParam(ForceType<Targ1>(), vm, 2,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr)
);
sq_pop(vm, 1);
return 0;
@@ -213,9 +218,9 @@
static Tcls *SQConstruct(Tcls *instance, Tretval (Tcls::*func)(Targ1), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
Tcls *inst = new Tcls(
- GetParam(ForceType<Targ1>(), vm, 2,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr)
);
return inst;
@@ -229,10 +234,10 @@
struct HelperT<Tretval (*)(Targ1, Targ2), false> {
static int SQCall(void *instance, Tretval (*func)(Targ1, Targ2), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
Tretval ret = (*func)(
- GetParam(ForceType<Targ1>(), vm, 2,&str),
- GetParam(ForceType<Targ2>(), vm, 3,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr),
+ GetParam(ForceType<Targ2>(), vm, 3, &ptr)
);
sq_pop(vm, 2);
return Return(vm, ret);
@@ -246,10 +251,10 @@
struct HelperT<Tretval (*)(Targ1, Targ2), true> {
static int SQCall(void *instance, Tretval (*func)(Targ1, Targ2), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
(*func)(
- GetParam(ForceType<Targ1>(), vm, 2,&str),
- GetParam(ForceType<Targ2>(), vm, 3,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr),
+ GetParam(ForceType<Targ2>(), vm, 3, &ptr)
);
sq_pop(vm, 2);
return 0;
@@ -263,10 +268,10 @@
struct HelperT<Tretval (Tcls::*)(Targ1, Targ2), false> {
static int SQCall(Tcls *instance, Tretval (Tcls::*func)(Targ1, Targ2), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
Tretval ret = (instance->*func)(
- GetParam(ForceType<Targ1>(), vm, 2,&str),
- GetParam(ForceType<Targ2>(), vm, 3,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr),
+ GetParam(ForceType<Targ2>(), vm, 3, &ptr)
);
sq_pop(vm, 2);
return Return(vm, ret);
@@ -280,10 +285,10 @@
struct HelperT<Tretval (Tcls::*)(Targ1, Targ2), true> {
static int SQCall(Tcls *instance, Tretval (Tcls::*func)(Targ1, Targ2), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
(instance->*func)(
- GetParam(ForceType<Targ1>(), vm, 2,&str),
- GetParam(ForceType<Targ2>(), vm, 3,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr),
+ GetParam(ForceType<Targ2>(), vm, 3, &ptr)
);
sq_pop(vm, 2);
return 0;
@@ -291,10 +296,10 @@
static Tcls *SQConstruct(Tcls *instance, Tretval (Tcls::*func)(Targ1, Targ2), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
Tcls *inst = new Tcls(
- GetParam(ForceType<Targ1>(), vm, 2,&str),
- GetParam(ForceType<Targ2>(), vm, 3,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr),
+ GetParam(ForceType<Targ2>(), vm, 3, &ptr)
);
return inst;
@@ -308,11 +313,11 @@
struct HelperT<Tretval (*)(Targ1, Targ2, Targ3), false> {
static int SQCall(void *instance, Tretval (*func)(Targ1, Targ2, Targ3), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
Tretval ret = (*func)(
- GetParam(ForceType<Targ1>(), vm, 2,&str),
- GetParam(ForceType<Targ2>(), vm, 3,&str),
- GetParam(ForceType<Targ3>(), vm, 4,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr),
+ GetParam(ForceType<Targ2>(), vm, 3, &ptr),
+ GetParam(ForceType<Targ3>(), vm, 4, &ptr)
);
sq_pop(vm, 3);
return Return(vm, ret);
@@ -326,11 +331,11 @@
struct HelperT<Tretval (*)(Targ1, Targ2, Targ3), true> {
static int SQCall(void *instance, Tretval (*func)(Targ1, Targ2, Targ3), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
(*func)(
- GetParam(ForceType<Targ1>(), vm, 2,&str),
- GetParam(ForceType<Targ2>(), vm, 3,&str),
- GetParam(ForceType<Targ3>(), vm, 4,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr),
+ GetParam(ForceType<Targ2>(), vm, 3, &ptr),
+ GetParam(ForceType<Targ3>(), vm, 4, &ptr)
);
sq_pop(vm, 3);
return 0;
@@ -344,11 +349,11 @@
struct HelperT<Tretval (Tcls::*)(Targ1, Targ2, Targ3), false> {
static int SQCall(Tcls *instance, Tretval (Tcls::*func)(Targ1, Targ2, Targ3), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
Tretval ret = (instance->*func)(
- GetParam(ForceType<Targ1>(), vm, 2,&str),
- GetParam(ForceType<Targ2>(), vm, 3,&str),
- GetParam(ForceType<Targ3>(), vm, 4,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr),
+ GetParam(ForceType<Targ2>(), vm, 3, &ptr),
+ GetParam(ForceType<Targ3>(), vm, 4, &ptr)
);
sq_pop(vm, 3);
return Return(vm, ret);
@@ -362,11 +367,11 @@
struct HelperT<Tretval (Tcls::*)(Targ1, Targ2, Targ3), true> {
static int SQCall(Tcls *instance, Tretval (Tcls::*func)(Targ1, Targ2, Targ3), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
(instance->*func)(
- GetParam(ForceType<Targ1>(), vm, 2,&str),
- GetParam(ForceType<Targ2>(), vm, 3,&str),
- GetParam(ForceType<Targ3>(), vm, 4,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr),
+ GetParam(ForceType<Targ2>(), vm, 3, &ptr),
+ GetParam(ForceType<Targ3>(), vm, 4, &ptr)
);
sq_pop(vm, 3);
return 0;
@@ -374,11 +379,11 @@
static Tcls *SQConstruct(Tcls *instance, Tretval (Tcls::*func)(Targ1, Targ2, Targ3), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
Tcls *inst = new Tcls(
- GetParam(ForceType<Targ1>(), vm, 2,&str),
- GetParam(ForceType<Targ2>(), vm, 3,&str),
- GetParam(ForceType<Targ3>(), vm, 4,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr),
+ GetParam(ForceType<Targ2>(), vm, 3, &ptr),
+ GetParam(ForceType<Targ3>(), vm, 4, &ptr)
);
return inst;
@@ -392,12 +397,12 @@
struct HelperT<Tretval (*)(Targ1, Targ2, Targ3, Targ4), false> {
static int SQCall(void *instance, Tretval (*func)(Targ1, Targ2, Targ3, Targ4), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
Tretval ret = (*func)(
- GetParam(ForceType<Targ1>(), vm, 2,&str),
- GetParam(ForceType<Targ2>(), vm, 3,&str),
- GetParam(ForceType<Targ3>(), vm, 4,&str),
- GetParam(ForceType<Targ4>(), vm, 5,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr),
+ GetParam(ForceType<Targ2>(), vm, 3, &ptr),
+ GetParam(ForceType<Targ3>(), vm, 4, &ptr),
+ GetParam(ForceType<Targ4>(), vm, 5, &ptr)
);
sq_pop(vm, 4);
return Return(vm, ret);
@@ -411,12 +416,12 @@
struct HelperT<Tretval (*)(Targ1, Targ2, Targ3, Targ4), true> {
static int SQCall(void *instance, Tretval (*func)(Targ1, Targ2, Targ3, Targ4), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
(*func)(
- GetParam(ForceType<Targ1>(), vm, 2,&str),
- GetParam(ForceType<Targ2>(), vm, 3,&str),
- GetParam(ForceType<Targ3>(), vm, 4,&str),
- GetParam(ForceType<Targ4>(), vm, 5,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr),
+ GetParam(ForceType<Targ2>(), vm, 3, &ptr),
+ GetParam(ForceType<Targ3>(), vm, 4, &ptr),
+ GetParam(ForceType<Targ4>(), vm, 5, &ptr)
);
sq_pop(vm, 4);
return 0;
@@ -430,12 +435,12 @@
struct HelperT<Tretval (Tcls::*)(Targ1, Targ2, Targ3, Targ4), false> {
static int SQCall(Tcls *instance, Tretval (Tcls::*func)(Targ1, Targ2, Targ3, Targ4), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
Tretval ret = (instance->*func)(
- GetParam(ForceType<Targ1>(), vm, 2,&str),
- GetParam(ForceType<Targ2>(), vm, 3,&str),
- GetParam(ForceType<Targ3>(), vm, 4,&str),
- GetParam(ForceType<Targ4>(), vm, 5,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr),
+ GetParam(ForceType<Targ2>(), vm, 3, &ptr),
+ GetParam(ForceType<Targ3>(), vm, 4, &ptr),
+ GetParam(ForceType<Targ4>(), vm, 5, &ptr)
);
sq_pop(vm, 4);
return Return(vm, ret);
@@ -449,12 +454,12 @@
struct HelperT<Tretval (Tcls::*)(Targ1, Targ2, Targ3, Targ4), true> {
static int SQCall(Tcls *instance, Tretval (Tcls::*func)(Targ1, Targ2, Targ3, Targ4), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
(instance->*func)(
- GetParam(ForceType<Targ1>(), vm, 2,&str),
- GetParam(ForceType<Targ2>(), vm, 3,&str),
- GetParam(ForceType<Targ3>(), vm, 4,&str),
- GetParam(ForceType<Targ4>(), vm, 5,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr),
+ GetParam(ForceType<Targ2>(), vm, 3, &ptr),
+ GetParam(ForceType<Targ3>(), vm, 4, &ptr),
+ GetParam(ForceType<Targ4>(), vm, 5, &ptr)
);
sq_pop(vm, 4);
return 0;
@@ -462,12 +467,12 @@
static Tcls *SQConstruct(Tcls *instance, Tretval (Tcls::*func)(Targ1, Targ2, Targ3, Targ4), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
Tcls *inst = new Tcls(
- GetParam(ForceType<Targ1>(), vm, 2,&str),
- GetParam(ForceType<Targ2>(), vm, 3,&str),
- GetParam(ForceType<Targ3>(), vm, 4,&str),
- GetParam(ForceType<Targ4>(), vm, 5,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr),
+ GetParam(ForceType<Targ2>(), vm, 3, &ptr),
+ GetParam(ForceType<Targ3>(), vm, 4, &ptr),
+ GetParam(ForceType<Targ4>(), vm, 5, &ptr)
);
return inst;
@@ -481,13 +486,13 @@
struct HelperT<Tretval (*)(Targ1, Targ2, Targ3, Targ4, Targ5), false> {
static int SQCall(void *instance, Tretval (*func)(Targ1, Targ2, Targ3, Targ4, Targ5), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
Tretval ret = (*func)(
- GetParam(ForceType<Targ1>(), vm, 2,&str),
- GetParam(ForceType<Targ2>(), vm, 3,&str),
- GetParam(ForceType<Targ3>(), vm, 4,&str),
- GetParam(ForceType<Targ4>(), vm, 5,&str),
- GetParam(ForceType<Targ5>(), vm, 6,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr),
+ GetParam(ForceType<Targ2>(), vm, 3, &ptr),
+ GetParam(ForceType<Targ3>(), vm, 4, &ptr),
+ GetParam(ForceType<Targ4>(), vm, 5, &ptr),
+ GetParam(ForceType<Targ5>(), vm, 6, &ptr)
);
sq_pop(vm, 5);
return Return(vm, ret);
@@ -501,13 +506,13 @@
struct HelperT<Tretval (*)(Targ1, Targ2, Targ3, Targ4, Targ5), true> {
static int SQCall(void *instance, Tretval (*func)(Targ1, Targ2, Targ3, Targ4, Targ5), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
(*func)(
- GetParam(ForceType<Targ1>(), vm, 2,&str),
- GetParam(ForceType<Targ2>(), vm, 3,&str),
- GetParam(ForceType<Targ3>(), vm, 4,&str),
- GetParam(ForceType<Targ4>(), vm, 5,&str),
- GetParam(ForceType<Targ5>(), vm, 6,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr),
+ GetParam(ForceType<Targ2>(), vm, 3, &ptr),
+ GetParam(ForceType<Targ3>(), vm, 4, &ptr),
+ GetParam(ForceType<Targ4>(), vm, 5, &ptr),
+ GetParam(ForceType<Targ5>(), vm, 6, &ptr)
);
sq_pop(vm, 5);
return 0;
@@ -521,13 +526,13 @@
struct HelperT<Tretval (Tcls::*)(Targ1, Targ2, Targ3, Targ4, Targ5), false> {
static int SQCall(Tcls *instance, Tretval (Tcls::*func)(Targ1, Targ2, Targ3, Targ4, Targ5), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
Tretval ret = (instance->*func)(
- GetParam(ForceType<Targ1>(), vm, 2,&str),
- GetParam(ForceType<Targ2>(), vm, 3,&str),
- GetParam(ForceType<Targ3>(), vm, 4,&str),
- GetParam(ForceType<Targ4>(), vm, 5,&str),
- GetParam(ForceType<Targ5>(), vm, 6,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr),
+ GetParam(ForceType<Targ2>(), vm, 3, &ptr),
+ GetParam(ForceType<Targ3>(), vm, 4, &ptr),
+ GetParam(ForceType<Targ4>(), vm, 5, &ptr),
+ GetParam(ForceType<Targ5>(), vm, 6, &ptr)
);
sq_pop(vm, 5);
return Return(vm, ret);
@@ -541,13 +546,13 @@
struct HelperT<Tretval (Tcls::*)(Targ1, Targ2, Targ3, Targ4, Targ5), true> {
static int SQCall(Tcls *instance, Tretval (Tcls::*func)(Targ1, Targ2, Targ3, Targ4, Targ5), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
(instance->*func)(
- GetParam(ForceType<Targ1>(), vm, 2,&str),
- GetParam(ForceType<Targ2>(), vm, 3,&str),
- GetParam(ForceType<Targ3>(), vm, 4,&str),
- GetParam(ForceType<Targ4>(), vm, 5,&str),
- GetParam(ForceType<Targ5>(), vm, 6,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr),
+ GetParam(ForceType<Targ2>(), vm, 3, &ptr),
+ GetParam(ForceType<Targ3>(), vm, 4, &ptr),
+ GetParam(ForceType<Targ4>(), vm, 5, &ptr),
+ GetParam(ForceType<Targ5>(), vm, 6, &ptr)
);
sq_pop(vm, 5);
return 0;
@@ -555,13 +560,13 @@
static Tcls *SQConstruct(Tcls *instance, Tretval (Tcls::*func)(Targ1, Targ2, Targ3, Targ4, Targ5), HSQUIRRELVM vm)
{
- SQConvertedStrings str;
+ SQAutoFreePointers ptr;
Tcls *inst = new Tcls(
- GetParam(ForceType<Targ1>(), vm, 2,&str),
- GetParam(ForceType<Targ2>(), vm, 3,&str),
- GetParam(ForceType<Targ3>(), vm, 4,&str),
- GetParam(ForceType<Targ4>(), vm, 5,&str),
- GetParam(ForceType<Targ5>(), vm, 6,&str)
+ GetParam(ForceType<Targ1>(), vm, 2, &ptr),
+ GetParam(ForceType<Targ2>(), vm, 3, &ptr),
+ GetParam(ForceType<Targ3>(), vm, 4, &ptr),
+ GetParam(ForceType<Targ4>(), vm, 5, &ptr),
+ GetParam(ForceType<Targ5>(), vm, 6, &ptr)
);
return inst;