From 24ec816762d0c19269c691be59ada8a52214e9fe Mon Sep 17 00:00:00 2001 From: S6066 Date: Mon, 30 Apr 2018 14:51:11 +0200 Subject: [PATCH] Make LuaImplQueryArg impl for std::vector (#162) --- include/Nazara/Lua/LuaState.inl | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/include/Nazara/Lua/LuaState.inl b/include/Nazara/Lua/LuaState.inl index 62669d72b..be1cf5cad 100644 --- a/include/Nazara/Lua/LuaState.inl +++ b/include/Nazara/Lua/LuaState.inl @@ -159,6 +159,36 @@ namespace Nz return LuaImplQueryArg(instance, index, arg, defValue, TypeTag()); } + template + unsigned int LuaImplQueryArg(const LuaState& instance, int index, std::vector* container, TypeTag>) + { + instance.CheckType(index, Nz::LuaType_Table); + std::size_t index = 1; + + for (;;) + { + instance.PushInteger(index++); + + if (instance.GetTable() == Nz::LuaType_Nil) + { + instance.Pop(); + break; + } + + T arg {}; + + if (LuaImplQueryArg(instance, -1, &arg, TypeTag()) != 1) + { + instance.Error("Type needs more than one place to be initialized"); + return 0; + } + + container->push_back(arg); + } + + return 1; + } + // Function returns inline int LuaImplReplyVal(const LuaState& instance, bool val, TypeTag) {