Преобразование типобезопасного перечисления C++ в перечисление C# с помощью swigC#

Место общения программистов C#
Ответить
Anonymous
 Преобразование типобезопасного перечисления C++ в перечисление C# с помощью swig

Сообщение Anonymous »

У меня есть библиотека с типобезопасными перечислениями в следующей форме:
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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»