diff --git a/src/control/ScriptContext.hpp b/src/control/ScriptContext.hpp index 13279ec..191be92 100644 --- a/src/control/ScriptContext.hpp +++ b/src/control/ScriptContext.hpp @@ -36,6 +36,7 @@ extern "C" { #include #include +#include #include @@ -54,37 +55,36 @@ private: void load(const std::string &script); + + void pushArg(std::nullptr_t __attribute__((unused)) v) { + lua_pushnil(L); + } + + void pushArg(const std::string &v) { + lua_pushstring(L, v.c_str()); + } + + template::value>::type> + void pushArg(T v) { + lua_pushnumber(L, v); + } + + void pushArg(bool v) { + lua_pushboolean(L, v); + } + + void pushArg(Model::ScriptValue &v) { + v.push(L); + } + + size_t pushArgs() { return 0; } - template - size_t pushArgs(std::nullptr_t __attribute__((unused)) v, Args ...args) { - lua_pushnil(L); - return pushArgs(args...) + 1; - } - - template - size_t pushArgs(const std::string &v, Args ...args) { - lua_pushstring(L, v.c_str()); - return pushArgs(args...) + 1; - } - template size_t pushArgs(T v, Args ...args) { - lua_pushnumber(L, v); - return pushArgs(args...) + 1; - } - - template - size_t pushArgs(bool v, Args ...args) { - lua_pushboolean(L, v); - return pushArgs(args...) + 1; - } - - template - size_t pushArgs(Model::ScriptValue &v, Args ...args) { - v.push(L); + pushArg(v); return pushArgs(args...) + 1; }