Определите файл интерфейса Swig для создания оболочки для каждого типа из некоторого заголовочного файла - PullRequest
0 голосов
/ 05 мая 2010

Мы используем некоторую библиотеку C в нашем проекте Java. Несколько лет назад какой-то другой разработчик, который ушел в отставку несколько лет назад (как всегда), создал все оболочки для нас. Оболочки были сгенерированы swig, но файл интерфейса теперь потерян.

Основная идея библиотеки и оболочек для нее следующая:

  • Там только одна функция, которая возвращает указатель на некоторый сложный объект. И есть обертка для этой функции.
  • Сложный объект представляет собой древовидную структуру с десятками типов и типов узлов (структур C), используемых для их представления. Существуют сотни оболочек для каждого поля каждого типа, и мы пытаемся использовать их все.

Библиотека была обновлена ​​некоторое время назад, и теперь есть некоторые новые данные, о которых мы еще не знаем, но хотели бы использовать. Эти данные содержатся в некоторых объектах, косвенно содержащихся или на которые ссылается объект, созданный функцией, которую мы вызываем (добавлены некоторые новые поля и типы).

Я знаю, что я не должен вносить какие-либо изменения в обертки вручную и должен скорее изменять интерфейс, но, как я уже писал, он отсутствует. Пока я хочу создать оболочки только для нескольких типов, которые добавляются / изменяются, и их в наших старых оболочках, но позже я хочу начать создание файла интерфейса, который определит, «что и как должно быть упаковано».

Все необходимые нам определения определены в одном заголовочном файле. Можно ли сказать swig генерировать оболочки для каждого типа в этом заголовке? Если так, как я могу написать такой файл интерфейса?

1 Ответ

2 голосов
/ 07 мая 2010

Из учебника swig :

Как оказалось, это не всегда необходимо написать специальный интерфейс файл. Если у вас есть файл заголовка, вы часто можно просто включить его непосредственно в интерфейс SWIG. Например:

 %module example
 %{
 /* Includes the header in the wrapper code */
 #include "header.h"
 %}

 /* Parse the header file to generate wrappers */
 %include "header.h"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...