префикс java-пакетов с помощью swig - PullRequest
1 голос
/ 30 августа 2011

Я генерирую код в Java с помощью SWIG.Один из сгенерированных классов принадлежит пакету (my.block.myint).И один из сгенерированных методов выглядит следующим образом:

public static boolean intersect(Box2D box1, Box2D box2) { ... }

Этот метод нуждается в классе с именем Box2D, который находится в другом пакете (my.core)

Мне бы хотелось, чтобы сгенерированная функция выгляделавот так:

public static boolean intersect(my.core.Box2D box1, my.core.Box2D box2) { ... }

На данный момент я использую эту прагму в моем файле .i:

%typemap(javaimports) Box2D "my.core.Box2D";

, которая копирует файл Box2D.java в пакет my.block.myint, но это не удовлетворительный метод.Спасибо за идеи!

1 Ответ

0 голосов
/ 02 февраля 2012

Если классы исходят из директивы %import для другого модуля SWIG, вы можете использовать %typemap("javapackage"), например,

%typemap("javapackage") Box2D, Box2D *, Box2D & "my.core.Box2D";

Если классы являются частью текущего модуляи вы хотите поместить текущий модуль в определенный пакет, вы можете сделать это с помощью -package при вызове SWIG, например:

swig -c++ -Wall -java -package my.core.Box2D -outdir my/core/Box2D box2d.i

Наконец, если вы хотите сделатьметоды в прокси-классе Java принимают тип Java, а не тот тип, о котором SWIG уже знает, что вы можете сделать:

%typemap(jstype) Box2D "my.core.Box2D"

, но учтите, что вам потребуется предоставить дополнительную карту типов, чтобы объяснить SWIG, как конвертироватьот типа my.core.Box2D до типа, который ожидает генерируемый им интерфейс JNI.Это может быть с javain картой типов или с jtype картой типов и соответствующей jni картой типов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...