Типы C ++ по ссылке, как SWIG к Java? - PullRequest
0 голосов
/ 04 марта 2020

Я использую SWIG, чтобы обернуть большую и сложную библиотеку. Некоторые типы переводятся как SWIGTYPE_p_myType, и это потому, что SWIG не знает, как их переводить в Java.

Например, это может произойти со следующим кодом

enum Eenum {zero, one};

class Foo {

public:
    void _enums(Eenum& outEnum);
    void _doubles(double& outDouble);
};

Использование простого .i файла, подобного этому

%module customtypemaps
%{
#include "customtypemaps.h"
%}

%include "customtypemaps.h"

приведет к созданию следующих файлов:

Eenum.java
Foo.java
SWIGTYPE_p_Eenum.java
SWIGTYPE_p_double.java
customtypemaps.java
customtypemapsJNI.java

В то время как SWIGTYPE_p_double просто удалить, просто используя таблицы типов в typemaps.i вот так:

%module customtypemaps
%{
#include "customtypemaps.h"
%}

%include <typemaps.i>
%apply double & OUTPUT { double & outDouble }
%include "customtypemaps.h"

Я не понимаю, как справиться с перечислением (или другим подобным использованием), которое у меня есть в проекте.

Я понимаю, что у меня есть определить свою пользовательскую карту типов, но не понимаю, что именно мне нужно делать.

Спасибо за вашу помощь.

AL

...