将外部指针包装到SWIG数据结构中

时间:2014-09-21 00:35:33

标签: lua swig

我使用Lua和两个C库,其中一个使用SWIG,另一个是手动包装。

手动包装的库是Freetype的接口;它在C中创建FT_Face指针,它作为lightuserdata返回。

现在我需要将此FT_Face作为参数传递给SWIG包装的其中一个函数。但是,SWIG当然不会将普通的userdata作为参数,但是希望每个C指针都是由SWIG创建的 - 即使我有一个FT_Face指针,SWIG希望看到SWIGTYPE_p_FT_Face,这是{ {1}}下面。

有没有办法将Lua userdata变成swig_lua_userdata?我如何让SWIG认识到'我的swig_lua_userdata userdata作为函数的有效参数?

1 个答案:

答案 0 :(得分:0)

答案似乎是" typemaps":

%typemap(in) FT_Face {
   $1 = (FT_Face)lua_touserdata(L,$input);
}
%typemap(typecheck) FT_Face = void*;