aboutsummaryrefslogtreecommitdiffstats
path: root/generator
diff options
context:
space:
mode:
authorRenato Filho <renato.filho@openbossa.org>2011-05-06 19:03:59 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:15:22 -0300
commitfd02167c862a6fedd47a1f531b051186799c256c (patch)
tree40c30c2169a1f8fe8d9f6738cb042f85f2652c3f /generator
parent96a4cc767fa930d236262904abebc4cdff54eff0 (diff)
Only use qRegisterMetaType for Value types.
fixes bug #847. Reviewer: Marcelo Lira <marcelo.lira@openbossa.org> Hugo Parente Lima <hugo.pl@gmail.com>
Diffstat (limited to 'generator')
-rw-r--r--generator/cppgenerator.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/generator/cppgenerator.cpp b/generator/cppgenerator.cpp
index 790563772..4da2678df 100644
--- a/generator/cppgenerator.cpp
+++ b/generator/cppgenerator.cpp
@@ -29,6 +29,7 @@
#include <QtCore/QDir>
#include <QtCore/QTextStream>
#include <QtCore/QDebug>
+#include <QMetaType>
QHash<QString, QString> CppGenerator::m_nbFuncs = QHash<QString, QString>();
QHash<QString, QString> CppGenerator::m_sqFuncs = QHash<QString, QString>();
@@ -3676,21 +3677,23 @@ void CppGenerator::writeInitQtMetaTypeFunctionBody(QTextStream& s, const Abstrac
}
const QString className = metaClass->qualifiedCppName();
- if (!metaClass->isNamespace() && !metaClass->isAbstract()) {
+ if (!metaClass->isNamespace() && !metaClass->isAbstract()) {
// Qt metatypes are registered only on their first use, so we do this now.
- const char* star = "*";
+ bool canBeValue = false;
if (!metaClass->typeEntry()->isObject()) {
// check if there's a empty ctor
foreach (AbstractMetaFunction* func, metaClass->functions()) {
if (func->isConstructor() && !func->arguments().count()) {
- star = "";
+ canBeValue = true;
break;
}
}
}
- foreach (QString name, nameVariants)
- s << INDENT << "qRegisterMetaType< ::" << className << star << " >(\"" << name << star << "\");" << endl;
+ if (canBeValue) {
+ foreach (QString name, nameVariants)
+ s << INDENT << "qRegisterMetaType< ::" << className << " >(\"" << name << "\");" << endl;
+ }
}
foreach (AbstractMetaEnum* metaEnum, metaClass->enums()) {
if (!metaEnum->isPrivate() && !metaEnum->isAnonymous()) {