lua-users home
lua-l archive

Re: protect a set in c (non-existing elements)

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


2014年02月14日 15:46 GMT+02:00 Thijs Schreijer <thijs@thijsschreijer.nl>:
> Obviously you're right. But this is simple in Lua and a bit cumbersome in c.
> So my question was more on how others solved it; possibly including
> a lua file in the module that does it, or embedding lua code in c
> (tried to find an example, but couldn't find it)
Here is an example, from the xtable module.
/* startup Lua code
Develop this as a separate Lua file, taking care to avoid strings
delimited by double-quotes. When it works, put double-quote at the
start and whitespace,double-quote at the end of every line and paste
it in here.
*/
char *xtable_init =
"print "
"'Welcome to the xtable library! The following functions are available:' "
"local contents={} "
"for k in pairs(X._block) do contents[#contents+1]='_block.'..k end "
"for k in pairs(X._tuple) do contents[#contents+1]='_tuple.'..k end "
"table.sort(contents); print(table.concat(contents,' ')) "
"X=nil"
;
LUAMOD_API int luaopen_xtable (lua_State *L) {
 lua_createtable(L,8,0);
 luaL_newlib(L, block_funcs);
 lua_setfield(L,-2,"_block");
 luaL_newlib(L, tuple_funcs);
 lua_setfield(L,-2,"_tuple");
 lua_pushvalue(L,-1); lua_setglobal(L,"X");
 luaL_dostring(L,xtable_init);
 return 1;
}

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