diff options
author | Renato Filho <renato.filho@openbossa.org> | 2011-05-06 19:03:59 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:15:22 -0300 |
commit | fd02167c862a6fedd47a1f531b051186799c256c (patch) | |
tree | 40c30c2169a1f8fe8d9f6738cb042f85f2652c3f /generator | |
parent | 96a4cc767fa930d236262904abebc4cdff54eff0 (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.cpp | 13 |
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()) { |