[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Nesting tables from C++ to Lua
- From: Thomas Tongue <ttongue@...>
- Date: Fri, 23 Jan 2004 10:54:50 -0500
I'm having an interesting problem in passing nested tables from C++ to
Lua. What I'm looking to do is to construct something like
a1={x=5,y=8}
a2={x=6,y=2}
b={b1=a1,b2=a2}
and then call f(b) and get the returned value back. I don't have any
troubles constructing a1 and a2, but constructing b does not seem to
work. Here is what I'm trying (assume that a1 and a2 are globals as
defined above):
lua_pushstring(state,"b");
// Create a new table
lua_newtable(state);
// define the key as "b1"
lua_pushstring(state,"b1");
// retrieve the table a1
lua_pushstring(state,"a1");
lua_gettable(state,LUA_GLOBALSINDEX);
// set b1 = a1 in the new table
lua_settable(state,-3);
// Now do the same for b2=a1
lua_pushstring(state,"b2");
lua_pushstring(state,"a2");
lua_gettable(state,LUA_GLOBALSINDEX);
lua_settable(state,-3);
// set the number of keys/indexes in the table to "2"
lua_pushliteral(state,"n");
lua_pushnumber(state,2);
lua_rawset(state,-3);
// Finally, assign the new table to the global variable "b"
lua_settable(state,LUA_GLOBALSINDEX);
There must be something I'm missing. I have a similar problem setting
one vector equal to another. Say I want to set a1=a2... I would think
the following would be appropriate:
lua_pushstring(state,"a1");
lua_gettable(state,LUA_GLOBALSINDEX);
lua_pushstring(state,"a2");
lua_gettable(state,LUA_GLOBALSINDEX);
lua_settable(state,LUA_GLOBALSINDEX);
But this does not seem to work either. Suggestions?
=====================================================
Thomas Tongue <TTongue@imagiware.com>
Imagiware Inc. - http://www.imagiware.com/
Internet Presence and Consulting Services
== PGP Public Key: https://ssl1.imagiware.com/ttongue/public.key ==