aboutsummaryrefslogtreecommitdiffstats
path: root/typesystem.cpp
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2009-11-16 15:24:19 -0300
committerMarcelo Lira <marcelo.lira@openbossa.org>2009-11-16 15:31:44 -0300
commitef54513a48df32b3f5d9b19e077d0ac4fefeae63 (patch)
tree99b78ebfa9a93f2dc286b7bc2201cc8e5aaf2ac4 /typesystem.cpp
parent4b1d0e2c4213066bca5f1363403875772abd6219 (diff)
The type system parser now reuses TypeSystemTypeEntry for the any module
file being parsed. The existing module retrieval is based on the module name given as attribute of the "typesystem" tag. This allows helps when a single module is described on multiple type system files. Reviewed by Renato Araujo <renato.filho@openbossa.org>
Diffstat (limited to 'typesystem.cpp')
-rw-r--r--typesystem.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/typesystem.cpp b/typesystem.cpp
index cc6db6ed2..87607130b 100644
--- a/typesystem.cpp
+++ b/typesystem.cpp
@@ -938,13 +938,16 @@ bool Handler::startElement(const QString &, const QString &n,
m_defaultPackage = attributes["package"];
m_defaultSuperclass = attributes["default-superclass"];
element->type = StackElement::Root;
- element->entry = new TypeSystemTypeEntry(m_defaultPackage);
+ {
+ TypeSystemTypeEntry* moduleEntry = reinterpret_cast<TypeSystemTypeEntry*>(
+ m_database->findType(m_defaultPackage));
+ element->entry = moduleEntry ? moduleEntry : new TypeSystemTypeEntry(m_defaultPackage);
+ }
if ((m_generate == TypeEntry::GenerateForSubclass ||
m_generate == TypeEntry::GenerateNothing) && m_defaultPackage != "")
TypeDatabase::instance()->addRequiredTargetImport(m_defaultPackage);
-
if (!element->entry->qualifiedCppName().isEmpty())
m_database->addType(element->entry);
break;