Lua/LuaInstance: Add automatic conversion of std::vector

Former-commit-id: 31b32f9c4b9ccd825f2d08ea8499211040a0b9ab
This commit is contained in:
Lynix 2016-03-30 18:06:18 +02:00
parent bf288e7f06
commit 9390ce35b3
1 changed files with 20 additions and 0 deletions

View File

@ -7,6 +7,7 @@
#include <Nazara/Core/StringStream.hpp>
#include <limits>
#include <string>
#include <vector>
#include <type_traits>
namespace Nz
@ -149,6 +150,25 @@ namespace Nz
return 1;
}
template<typename T>
inline int LuaImplReplyVal(const LuaInstance& instance, std::vector<T> valContainer, TypeTag<std::vector<T>>)
{
std::size_t index = 1;
instance.PushTable(valContainer.size());
for (const T& val : valContainer)
{
instance.PushInteger(index++);
if (LuaImplReplyVal(instance, val, TypeTag<T>()) != 1)
{
instance.Error("Couldn't create table: type need more than one place to store");
return 0;
}
instance.SetTable();
}
return 1;
}
inline int LuaImplReplyVal(const LuaInstance& instance, ByteArray val, TypeTag<ByteArray>)
{
instance.PushString(reinterpret_cast<const char*>(val.GetConstBuffer()), val.GetSize());