From abb888cfdde9a9a3efc9430ae8dc3a8164c42c2f Mon Sep 17 00:00:00 2001 From: Alexey Pelykh Date: Sun, 31 Aug 2014 12:14:29 +0300 Subject: [PATCH] Clean-up test suite and fix issue with nspace, as well as keep the fix for Class::Struct::EnumClass being JNI-referenced as Struct_EnumClass --- .../cpp11_strongly_typed_enumerations.i | 76 ------------------- Source/Modules/java.cxx | 13 +++- 2 files changed, 12 insertions(+), 77 deletions(-) diff --git a/Examples/test-suite/cpp11_strongly_typed_enumerations.i b/Examples/test-suite/cpp11_strongly_typed_enumerations.i index 8846d6877..feb7399a1 100644 --- a/Examples/test-suite/cpp11_strongly_typed_enumerations.i +++ b/Examples/test-suite/cpp11_strongly_typed_enumerations.i @@ -151,82 +151,6 @@ public: }; }; -/* -enum class Enum12 -{ - Val1 = 300, - Val2 = 400, - Val3, - Val4 -}; - -enum Enum13 -{ - Val1 = 300, - Val2 = 400, - Val3, - Val4 -}; -*/ - -namespace NS1 -{ - enum class Enum12 - { - Val1 = 300, - Val2 = 400, - Val3, - Val4 - }; - - enum Enum13 - { - Val1 = 300, - Val2 = 400, - Val3, - Val4 - }; - - class Class3 - { - public: - enum class Enum12 - { - Val1 = 300, - Val2 = 400, - Val3, - Val4 - }; - - enum Enum13 - { - Val1 = 300, - Val2 = 400, - Val3, - Val4 - }; - - struct Struct1 - { - enum class Enum14 - { - Val1 = 300, - Val2 = 400, - Val3, - Val4 - }; - - enum Enum15 - { - Val1 = 300, - Val2 = 400, - Val3, - Val4 - }; - }; - }; -} - /* TODO enum class MyClass {AAA, BBB, CCC}; diff --git a/Source/Modules/java.cxx b/Source/Modules/java.cxx index 411f7ad31..1fbc9dee2 100644 --- a/Source/Modules/java.cxx +++ b/Source/Modules/java.cxx @@ -3003,10 +3003,21 @@ public: value = NewStringf("%s.%s()", full_imclass_name ? full_imclass_name : imclass_name, Swig_name_get(getNSpace(), symname)); } else { memberconstantHandler(n); - String* full_proxy_class_sym_name = NewString(full_proxy_class_name); + String* outerClassesPrefix = NULL; + if (Node *outer = Getattr(getCurrentClass(), "nested:outer")) { + outerClassesPrefix = Copy(Getattr(outer, "sym:name")); + for (outer = Getattr(outer, "nested:outer"); outer != 0; outer = Getattr(outer, "nested:outer")) { + Push(outerClassesPrefix, "."); + Push(outerClassesPrefix, Getattr(outer, "sym:name")); + } + } + String* full_proxy_class_sym_name = outerClassesPrefix ? NewStringf("%s.%s", outerClassesPrefix, proxy_class_name) : NewStringf("%s", proxy_class_name); Replaceall(full_proxy_class_sym_name, ".", "_"); + /* Printf(stdout, "Change proxy class symname '%s' -> '%s'\n", proxy_class_name, full_proxy_class_sym_name); */ value = NewStringf("%s.%s()", full_imclass_name ? full_imclass_name : imclass_name, Swig_name_get(getNSpace(), Swig_name_member(0, full_proxy_class_sym_name, symname))); Delete(full_proxy_class_sym_name); + if (outerClassesPrefix) + Delete(outerClassesPrefix); } // Delete temporary symname if it was created