我有一个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;
}
}
Run Code Online (Sandbox Code Playgroud)
这个typemap也接受nil,因为我需要一种方法将NULL传递给C函数.
| 归档时间: |
|
| 查看次数: |
534 次 |
| 最近记录: |