18template<
typename T,
typename = std::enable_if_t<std::is_same_v<T,
bool>>>
29 lua_pushlstring(l, value.c_str(), value.size());
33 lua_pushlstring(l, value.data(), value.size());
38inline void pi_lua_generic_pull(lua_State *l,
int index, int32_t &out) { out = luaL_checkinteger(l, index); }
39inline void pi_lua_generic_pull(lua_State *l,
int index, int64_t &out) { out = luaL_checkinteger(l, index); }
40inline void pi_lua_generic_pull(lua_State *l,
int index, uint32_t &out) { out = luaL_checkinteger(l, index); }
41inline void pi_lua_generic_pull(lua_State *l,
int index, uint64_t &out) { out = luaL_checkinteger(l, index); }
42inline void pi_lua_generic_pull(lua_State *l,
int index,
float &out) { out = luaL_checknumber(l, index); }
43inline void pi_lua_generic_pull(lua_State *l,
int index,
double &out) { out = luaL_checknumber(l, index); }
44inline void pi_lua_generic_pull(lua_State *l,
int index,
const char *&out) { out = luaL_checkstring(l, index); }
48 const char *buf = luaL_checklstring(l, index, &len);
49 std::string(buf, len).swap(out);
55 const char *buf = luaL_checklstring(l, index, &len);
59template <
typename Type>
60inline void LuaPush(lua_State *l, Type value)
65template <
typename Type>
66inline std::remove_reference_t<Type>
LuaPull(lua_State *l,
int index)
68 std::decay_t<Type> value;
74template <
typename Type>
75inline std::remove_reference_t<Type>
LuaPull(lua_State *l,
int index, Type defaultVal)
77 Type value = defaultVal;
78 if (lua_gettop(l) >= index && !lua_isnil(l, index))
85 if (lua_type(l, index) == LUA_TBOOLEAN) {
86 out = lua_toboolean(l, index);
93 if (lua_type(l, index) == LUA_TNUMBER) {
94 out = lua_tointeger(l, index);
101 if (lua_type(l, index) == LUA_TNUMBER) {
102 out = lua_tonumber(l, index);
109 if (lua_type(l, index) == LUA_TNUMBER) {
110 out = lua_tonumber(l, index);
117 if (lua_type(l, index) == LUA_TSTRING) {
118 out = lua_tostring(l, index);
125 if (lua_type(l, index) == LUA_TSTRING) {
127 const char *buf = lua_tolstring(l, index, &len);
128 std::string(buf, len).swap(out);
136template<
typename... Types>
147template<
typename... Types>
152 return std::tuple<std::remove_reference_t<Types>...>{ LuaPull<Types>(l, beg++)... };
void LuaPush(lua_State *l, Type value)
Definition: LuaPushPull.h:60
void pi_lua_generic_push(lua_State *l, T value)
Definition: LuaPushPull.h:19
bool pi_lua_strict_pull(lua_State *l, int index, bool &out)
Definition: LuaPushPull.h:83
std::remove_reference_t< Type > LuaPull(lua_State *l, int index)
Definition: LuaPushPull.h:66
void pi_lua_multiple_push(lua_State *l, Types... args)
Definition: LuaPushPull.h:137
void pi_lua_generic_pull(lua_State *l, int index, bool &out)
Definition: LuaPushPull.h:37
std::tuple< std::remove_reference_t< Types >... > pi_lua_multiple_pull(lua_State *l, int beg)
Definition: LuaPushPull.h:148