Я хочу обернуть следующую функцию C.Обратите внимание, что приведение типов из Foo_t * в Bar_t *:
void function(Foo_t * f) {
Bar_t * b = (Bar_t *) f; // casting is done in C original code
//do sth with b
}
Swig генерирует оболочку, которая соответствует следующему шаблону:
void wrap_function( Foo_t *foo ) {
function(foo);
}
Но в Python я хочу вызвать свою функцию оболочкис использованием экземпляра Bar_t:
b = Bar_t()
function(b)
Итак, я запустил следующую карту типов:
%typemap(in) Foo * {
Bar_t *temp;
int res0 = 0;
Foo_t *arg = 0;
res0 = SWIG_ConvertPtr($input, (void **) &temp, $descriptor(Bar_t *), 0|0);
if (!SWIG_IsOK(res0)) {
SWIG_exception_fail(SWIG_ArgError(res0), "in method '" "function" "', argument " "1"" of type '" "Bar_t *""'");
}
$1 = (Foo_t *) temp;
function(arg);
}
Но исключение выдается!
Как я могу привести изОт Bar_t * до Foo_t *?