summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThiago Macieira <[email protected]>2024-10-07 19:47:29 -0700
committerThiago Macieira <[email protected]>2024-11-12 17:14:52 -0800
commit89871438b4e65b209c12ccbd647c782ea19fd4d5 (patch)
tree3338b82029af544810915e5f4d5b2afa33a7c2c8
parent9ba20b9dc48e42a042bda8373f9197b51be96c60 (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.cpp12
-rw-r--r--src/tools/moc/main.cpp7
-rw-r--r--src/tools/moc/parser.h8
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
{