diff --git a/Common/LuaBindings.h b/Common/LuaBindings.h index b625cef9aa8a64c6474bc33b5f7158480abed14a..65d5ca74c1424a6551e099f15dc672fc5f372c7e 100644 --- a/Common/LuaBindings.h +++ b/Common/LuaBindings.h @@ -142,13 +142,19 @@ class luaStack<std::vector<type > >{ size_t size=lua_objlen(L,ia); v.resize(size); for(size_t i=0;i<size;i++){ - lua_pushinteger(L,i+1); - lua_gettable(L,ia); + lua_rawgeti(L, ia, i+1); v[i]=luaStack<type>::get(L,-1); lua_pop(L,1); } return v; } + static void push(lua_State *L, const std::vector<type>& v){ + lua_createtable(L, v.size(), 0); + for(size_t i=0;i<v.size;i++){ + luaStack<type>::push(L,v[i]); + lua_rawseti(L, 2, i+1); + } + } static std::string getName(){ std::string name="vector of "; return name+luaStack<type>::getName();