jbe@0: #include jbe@0: #include jbe@0: #include "seqlualib.h" jbe@0: #include jbe@0: jbe@0: static int seqlua_c_example_printcsv(lua_State *L) { jbe@0: seqlua_Iterator iter; jbe@0: seqlua_iterloop(L, &iter, 1) { jbe@0: if (seqlua_itercount(&iter) > 1) fputs(",", stdout); jbe@0: fputs(luaL_tolstring(L, -1, NULL), stdout); jbe@8: lua_pop(L, 1); // pop value that luaL_tolstring pushed onto stack jbe@0: } jbe@0: fputs("\n", stdout); jbe@0: return 0; jbe@0: } jbe@0: jbe@8: static int seqlua_c_example_printthree(lua_State *L) { jbe@8: int i; jbe@8: seqlua_iterclosure(L, 1); jbe@8: for (i=0; i<3; i++) { jbe@8: lua_pushvalue(L, 1); jbe@8: lua_call(L, 0, 1); jbe@8: fputs(luaL_tolstring(L, -1, NULL), stdout); jbe@8: lua_pop(L, 1); // pop value that luaL_tolstring pushed onto stack jbe@8: fputs("\n", stdout); jbe@8: } jbe@8: return 0; jbe@8: } jbe@8: jbe@0: int luaopen_seqlua_c_example(lua_State *L) { jbe@0: lua_pushcfunction(L, seqlua_c_example_printcsv); jbe@0: lua_setglobal(L, "printcsv"); jbe@8: lua_pushcfunction(L, seqlua_c_example_printthree); jbe@8: lua_setglobal(L, "printthree"); jbe@0: return 0; jbe@0: }