diff --git a/Examples/test-suite/cpp11_strongly_typed_enumerations_simple.i b/Examples/test-suite/cpp11_strongly_typed_enumerations_simple.i new file mode 100644 index 000000000..3848d2940 --- /dev/null +++ b/Examples/test-suite/cpp11_strongly_typed_enumerations_simple.i @@ -0,0 +1,5 @@ +%module cpp11_strongly_typed_enumerations_simple + +%include + +%include "cpp11_strongly_typed_enumerations.i" diff --git a/Examples/test-suite/java/Makefile.in b/Examples/test-suite/java/Makefile.in index dd6c74a51..310f1a773 100644 --- a/Examples/test-suite/java/Makefile.in +++ b/Examples/test-suite/java/Makefile.in @@ -40,6 +40,9 @@ CPP_TEST_CASES = \ java_typemaps_typewrapper # li_boost_intrusive_ptr +CPP11_TEST_CASES = \ + cpp11_strongly_typed_enumerations_simple \ + include $(srcdir)/../common.mk # Overridden variables here diff --git a/Source/Modules/java.cxx b/Source/Modules/java.cxx index 2b17721d9..440fbf95a 100644 --- a/Source/Modules/java.cxx +++ b/Source/Modules/java.cxx @@ -1368,6 +1368,7 @@ public: int unnamedinstance = GetFlag(parent, "unnamedinstance"); String *parent_name = Getattr(parent, "name"); String *nspace = getNSpace(); + String *newsymname = 0; String *tmpValue; // Strange hack from parent method @@ -1392,14 +1393,20 @@ public: { EnumFeature enum_feature = decodeEnumFeature(parent); + if ((enum_feature == SimpleEnum) && GetFlag(parent, "scopedenum")) { + newsymname = Swig_name_member(0, Getattr(parent, "sym:name"), symname); + symname = newsymname; + } + // Add to language symbol table String *scope = 0; if (unnamedinstance || !parent_name || enum_feature == SimpleEnum) { - if (proxy_class_name) { + String *enumClassPrefix = getEnumClassPrefix(); + if (enumClassPrefix) { scope = NewString(""); if (nspace) Printf(scope, "%s.", nspace); - Printf(scope, "%s", proxy_class_name); + Printf(scope, "%s", enumClassPrefix); } else { scope = Copy(constants_interface_name); } @@ -1464,6 +1471,7 @@ public: Delete(scope); } + Delete(newsymname); Delete(tmpValue); Swig_restore(n); return SWIG_OK;