1 #ifndef LUAPRIMITIVEPARAM_H
2 #define LUAPRIMITIVEPARAM_H
26 void Push(lua_State *l)
override {
34 void Push(lua_State *l, std::string name)
override {
36 lua_setglobal(l, name.c_str());
44 return mRetriever(l, -1);
49 const static std::function<void(lua_State*, T)> mPusher;
50 const static std::function<T(lua_State*, int)> mRetriever;
54 typedef LuaPrimitiveParam<bool> BoolParam;
56 const std::function<void(lua_State*, bool)> BoolParam::mPusher = lua_pushboolean;
58 const static auto bRetrieve = [](lua_State *l,
int idx){
return lua_toboolean(l, idx) == 1; };
60 const std::function<bool(lua_State*, int)> BoolParam::mRetriever = bRetrieve;
63 typedef LuaPrimitiveParam<double> DoubleParam;
65 const std::function<void(lua_State*, double)> DoubleParam::mPusher = lua_pushnumber;
67 const std::function<double(lua_State*, int)> DoubleParam::mRetriever = luaL_checknumber;
70 typedef LuaPrimitiveParam<float> FloatParam;
72 const std::function<void(lua_State*, float)> FloatParam::mPusher = lua_pushnumber;
74 const std::function<float(lua_State*, int)> FloatParam::mRetriever = luaL_checknumber;
77 typedef LuaPrimitiveParam<int> IntParam;
79 const std::function<void(lua_State*, int)> IntParam::mPusher = lua_pushinteger;
81 const std::function<int(lua_State*, int)> IntParam::mRetriever = luaL_checkinteger;
84 typedef LuaPrimitiveParam<std::string> StringParam;
86 const static auto sPusher = [](lua_State *l, std::string str){
return lua_pushstring(l, str.c_str()); };
88 const std::function<void(lua_State*, std::string)> StringParam::mPusher = sPusher;
90 const static auto sRetriever = [](lua_State *l,
int i){
return (std::string)luaL_checkstring(l, i); };
92 const std::function<std::string(lua_State*, int)> StringParam::mRetriever = sRetriever;