lua-users home
lua-l archive

Re: decoding table

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


You've missed that the first argument is `self', since you call the function with f:AddCombo... as opposed to f.AddCombo...
Regards,
Andreas
Noel Frankinet skrev:
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

AltStyle によって変換されたページ (->オリジナル) /