From 602c73b253d9fdeaddcec7fd9c12643c9ba8c41c Mon Sep 17 00:00:00 2001
From: Jonathan Lambrechts <jonathan.lambrechts@uclouvain.be>
Date: Tue, 9 Mar 2010 11:53:15 +0000
Subject: [PATCH] improve lua bindings of std::vector

---
 Common/LuaBindings.h | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/Common/LuaBindings.h b/Common/LuaBindings.h
index b625cef9aa..65d5ca74c1 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();
-- 
GitLab