Как использовать выходной параметр в Ruby без использования карты типов swig - PullRequest
0 голосов
/ 11 ноября 2010

У меня есть библиотека C в Swig, которую я использую в Ruby.У меня нет контроля над Swig или какими-либо определениями интерфейсов, поскольку это делается поставщиком интерфейса.

Нет, я не обнаружил, что в библиотеке есть функция, для которой определен выходной параметр char ** (среди прочих),Пример определения функции:

void get_information(char * input, char **output, int someint)

Конечно, моя первая попытка в Ruby была:

output_thing = ''
get_information "input", output_thing, 123
puts output_thing

Это привело к сообщению об ошибке

Ожидаемый аргумент 1типа char **, но получил String ""

Не имея опыта в Swig, я немного застрял.Можно ли использовать эту функцию в Swig без определения или использования карты типов?

Заранее благодарим за ваши быстрые ответы!

1 Ответ

1 голос
/ 12 ноября 2010

Я нашла это (детка!) Существует метод new_charpp, который создает правильный тип данных. Очевидно, у вас есть несколько таких методов для каждого из примитивов и обычно используемых типов данных (new_longpp, new_longlongpp, new_intpp и так далее).

После этого вы можете прочитать правильное содержимое из этой переменной, используя charpp_value (...)

...