我有一个C函数FILE*
作为参数,我想在Lua中使用这个函数,传递Lua文件.我想我需要%typemap
这个.怎么写呢?(我刚开始学习Lua).
这是我最终提出的解决方案.
在Lua源代码中,在liolib.c中,有一个函数FILE *tofile (lua_State *L)
,它将Lua文件转换为C FILE*,但它不是API的一部分.我修改了一下来制作一个类型图:
%typemap(in) FILE * { FILE **f; if (lua_isnil(L, $input)) $1=NULL; else { f = (FILE **)luaL_checkudata(L, $input, "FILE*"); if (*f == NULL) luaL_error(L, "attempt to use a closed file"); $1=*f; } }
这个typemap也接受nil,因为我需要一种方法将NULL传递给C函数.