%module rename_pcre_enum // This file is needed for proper enum support in C#/Java backends #if defined(SWIGCSHARP) || defined(SWIGJAVA) %include "enums.swg" #endif // Apply a rule for renaming the enum elements to avoid the common prefixes // redundant in C#/Java %rename("%(regex:/([A-Z][a-z]+)+_(.*)/\\2/)s",%$isenumitem) ""; // Also don't export special end of enum markers which are often used in C++ // code to just have a symbolic name for the number of enum elements but are // not needed in target language. %rename("$ignore", regexmatch$name="([A-Z][a-z]+)+_Max$",%$isenumitem) ""; // Test another way of doing the same thing with regextarget: %rename("$ignore", %$isenumitem, regextarget=1) "([A-Z][a-z]+)+_Internal$"; // Apply this renaming rule to all enum elements that don't contain more than // one capital letter. %rename("%(lower)s", notregexmatch$name="[A-Z]\\w*[A-Z]", %$isenumitem) ""; %inline %{ // Foo_Internal and Foo_Max won't be exported. enum Foo { Foo_Internal = -1, Foo_First, Foo_Second, Foo_Max }; // All elements of this enum will be exported because they do not match the // excluding regex. enum BoundaryCondition { BoundaryCondition_MinMax, BoundaryCondition_MaxMin, BoundaryCondition_MaxMax }; // The elements of this enum will have lower-case names. enum Colour { Red, Blue, Green }; %}