当前位置:  开发笔记 > 编程语言 > 正文

Swig和Lua:如何将Lua文件映射到FILE*

如何解决《Swig和Lua:如何将Lua文件映射到FILE*》经验,为你挑选了1个好方法。

我有一个C函数FILE*作为参数,我想在Lua中使用这个函数,传递Lua文件.我想我需要%typemap这个.怎么写呢?(我刚开始学习Lua).



1> marcin..:

这是我最终提出的解决方案.

在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函数.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有