обернуть функцию, параметры которой выходят указатель на структуру, используя swig - PullRequest
0 голосов
/ 02 апреля 2010

У меня есть следующая функция:

typedef struct tagT{
int a ;
int b ;
}Point;

int lib_a_f_5(Point *out_t)
{

out_t->a = 20;
out_t->b = 30;

return 0;
}

Как мне указать SWIG генерировать правильный код для ruby ​​(или lua)? При добавлении следующего выражения в файл интерфейса:

%apply SWIGTYPE Point* {Point *out_t};

Я получил предупреждение:

liba.i:7: Warning(453): Can't apply (Point *OUTPUT). No typemaps are defined.

Мне нужно было написать карту типов? Как мне это сделать?

1 Ответ

1 голос
/ 06 апреля 2010

Никаких специальных действий в файле интерфейса предпринимать не нужно. SWIG может позаботиться об этом.

Lua 5.1.3  Copyright (C) 1994-2008 Lua.org, PUC-Rio
> require 'mylib_swig'
> t=mylib_swig.Point()
> print(t.a)
0
> print(t.b)
0
> mylib_swig.lib_a_f_5(t)
in lib_a_f_5 
> print(t.a)
20
> print(t.b)
30
> 
...