aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cppgenerator.cpp9
-rw-r--r--tests/libsample/samplenamespace.h4
-rwxr-xr-xtests/samplebinding/namespace_test.py1
-rw-r--r--tests/samplebinding/typesystem_sample.xml1
4 files changed, 9 insertions, 6 deletions
diff --git a/cppgenerator.cpp b/cppgenerator.cpp
index 28809330a..4214c1571 100644
--- a/cppgenerator.cpp
+++ b/cppgenerator.cpp
@@ -2318,13 +2318,10 @@ void CppGenerator::writeEnumInitialization(QTextStream& s, const AbstractMetaEnu
{
QString cpythonName = cpythonEnumName(cppEnum);
QString addFunction;
- if (cppEnum->enclosingClass()) {
- addFunction = QString("PyDict_SetItemString(Sbk")
- + cppEnum->enclosingClass()->name()
- + "_Type.super.ht_type.tp_dict,";
- } else {
+ if (cppEnum->enclosingClass())
+ addFunction = "PyDict_SetItemString(" + cpythonTypeName(cppEnum->enclosingClass()) + ".super.ht_type.tp_dict,";
+ else
addFunction = "PyModule_AddObject(module,";
- }
s << INDENT << "// init enum class: " << cppEnum->name() << endl;
s << INDENT << cpythonTypeNameExt(cppEnum->typeEntry()) << " = &" << cpythonTypeName(cppEnum->typeEntry()) << ';' << endl;
diff --git a/tests/libsample/samplenamespace.h b/tests/libsample/samplenamespace.h
index 2cc371e34..b3b3a822d 100644
--- a/tests/libsample/samplenamespace.h
+++ b/tests/libsample/samplenamespace.h
@@ -76,6 +76,10 @@ public:
public:
class OkThisIsRecursiveEnough
{
+ public:
+ enum NiceEnum {
+ NiceValue1, NiceValue2
+ };
};
};
};
diff --git a/tests/samplebinding/namespace_test.py b/tests/samplebinding/namespace_test.py
index 942b65560..003d81b11 100755
--- a/tests/samplebinding/namespace_test.py
+++ b/tests/samplebinding/namespace_test.py
@@ -34,6 +34,7 @@ class TestClassesUnderNamespace(unittest.TestCase):
c1 = SampleNamespace.SomeClass()
c2 = SampleNamespace.SomeClass.SomeInnerClass()
c3 = SampleNamespace.SomeClass.SomeInnerClass.OkThisIsRecursiveEnough()
+ e3 = SampleNamespace.SomeClass.SomeInnerClass.OkThisIsRecursiveEnough.NiceEnum()
if __name__ == '__main__':
unittest.main()
diff --git a/tests/samplebinding/typesystem_sample.xml b/tests/samplebinding/typesystem_sample.xml
index bb0d98e1f..85fc3e3d3 100644
--- a/tests/samplebinding/typesystem_sample.xml
+++ b/tests/samplebinding/typesystem_sample.xml
@@ -100,6 +100,7 @@
<value-type name="SampleNamespace::SomeClass" />
<value-type name="SampleNamespace::SomeClass::SomeInnerClass" />
<value-type name="SampleNamespace::SomeClass::SomeInnerClass::OkThisIsRecursiveEnough" />
+ <enum-type name="SampleNamespace::SomeClass::SomeInnerClass::OkThisIsRecursiveEnough::NiceEnum" />
<object-type name="Abstract">
<modify-function signature="id()" rename="id_"/>