[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: decoding table
- From: Noel Frankinet <nfr@...>
- Date: Tue, 28 Nov 2006 14:31:20 +0100
Hello all,
I have the following lua statement
c=f:AddCombobox("test",{list={"one","two","three"}})
That I want to decode in C
for the first argument I have :
luaL_checkstring(L, 1)
for the second argument a use :
GetTableField(L,"list",&contents);
which boils down to
bool GetTableField(lua_State *L,const char *key,string *field)
{
lua_pushstring(L,key);
lua_gettable(L,-2);
if (!lua_istable(L,-1))
{
lua_pop(L,1);
return false;
}
if (field)
*field = TableToXml(L);
lua_pop(L,1);
return true;
}
so far so good
now I want to decode that table ({"one","two","three"})
and I use
string & TableToXml(lua_State *L)
{ static string ret;
ret.clear();
lua_pushnil(L); /* first key */
while (lua_next(L, -1) != 0)
{
ret += "<ITEM>";
ret += luaL_checkstring(L, -1);
ret += "</ITEM>";
lua_pop(L, 1); /* removes `value'; keeps `key' for next
iteration */
}
return ret;
}
but does not work, I have messed the stack somewhere, could someone help
me ?
A pointer on stack manipulation function from C would be nice
Best regards
--
Noël Frankinet
Gistek Software SA
http://www.gistek.net