Код: Выделить всё
enum ShapeType {
ShapeTypeRect,
ShapeTypeCirle,
ShapeTypeDefault,
};
enum ShapeStyle {
ShapeStyleSolid,
ShapeStyleDashed,
ShapeStyleDefault,
};
Код: Выделить всё
class A {
ShapeType getShapeTyoe() const;
ShapeStyle getShapeStyle() const;
};
Сначала:
Код: Выделить всё
%inline %{
#include
%}
%rename("Solid") ShapeStyleSolid;
%rename("Dashed") ShapeStyleDashed;
%rename("Default") ShapeStyleDefault;
%include
Код: Выделить всё
%inline %{
#include
%}
%rename("Rect") ShapeTypeRect;
%rename("Circle") ShapeTypeCircle;
%rename("Default") ShapeTypeRect;
%include
который импортирует модули с помощью перечисления:
Код: Выделить всё
%import "Module_ShapeType.i"
%import "Module_ShapeStyle.i"
%inline %{
#include
%}
%include
р>
Код: Выделить всё
public ShapeType getShapeTyoe()
public SWIGTYPE_ShapeStyle getShapeStyle()
Если я изменю порядок импорта:
Код: Выделить всё
%import "Module_ShapeStyle.i"
%import "Module_ShapeType.i"
Код: Выделить всё
public SWIG_TYPE_ShapeType getShapeType()
public ShapeStyle getShapeStyle()
Есть ли способ это исправить?
Я тоже пробовал использовать один модуль для перечислений, но с переименованием возникла другая проблема:
р>
Код: Выделить всё
%rename("Rect") ShapeTypeRect;
%rename("Circle") ShapeTypeCircle;
%rename("Default") ShapeTypeRect;
%rename("Solid") ShapeStyleSolid;
%rename("Dashed") ShapeStyleDashed;
%rename("Default") ShapeStyleDefault;
p>
Я хотел бы использовать перечисление из Java/Kotlin, например ShapeStyle.Default ShapeType.Default вместо ShapeStyle.ShapeStyleDefault и ShapeType. ShapeTypeDefault таким образом я тоже хочу использовать эти переименования.
Можно ли добиться того, что я описал, используя отдельные модули, но я сделал что-то не так?
Или можно Я использую какой-то трюк с переименованием с использованием одного модуля?
Подробнее здесь: https://stackoverflow.com/questions/787 ... nt-modules