aboutsummaryrefslogtreecommitdiffstats
path: root/generator
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2011-07-28 19:49:28 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:17:06 -0300
commit8f86bd422a59b9f2f3460a657da196725b3356f2 (patch)
tree18c11205bc86880ab64fd78b0614a5652d0b796d /generator
parentc992fc0ce7eb6a2f31134328d8aa80aeabaafe97 (diff)
Centralized the generation of global and class enums in one method.
Diffstat (limited to 'generator')
-rw-r--r--generator/cppgenerator.cpp35
-rw-r--r--generator/cppgenerator.h1
2 files changed, 16 insertions, 20 deletions
diff --git a/generator/cppgenerator.cpp b/generator/cppgenerator.cpp
index e64a2bf70..deaa9e69d 100644
--- a/generator/cppgenerator.cpp
+++ b/generator/cppgenerator.cpp
@@ -3129,6 +3129,19 @@ void CppGenerator::writeMethodDefinition(QTextStream& s, const AbstractMetaFunct
s << ',' << endl;
}
+void CppGenerator::writeEnumsInitialization(QTextStream& s, AbstractMetaEnumList& enums)
+{
+ if (enums.isEmpty())
+ return;
+ s << INDENT << "// Initialization of enums." << endl;
+ s << INDENT << "PyObject* enumItem;" << endl << endl;
+ foreach (const AbstractMetaEnum* cppEnum, enums) {
+ if (cppEnum->isPrivate())
+ continue;
+ writeEnumInitialization(s, cppEnum);
+ }
+}
+
void CppGenerator::writeEnumInitialization(QTextStream& s, const AbstractMetaEnum* cppEnum)
{
const AbstractMetaClass* enclosingClass = getProperEnclosingClassForEnum(cppEnum);
@@ -3527,16 +3540,7 @@ void CppGenerator::writeClassRegister(QTextStream& s, const AbstractMetaClass* m
foreach (AbstractMetaClass* innerClass, metaClass->innerClasses())
lookForEnumsInClassesNotToBeGenerated(classEnums, innerClass);
- if (!classEnums.isEmpty()) {
- s << INDENT << "// Initialize enums" << endl;
- s << INDENT << "PyObject* enumItem;" << endl << endl;
- }
-
- foreach (const AbstractMetaEnum* cppEnum, classEnums) {
- if (cppEnum->isPrivate())
- continue;
- writeEnumInitialization(s, cppEnum);
- }
+ writeEnumsInitialization(s, classEnums);
if (metaClass->hasSignals())
writeSignalInitialization(s, metaClass);
@@ -3971,16 +3975,7 @@ void CppGenerator::finishGeneration()
}
s << endl;
- if (!globalEnums.isEmpty()) {
- s << INDENT << "// Initialize enums" << endl;
- s << INDENT << "PyObject* enumItem;" << endl << endl;
- }
-
- foreach (const AbstractMetaEnum* cppEnum, globalEnums) {
- if (cppEnum->isPrivate())
- continue;
- writeEnumInitialization(s, cppEnum);
- }
+ writeEnumsInitialization(s, globalEnums);
// Register primitive types on TypeResolver
s << INDENT << "// Register primitive types on TypeResolver" << endl;
diff --git a/generator/cppgenerator.h b/generator/cppgenerator.h
index 5769f8e46..df3a6604f 100644
--- a/generator/cppgenerator.h
+++ b/generator/cppgenerator.h
@@ -160,6 +160,7 @@ private:
void writeRichCompareFunction(QTextStream& s, const AbstractMetaClass* metaClass);
void writeToPythonFunction(QTextStream& s, const AbstractMetaClass* metaClass);
+ void writeEnumsInitialization(QTextStream& s, AbstractMetaEnumList& enums);
void writeEnumInitialization(QTextStream& s, const AbstractMetaEnum* metaEnum);
void writeSignalInitialization(QTextStream& s, const AbstractMetaClass* metaClass);