I'm trying to pass a Lua table to my C program but I don´t know how to do it.
My Lua code:
local stages = {}
stages[1] = stage1
stages[2] = stage2
stages[3] = stage3
lstage.buildpollingtable(stages)
My C code:
static int lstage_build_polling_table (lua_State * L) {
luaL_checktype(L, 1, LUA_TTABLE);
lua_getfield(L, 1, "stage1");
lua_getfield(L, 1, "stage2");
lua_getfield(L, 1, "stage3");
stage_t s1 = lstage_tostage(L, -3);
stage_t s2 = lstage_tostage(L, -2);
stage_t s3 = lstage_tostage(L, -1);
printf("%d\n",s1->priority);
printf("%d\n",s2->priority);
printf("%d\n",s3->priority);
return 1;
}
What do I have to do to run all over the elements? This code generates an error like this:
bad argument #-3 to 'buildpollingtable' (lstage-Stage * expected, got table)
Can anyone explain what am I doing wrong?
Your table does not have fields named stage1
, etc., only fields 1
, 2
, 3
. So try
lua_rawgeti(L,1,1);
lua_rawgeti(L,1,2);
lua_rawgeti(L,1,3);
instead of
lua_getfield(L, 1, "stage1");
lua_getfield(L, 1, "stage2");
lua_getfield(L, 1, "stage3");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With