diff options
Diffstat (limited to 'Examples/test-suite/cpp11_strongly_typed_enumerations.i')
-rw-r--r-- | Examples/test-suite/cpp11_strongly_typed_enumerations.i | 183 |
1 files changed, 157 insertions, 26 deletions
diff --git a/Examples/test-suite/cpp11_strongly_typed_enumerations.i b/Examples/test-suite/cpp11_strongly_typed_enumerations.i index ed466369e..3a4ee107a 100644 --- a/Examples/test-suite/cpp11_strongly_typed_enumerations.i +++ b/Examples/test-suite/cpp11_strongly_typed_enumerations.i @@ -1,11 +1,9 @@ -/* This testcase checks whether SWIG produces the correct wrapper for the - strongly typed enums. Enums with the same type are comparable. Enum classes - require support for nested classes. */ +// This testcase checks whether SWIG produces the correct wrappers for strongly typed enums. + %module cpp11_strongly_typed_enumerations -%warnfilter(302) Val1; -%warnfilter(302) Val2; -%warnfilter(302) Val3; -%warnfilter(302) Val4; + +%warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Class1::Struct1; +%warnfilter(SWIGWARN_PARSE_NAMED_NESTED_CLASS) Class2::Struct1; /* Forward declarations (illegally accepted by SWIG - oh well!) */ enum Enum1 : short; @@ -17,15 +15,19 @@ enum : unsigned short; enum class Enum1 { Val1, Val2, - Val3 = 100, - Val4 /* = 101 */ + Val3 = 13, + Val4, + Val5a = 13, + Val6a }; enum class Enum2 : short { Val1, Val2, - Val3 = 100, - Val4 + Val3 = 23, + Val4, + Val5b = 23, + Val6b }; %} @@ -39,24 +41,24 @@ enum class Enum5; // Legal in C++11, because enum class declarati enum class Enum6 : unsigned int; // Legal C++11. enum Enum4 : unsigned int { - Val1, Val2, Val3 = 100, Val4 + Val1, Val2, Val3 = 43, Val4 }; enum class Enum5 { - Val1, Val2, Val3 = 100, Val4 + Val1, Val2, Val3 = 53, Val4 }; enum class Enum6 : unsigned int { - Val1, Val2, Val3 = 300, Val4 + Val1, Val2, Val3 = 63, Val4 }; typedef enum class Enum7 : unsigned int { - Val1, Val2, Val3 = 300, Val4 + Val1, Val2, Val3 = 73, Val4 } Enum7td; // enum inherits from non-primitive type enum class Enum8 : size_t { - Val1, Val2, Val3 = 300, Val4 + Val1, Val2, Val3 = 83, Val4 }; template <typename T> struct TType { @@ -64,7 +66,7 @@ template <typename T> struct TType { }; enum class Enum10 : TType<int>::type_name { - Val1, Val2, Val3 = 300, Val4 + Val1, Val2, Val3 = 103, Val4 }; // forward declaration, no definition of enum @@ -73,15 +75,144 @@ struct UseEnum11 { Enum11 myenum11; }; -/* -TODO -enum class MyClass {AAA, BBB, CCC}; -namespace Space { -enum MyEnum {XXX, YYY, ZZZ}; -} -struct SSS { - MyClass m; +class Class1 +{ +public: + enum class Enum12 + { + Val1 = 1121, + Val2 = 1122, + Val3, + Val4, + Val5c = 1121, + Val6c + }; + + enum Enum13 + { + Val1 = 1131, + Val2 = 1132, + Val3, + Val4, + Val5d = 1131, + Val6d + }; + + enum class Enum14 + { + Val1 = 1141, + Val2 = 1142, + Val3, + Val4, + Val5e = 1141, + Val6e + }; + + struct Struct1 + { + enum class Enum12 + { + Val1 = 3121, + Val2 = 3122, + Val3, + Val4, + Val5f = 3121, + Val6f + }; + + enum Enum13 + { + Val1 = 3131, + Val2 = 3132, + Val3, + Val4, + }; + + enum class Enum14 + { + Val1 = 3141, + Val2 = 3142, + Val3, + Val4, + Val5g = 3141, + Val6g + }; + }; + Enum1 class1Test1(Enum1 e) { return e; } + Enum12 class1Test2(Enum12 e) { return e; } + Struct1::Enum12 class1Test3(Struct1::Enum12 e) { return e; } +}; + +class Class2 +{ +public: + enum class Enum12 + { + Val1 = 2121, + Val2 = 2122, + Val3, + Val4, + Val5h = 2121, + Val6h + }; + + enum Enum13 + { + Val1 = 2131, + Val2 = 2132, + Val3, + Val4, + Val5i = 2131, + Val6i + }; + + enum class Enum14 + { + Val1 = 2141, + Val2 = 2142, + Val3, + Val4, + Val5j = 2141, + Val6j + }; + + struct Struct1 + { + enum class Enum12 + { + Val1 = 4121, + Val2 = 4122, + Val3, + Val4, + Val5k = 4121, + Val6k + }; + + enum Enum13 + { + Val1 = 4131, + Val2 = 4132, + Val3, + Val4, + Val5l = 4131, + Val6l + }; + + enum class Enum14 + { + Val1 = 4141, + Val2 = 4142, + Val3, + Val4, + Val5m = 4141, + Val6m + }; + }; }; -*/ + +Enum1 globalTest1(Enum1 e) { return e; } +Class1::Enum12 globalTest2(Class1::Enum12 e) { return e; } +Class1::Struct1::Enum12 globalTest3(Class1::Struct1::Enum12 e) { return e; } + %} |