diff options
author | Hugo Parente Lima <hugo.lima@openbossa.org> | 2010-04-16 16:09:52 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.lima@openbossa.org> | 2010-04-22 19:45:25 -0300 |
commit | 5c59d232ecd1c03f920a11cd899e0699fc70c96b (patch) | |
tree | 1d686915970788e857fc7c36ee1281c54bb593cf | |
parent | ee42bc70bf41683d99a6862af22a1f4b3e006311 (diff) |
Added support for enums inside classes inside namespaces.
-rw-r--r-- | cppgenerator.cpp | 9 | ||||
-rw-r--r-- | tests/libsample/samplenamespace.h | 4 | ||||
-rwxr-xr-x | tests/samplebinding/namespace_test.py | 1 | ||||
-rw-r--r-- | tests/samplebinding/typesystem_sample.xml | 1 |
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_"/> |