2014-09-21 2 views
3

두 개의 C 라이브러리와 함께 Lua를 사용하고 있는데 그 중 하나는 SWIG를 사용하고 다른 하나는 수동으로 래핑합니다.SWIG 데이터 구조에 외래 포인터 래핑

수동으로 포장 된 라이브러리는 Freetype에 대한 인터페이스입니다. lightuserdata로 반환하는 C에서 FT_Face 포인터를 만듭니다.

이제 SWIG로 싸인 함수 중 하나에 매개 변수로 this FT_Face을 전달해야합니다. 그러나 SWIG는 보통 사용자 데이터를 매개 변수로 사용하지 않지만 모든 C 포인터가 SWIG에 의해 생성 될 것으로 예상합니다. FT_Face 포인터가 있더라도 SWIG는 SWIGTYPE_p_FT_Face을 보려고합니다. swig_lua_userdata입니다.

루아 사용자 데이터를 swig_lua_userdata으로 변환하는 방법이 있습니까? SWIG가 내 FT_Face userdata를 함수의 유효한 매개 변수로 '인식'하도록하려면 어떻게해야합니까?

답변

0

대답은 수 "적인 typemap"로 나타납니다

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