У меня есть библиотека с типобезопасными перечислениями в следующей форме:
struct MyEnum {
enum Value { One, Two, Three };
MyEnum() : value(-1) {}
MyEnum(Value v) : value(v) {}
Value value;
};
И я хочу, чтобы swig игнорировал структуру и просто преобразовывал ее в обычное перечисление C#, вот так:
public enum MyEnum { One, Two, Three }
До сих пор я пробовал использовать %rename с функцией плоского вложения, но перечисление не генерируется.
%include
%feature("flatnested");
%rename(MyEnum) MyEnum::Value;
%ignore MyEnum;
struct MyEnum {
enum Value { One, Two, Three };
};
Однако, если я использую анонимное перечисление, вложенное в структуру, оно работает нормально.
%include
%feature("flatnested");
%rename(MyEnum) MyEnum::Value;
%ignore MyEnum;
struct MyEnum {
struct Value {
enum { One, Two, Three };
};
};
Подробнее здесь: https://stackoverflow.com/questions/789 ... using-swig