#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») Имя перечисления; недостаточно, чтобы отменить присвоение имен в перечислении.