C API、lua_load()
/* * $ gcc -Wall -W -I/usr/include/lua50 -o 2008102800 -llua50 2008102800.c */ #include <stdio.h> #include <lua.h> #include <lauxlib.h> /* from lauxlib.c */ typedef struct LoadF { FILE *f; char buff[LUAL_BUFFERSIZE]; } LoadF; static const char *getF (lua_State *L, void *ud, size_t *size) { LoadF *lf = (LoadF *)ud; (void)L; if (feof(lf->f)) return NULL; *size = fread(lf->buff, 1, LUAL_BUFFERSIZE, lf->f); return (*size > 0) ? lf->buff : NULL; } int main(void) { lua_State *L; LoadF lf; char *filename = "foo"; L = lua_open(); lua_pushfstring(L, "@%s", filename); printf("%d\n", lua_gettop(L)); lf.f = fopen(filename, "r"); lua_load(L, getF, &lf, lua_tostring(L, -1)); printf("%d\n", lua_gettop(L)); printf("%s\n", lua_typename(L, lua_type(L, -1))); fclose(lf.f); lua_close(L); return 0; }
で、
1 2 function
実行するには?