From c47f0687696778cb63d4289d0f0e2f5112e3fc22 Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Wed, 15 Mar 2023 00:28:18 -0700 Subject: [PATCH] add Lua::Push for sets --- library/include/LuaTools.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/library/include/LuaTools.h b/library/include/LuaTools.h index 689d82260..b19fc31de 100644 --- a/library/include/LuaTools.h +++ b/library/include/LuaTools.h @@ -31,6 +31,7 @@ distribution. #include #include #include +#include #include "df/interfacest.h" @@ -364,6 +365,26 @@ namespace DFHack {namespace Lua { DFHACK_EXPORT int PushPosXYZ(lua_State *state, const df::coord &pos); DFHACK_EXPORT int PushPosXY(lua_State *state, const df::coord2d &pos); + template + void Push(lua_State *L, const std::set &pset) { + lua_createtable(L, 0, pset.size()); + for (auto &entry : pset) { + Lua::Push(L, entry); + Lua::Push(L, true); + lua_settable(L, -3); + } + } + + template + void Push(lua_State *L, const std::unordered_set &pset) { + lua_createtable(L, 0, pset.size()); + for (auto &entry : pset) { + Lua::Push(L, entry); + Lua::Push(L, true); + lua_settable(L, -3); + } + } + template void Push(lua_State *L, const std::map &pmap) { lua_createtable(L, 0, pmap.size());