aboutsummaryrefslogtreecommitdiffstats
path: root/generator.cpp
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2011-09-22 17:58:52 -0300
committerMarcelo Lira <marcelo.lira@openbossa.org>2011-10-03 11:31:57 -0300
commitc0d2e563a1aeaf8b32e947248bb5453edd7d2263 (patch)
tree7fa0a8aebd2967903b7b9bef8aa4ec424deaaae1 /generator.cpp
parentebb972fcc8f8a6c322ded4960e1ed05f4e61fbd0 (diff)
Collect the instantiated container types from class fields.
Diffstat (limited to 'generator.cpp')
-rw-r--r--generator.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/generator.cpp b/generator.cpp
index df8c721eb..71964b41e 100644
--- a/generator.cpp
+++ b/generator.cpp
@@ -118,14 +118,24 @@ void Generator::collectInstantiatedContainers(const AbstractMetaFunction* func)
addInstantiatedContainers(arg->type());
}
+void Generator::collectInstantiatedContainers(const AbstractMetaClass* metaClass)
+{
+ if (!metaClass->typeEntry()->generateCode())
+ return;
+ foreach (const AbstractMetaFunction* func, metaClass->functions())
+ collectInstantiatedContainers(func);
+ foreach (const AbstractMetaField* field, metaClass->fields())
+ addInstantiatedContainers(field->type());
+ foreach (AbstractMetaClass* innerClass, metaClass->innerClasses())
+ collectInstantiatedContainers(innerClass);
+}
+
void Generator::collectInstantiatedContainers()
{
foreach (const AbstractMetaFunction* func, globalFunctions())
collectInstantiatedContainers(func);
- foreach (const AbstractMetaClass* metaClass, classes()) {
- foreach (const AbstractMetaFunction* func, metaClass->functions())
- collectInstantiatedContainers(func);
- }
+ foreach (const AbstractMetaClass* metaClass, classes())
+ collectInstantiatedContainers(metaClass);
}
QList<const AbstractMetaType*> Generator::instantiatedContainers() const