diff options
author | Thiago Macieira <[email protected]> | 2024-10-07 19:47:29 -0700 |
---|---|---|
committer | Thiago Macieira <[email protected]> | 2024-11-12 17:14:52 -0800 |
commit | 89871438b4e65b209c12ccbd647c782ea19fd4d5 (patch) | |
tree | 3338b82029af544810915e5f4d5b2afa33a7c2c8 | |
parent | 9ba20b9dc48e42a042bda8373f9197b51be96c60 (diff) |
moc: add a hidden --active-qt option for ActiveQt
So it doesn't have to clean up the output, which it may get wrong. It
doesn't want the qt_static_metacall function or the signal
implementations.
Change-Id: Ia0b110db8d5ef60020bdfffdbe547052dcff210e
Reviewed-by: Oliver Wolff <[email protected]>
-rw-r--r-- | src/tools/moc/generator.cpp | 12 | ||||
-rw-r--r-- | src/tools/moc/main.cpp | 7 | ||||
-rw-r--r-- | src/tools/moc/parser.h | 8 |
3 files changed, 20 insertions, 7 deletions
diff --git a/src/tools/moc/generator.cpp b/src/tools/moc/generator.cpp index 896a52b561e..84f0d3f45e6 100644 --- a/src/tools/moc/generator.cpp +++ b/src/tools/moc/generator.cpp @@ -239,9 +239,11 @@ void Generator::generateCode() registerEnumStrings(); const bool requireCompleteness = requireCompleteTypes || cdef->requireCompleteMethodTypes; - const bool hasStaticMetaCall = + bool hasStaticMetaCall = (cdef->hasQObject || !cdef->methodList.isEmpty() || !cdef->propertyList.isEmpty() || !cdef->constructorList.isEmpty()); + if (parser->activeQtMode) + hasStaticMetaCall = false; const QByteArray qualifiedClassNameIdentifier = generateQualifiedClassNameIdentifier(cdef->qualified); @@ -471,10 +473,11 @@ static constexpr auto qt_staticMetaObjectRelocatingContent%s = if (!cdef->hasQObject) return; - fprintf(out, "\nconst QMetaObject *%s::metaObject() const\n{\n return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;\n}\n", + fprintf(out, "\nconst QMetaObject *%s::metaObject() const\n{\n" + " return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;\n" + "}\n", cdef->qualified.constData()); - // // Generate smart cast function // @@ -513,6 +516,9 @@ static constexpr auto qt_staticMetaObjectRelocatingContent%s = } fprintf(out, "}\n"); + if (parser->activeQtMode) + return; + // // Generate internal qt_metacall() function // diff --git a/src/tools/moc/main.cpp b/src/tools/moc/main.cpp index 89fb367ca78..f63e74226a5 100644 --- a/src/tools/moc/main.cpp +++ b/src/tools/moc/main.cpp @@ -279,6 +279,10 @@ int runMoc(int argc, char **argv) noNotesWarningsCompatOption.setFlags(QCommandLineOption::ShortOptionStyle); parser.addOption(noNotesWarningsCompatOption); + QCommandLineOption activeQtMode(QStringLiteral("active-qt")); + activeQtMode.setFlags(QCommandLineOption::HiddenFromHelp); + parser.addOption(activeQtMode); + QCommandLineOption noNotesOption(QStringLiteral("no-notes")); noNotesOption.setDescription(QStringLiteral("Do not display notes.")); parser.addOption(noNotesOption); @@ -337,6 +341,9 @@ int runMoc(int argc, char **argv) parser.process(arguments); + // used by ActiveQt's dumpcpp to suppress some functions + moc.activeQtMode = parser.isSet(activeQtMode); + const QStringList files = parser.positionalArguments(); output = parser.value(outputOption); if (parser.isSet(collectOption)) diff --git a/src/tools/moc/parser.h b/src/tools/moc/parser.h index 6fe982a1ce7..5c84a98990a 100644 --- a/src/tools/moc/parser.h +++ b/src/tools/moc/parser.h @@ -14,11 +14,11 @@ QT_BEGIN_NAMESPACE class Parser { public: - Parser():index(0), displayWarnings(true), displayNotes(true) {} Symbols symbols; - qsizetype index; - bool displayWarnings; - bool displayNotes; + qsizetype index = 0; + bool displayWarnings = true; + bool displayNotes = true; + bool activeQtMode = false; struct IncludePath { |