From e48cb3b43caabb914cd4729506e49400e2a9526c Mon Sep 17 00:00:00 2001 From: Sandu Liviu Catalin Date: Mon, 30 Jul 2018 23:00:45 +0300 Subject: [PATCH] Fix previous refactor which caused functions with format support to not fallback to dummy values when StackStrF tail arguments were not specified. --- include/sqrat/sqratTypes.h | 236 ++++++++++++++++++------------------- 1 file changed, 118 insertions(+), 118 deletions(-) diff --git a/include/sqrat/sqratTypes.h b/include/sqrat/sqratTypes.h index 53b0e99a..9d6db694 100644 --- a/include/sqrat/sqratTypes.h +++ b/include/sqrat/sqratTypes.h @@ -1227,7 +1227,7 @@ struct ArgFwd { // Forward the arguments to a function object template inline void Call(HSQUIRRELVM vm, SQInteger idx, F f) { Var a1(vm, idx); - mRes = ArgFwdFmt::Proc(a1.value, sq_gettop(vm) < idx); + mRes = ArgFwdFmt::Proc(a1.value, sq_gettop(vm) <= idx); if (SQ_SUCCEEDED(mRes)) f(vm,a1.value); } @@ -1241,9 +1241,9 @@ struct ArgFwd { SQInteger mRes; // Forward the arguments to a function object template inline void Call(HSQUIRRELVM vm, SQInteger idx, F f) { - Var a1(vm, idx); - Var a2(vm, idx+1); - mRes = ArgFwdFmt::Proc(a2.value, sq_gettop(vm) < idx); + Var a1(vm, idx++); + Var a2(vm, idx); + mRes = ArgFwdFmt::Proc(a2.value, sq_gettop(vm) <= idx); if (SQ_SUCCEEDED(mRes)) f(vm,a1.value,a2.value); } @@ -1257,10 +1257,10 @@ struct ArgFwd { SQInteger mRes; // Forward the arguments to a function object template inline void Call(HSQUIRRELVM vm, SQInteger idx, F f) { - Var a1(vm, idx); - Var a2(vm, idx+1); - Var a3(vm, idx+2); - mRes = ArgFwdFmt::Proc(a3.value, sq_gettop(vm) < idx); + Var a1(vm, idx++); + Var a2(vm, idx++); + Var a3(vm, idx); + mRes = ArgFwdFmt::Proc(a3.value, sq_gettop(vm) <= idx); if (SQ_SUCCEEDED(mRes)) f(vm,a1.value,a2.value,a3.value); } @@ -1275,11 +1275,11 @@ struct ArgFwd { SQInteger mRes; // Forward the arguments to a function object template inline void Call(HSQUIRRELVM vm, SQInteger idx, F f) { - Var a1(vm, idx); - Var a2(vm, idx+1); - Var a3(vm, idx+2); - Var a4(vm, idx+3); - mRes = ArgFwdFmt::Proc(a4.value, sq_gettop(vm) < idx); + Var a1(vm, idx++); + Var a2(vm, idx++); + Var a3(vm, idx++); + Var a4(vm, idx); + mRes = ArgFwdFmt::Proc(a4.value, sq_gettop(vm) <= idx); if (SQ_SUCCEEDED(mRes)) f(vm,a1.value,a2.value,a3.value,a4.value); } @@ -1293,12 +1293,12 @@ struct ArgFwd { SQInteger mRes; // Forward the arguments to a function object template inline void Call(HSQUIRRELVM vm, SQInteger idx, F f) { - Var a1(vm, idx); - Var a2(vm, idx+1); - Var a3(vm, idx+2); - Var a4(vm, idx+3); - Var a5(vm, idx+4); - mRes = ArgFwdFmt::Proc(a5.value, sq_gettop(vm) < idx); + Var a1(vm, idx++); + Var a2(vm, idx++); + Var a3(vm, idx++); + Var a4(vm, idx++); + Var a5(vm, idx); + mRes = ArgFwdFmt::Proc(a5.value, sq_gettop(vm) <= idx); if (SQ_SUCCEEDED(mRes)) f(vm,a1.value,a2.value,a3.value,a4.value,a5.value); } @@ -1312,13 +1312,13 @@ struct ArgFwd { SQInteger mRes; // Forward the arguments to a function object template inline void Call(HSQUIRRELVM vm, SQInteger idx, F f) { - Var a1(vm, idx); - Var a2(vm, idx+1); - Var a3(vm, idx+2); - Var a4(vm, idx+3); - Var a5(vm, idx+4); - Var a6(vm, idx+5); - mRes = ArgFwdFmt::Proc(a6.value, sq_gettop(vm) < idx); + Var a1(vm, idx++); + Var a2(vm, idx++); + Var a3(vm, idx++); + Var a4(vm, idx++); + Var a5(vm, idx++); + Var a6(vm, idx); + mRes = ArgFwdFmt::Proc(a6.value, sq_gettop(vm) <= idx); if (SQ_SUCCEEDED(mRes)) f(vm,a1.value,a2.value,a3.value,a4.value,a5.value,a6.value); } @@ -1332,14 +1332,14 @@ struct ArgFwd { SQInteger mRes; // Forward the arguments to a function object template inline void Call(HSQUIRRELVM vm, SQInteger idx, F f) { - Var a1(vm, idx); - Var a2(vm, idx+1); - Var a3(vm, idx+2); - Var a4(vm, idx+3); - Var a5(vm, idx+4); - Var a6(vm, idx+5); - Var a7(vm, idx+6); - mRes = ArgFwdFmt::Proc(a7.value, sq_gettop(vm) < idx); + Var a1(vm, idx++); + Var a2(vm, idx++); + Var a3(vm, idx++); + Var a4(vm, idx++); + Var a5(vm, idx++); + Var a6(vm, idx++); + Var a7(vm, idx); + mRes = ArgFwdFmt::Proc(a7.value, sq_gettop(vm) <= idx); if (SQ_SUCCEEDED(mRes)) f(vm,a1.value,a2.value,a3.value,a4.value,a5.value,a6.value,a7.value); } @@ -1353,15 +1353,15 @@ struct ArgFwd { SQInteger mRes; // Forward the arguments to a function object template inline void Call(HSQUIRRELVM vm, SQInteger idx, F f) { - Var a1(vm, idx); - Var a2(vm, idx+1); - Var a3(vm, idx+2); - Var a4(vm, idx+3); - Var a5(vm, idx+4); - Var a6(vm, idx+5); - Var a7(vm, idx+6); - Var a8(vm, idx+7); - mRes = ArgFwdFmt::Proc(a8.value, sq_gettop(vm) < idx); + Var a1(vm, idx++); + Var a2(vm, idx++); + Var a3(vm, idx++); + Var a4(vm, idx++); + Var a5(vm, idx++); + Var a6(vm, idx++); + Var a7(vm, idx++); + Var a8(vm, idx); + mRes = ArgFwdFmt::Proc(a8.value, sq_gettop(vm) <= idx); if (SQ_SUCCEEDED(mRes)) f(vm,a1.value,a2.value,a3.value,a4.value,a5.value,a6.value,a7.value,a8.value); } @@ -1375,16 +1375,16 @@ struct ArgFwd { SQInteger mRes; // Forward the arguments to a function object template inline void Call(HSQUIRRELVM vm, SQInteger idx, F f) { - Var a1(vm, idx); - Var a2(vm, idx+1); - Var a3(vm, idx+2); - Var a4(vm, idx+3); - Var a5(vm, idx+4); - Var a6(vm, idx+5); - Var a7(vm, idx+6); - Var a8(vm, idx+7); - Var a9(vm, idx+8); - mRes = ArgFwdFmt::Proc(a9.value, sq_gettop(vm) < idx); + Var a1(vm, idx++); + Var a2(vm, idx++); + Var a3(vm, idx++); + Var a4(vm, idx++); + Var a5(vm, idx++); + Var a6(vm, idx++); + Var a7(vm, idx++); + Var a8(vm, idx++); + Var a9(vm, idx); + mRes = ArgFwdFmt::Proc(a9.value, sq_gettop(vm) <= idx); if (SQ_SUCCEEDED(mRes)) f(vm,a1.value,a2.value,a3.value,a4.value,a5.value,a6.value,a7.value,a8.value,a9.value); } @@ -1398,17 +1398,17 @@ struct ArgFwd { SQInteger mRes; // Forward the arguments to a function object template inline void Call(HSQUIRRELVM vm, SQInteger idx, F f) { - Var a1(vm, idx); - Var a2(vm, idx+1); - Var a3(vm, idx+2); - Var a4(vm, idx+3); - Var a5(vm, idx+4); - Var a6(vm, idx+5); - Var a7(vm, idx+6); - Var a8(vm, idx+7); - Var a9(vm, idx+8); - Var a10(vm, idx+9); - mRes = ArgFwdFmt::Proc(a10.value, sq_gettop(vm) < idx); + Var a1(vm, idx++); + Var a2(vm, idx++); + Var a3(vm, idx++); + Var a4(vm, idx++); + Var a5(vm, idx++); + Var a6(vm, idx++); + Var a7(vm, idx++); + Var a8(vm, idx++); + Var a9(vm, idx++); + Var a10(vm, idx); + mRes = ArgFwdFmt::Proc(a10.value, sq_gettop(vm) <= idx); if (SQ_SUCCEEDED(mRes)) f(vm,a1.value,a2.value,a3.value,a4.value,a5.value,a6.value,a7.value,a8.value,a9.value,a10.value); } @@ -1422,18 +1422,18 @@ struct ArgFwd { SQInteger mRes; // Forward the arguments to a function object template inline void Call(HSQUIRRELVM vm, SQInteger idx, F f) { - Var a1(vm, idx); - Var a2(vm, idx+1); - Var a3(vm, idx+2); - Var a4(vm, idx+3); - Var a5(vm, idx+4); - Var a6(vm, idx+5); - Var a7(vm, idx+6); - Var a8(vm, idx+7); - Var a9(vm, idx+8); - Var a10(vm, idx+9); - Var a11(vm, idx+10); - mRes = ArgFwdFmt::Proc(a11.value, sq_gettop(vm) < idx); + Var a1(vm, idx++); + Var a2(vm, idx++); + Var a3(vm, idx++); + Var a4(vm, idx++); + Var a5(vm, idx++); + Var a6(vm, idx++); + Var a7(vm, idx++); + Var a8(vm, idx++); + Var a9(vm, idx++); + Var a10(vm, idx++); + Var a11(vm, idx); + mRes = ArgFwdFmt::Proc(a11.value, sq_gettop(vm) <= idx); if (SQ_SUCCEEDED(mRes)) f(vm,a1.value,a2.value,a3.value,a4.value,a5.value,a6.value,a7.value,a8.value,a9.value,a10.value,a11.value); } @@ -1447,19 +1447,19 @@ struct ArgFwd { SQInteger mRes; // Forward the arguments to a function object template inline void Call(HSQUIRRELVM vm, SQInteger idx, F f) { - Var a1(vm, idx); - Var a2(vm, idx+1); - Var a3(vm, idx+2); - Var a4(vm, idx+3); - Var a5(vm, idx+4); - Var a6(vm, idx+5); - Var a7(vm, idx+6); - Var a8(vm, idx+7); - Var a9(vm, idx+8); - Var a10(vm, idx+9); - Var a11(vm, idx+10); - Var a12(vm, idx+11); - mRes = ArgFwdFmt::Proc(a12.value, sq_gettop(vm) < idx); + Var a1(vm, idx++); + Var a2(vm, idx++); + Var a3(vm, idx++); + Var a4(vm, idx++); + Var a5(vm, idx++); + Var a6(vm, idx++); + Var a7(vm, idx++); + Var a8(vm, idx++); + Var a9(vm, idx++); + Var a10(vm, idx++); + Var a11(vm, idx++); + Var a12(vm, idx); + mRes = ArgFwdFmt::Proc(a12.value, sq_gettop(vm) <= idx); if (SQ_SUCCEEDED(mRes)) f(vm,a1.value,a2.value,a3.value,a4.value,a5.value,a6.value,a7.value,a8.value,a9.value,a10.value,a11.value,a12.value); } @@ -1473,20 +1473,20 @@ struct ArgFwd { SQInteger mRes; // Forward the arguments to a function object template inline void Call(HSQUIRRELVM vm, SQInteger idx, F f) { - Var a1(vm, idx); - Var a2(vm, idx+1); - Var a3(vm, idx+2); - Var a4(vm, idx+3); - Var a5(vm, idx+4); - Var a6(vm, idx+5); - Var a7(vm, idx+6); - Var a8(vm, idx+7); - Var a9(vm, idx+8); - Var a10(vm, idx+9); - Var a11(vm, idx+10); - Var a12(vm, idx+11); - Var a13(vm, idx+12); - mRes = ArgFwdFmt::Proc(a13.value, sq_gettop(vm) < idx); + Var a1(vm, idx++); + Var a2(vm, idx++); + Var a3(vm, idx++); + Var a4(vm, idx++); + Var a5(vm, idx++); + Var a6(vm, idx++); + Var a7(vm, idx++); + Var a8(vm, idx++); + Var a9(vm, idx++); + Var a10(vm, idx++); + Var a11(vm, idx++); + Var a12(vm, idx++); + Var a13(vm, idx); + mRes = ArgFwdFmt::Proc(a13.value, sq_gettop(vm) <= idx); if (SQ_SUCCEEDED(mRes)) f(vm,a1.value,a2.value,a3.value,a4.value,a5.value,a6.value,a7.value,a8.value,a9.value,a10.value,a11.value,a12.value,a13.value); } @@ -1500,21 +1500,21 @@ struct ArgFwd { SQInteger mRes; // Forward the arguments to a function object template inline void Call(HSQUIRRELVM vm, SQInteger idx, F f) { - Var a1(vm, idx); - Var a2(vm, idx+1); - Var a3(vm, idx+2); - Var a4(vm, idx+3); - Var a5(vm, idx+4); - Var a6(vm, idx+5); - Var a7(vm, idx+6); - Var a8(vm, idx+7); - Var a9(vm, idx+8); - Var a10(vm, idx+9); - Var a11(vm, idx+10); - Var a12(vm, idx+11); - Var a13(vm, idx+12); - Var a14(vm, idx+13); - mRes = ArgFwdFmt::Proc(a14.value, sq_gettop(vm) < idx); + Var a1(vm, idx++); + Var a2(vm, idx++); + Var a3(vm, idx++); + Var a4(vm, idx++); + Var a5(vm, idx++); + Var a6(vm, idx++); + Var a7(vm, idx++); + Var a8(vm, idx++); + Var a9(vm, idx++); + Var a10(vm, idx++); + Var a11(vm, idx++); + Var a12(vm, idx++); + Var a13(vm, idx++); + Var a14(vm, idx); + mRes = ArgFwdFmt::Proc(a14.value, sq_gettop(vm) <= idx); if (SQ_SUCCEEDED(mRes)) f(vm,a1.value,a2.value,a3.value,a4.value,a5.value,a6.value,a7.value,a8.value,a9.value,a10.value,a11.value,a12.value,a13.value,a14.value); }