Перейдите на java, перечисление typedef не создает тип перечисления в классе java

#java #c #enums #swig #typedef

Вопрос:

Я работаю над своим первым проектом swig с помощью сторонней библиотеки, которая очень старая. Существует сочетание перечислений proper и объявленных перечислений typedef, и swig делает то, что я ожидаю, с перечислениями, где он переводит реквизиты перечисления со значениями в java, но с перечислениями typedef он переводит их только в int.

пример.h

 typedef enum {  prop1 = data,  prop2 } enumName;  

файл.я

 %module example  %include "enums.swg" %javaconst(1);  %{ #include "example.h" %}  %include "example.h  

Как я могу добавить значения перечисления в созданный интерфейс java?

Правка 1.

Добавление перечисления typedef непосредственно в файл интерфейса создает файл java правильно с определением перечисления. Но является ли это правильным подходом ? похоже, что это потребует большого обслуживания во время обновления стороннего проекта.

новый файл.я

 %module example  %include "enums.swg" %javaconst(1);  %{ #include "example.h" %}  typedef enum {  prop1 = data,  prop2 } enumName;  %include "example.h  

Правка 2: Также действуют %игнорировать «» и %переименовать(«%s), и это, похоже, является виновником. использование того же подхода к другому файлу без игнорирования приведет к созданию обертки propper.

Правка 3: %игнорирование действительно было виновником. и %переименовать(«%s») Имя перечисления; недостаточно, чтобы отменить присвоение имен в перечислении.

Ответ №1:

%игнорирование действительно было виновником. и %переименовать(«%s») Имя перечисления; недостаточно, чтобы отменить присвоение имен в перечислении.