diff options
| author | Olivier De Cannière <olivier.decanniere@qt.io> | 2025-12-05 02:33:02 +0100 |
|---|---|---|
| committer | Fabian Kosmale <fabian.kosmale@qt.io> | 2025-12-06 14:41:47 +0100 |
| commit | 743f96ffc128abe0412487a2a210b0f423544c0f (patch) | |
| tree | 9ea291037c728b6967c51eaec76047778f107f6f | |
| parent | 0581ed6e3b9ecc0fa22b98815ada7edb6d66a114 (diff) | |
moc: Extract mutating enumList manipulation from the Generator
This allows for classList to be const from that point on and for the
generator to only take a const reference to it.
Task-number: QTBUG-142186
Change-Id: Ib43bfcb1a477a471b39c4b037d56f4dea42e04e7
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
| -rw-r--r-- | src/tools/moc/generator.cpp | 20 | ||||
| -rw-r--r-- | src/tools/moc/generator.h | 4 | ||||
| -rw-r--r-- | src/tools/moc/moc.cpp | 20 |
3 files changed, 22 insertions, 22 deletions
diff --git a/src/tools/moc/generator.cpp b/src/tools/moc/generator.cpp index 6e7077b383e..292ec61413d 100644 --- a/src/tools/moc/generator.cpp +++ b/src/tools/moc/generator.cpp @@ -78,7 +78,7 @@ QT_FOR_EACH_STATIC_TYPE(RETURN_METATYPENAME_STRING) return nullptr; } - Generator::Generator(Moc *moc, ClassDef *classDef, const QList<QByteArray> &metaTypes, + Generator::Generator(Moc *moc, const ClassDef *classDef, const QList<QByteArray> &metaTypes, const QHash<QByteArray, QByteArray> &knownQObjectClasses, const QHash<QByteArray, QByteArray> &knownGadgets, FILE *outfile, bool requireCompleteTypes) @@ -228,24 +228,6 @@ void Generator::generateCode() bool isQObject = (cdef->classname == "QObject"); bool isConstructible = !cdef->constructorList.isEmpty(); - // filter out undeclared enumerators and sets - { - QList<EnumDef> enumList; - for (EnumDef def : std::as_const(cdef->enumList)) { - if (cdef->enumDeclarations.contains(def.name)) { - enumList += def; - } - def.enumName = def.name; - QByteArray alias = cdef->flagAliases.value(def.name); - if (cdef->enumDeclarations.contains(alias)) { - def.name = alias; - def.flags |= cdef->enumDeclarations[alias]; - enumList += def; - } - } - cdef->enumList = enumList; - } - // // Register all strings used in data section // diff --git a/src/tools/moc/generator.h b/src/tools/moc/generator.h index 45df0783c2b..482e0de46a6 100644 --- a/src/tools/moc/generator.h +++ b/src/tools/moc/generator.h @@ -12,11 +12,11 @@ class Generator { Moc *parser = nullptr; FILE *out; - ClassDef *cdef; + const ClassDef *cdef; QList<uint> meta_data; public: - Generator(Moc *moc, ClassDef *classDef, const QList<QByteArray> &metaTypes, + Generator(Moc *moc, const ClassDef *classDef, const QList<QByteArray> &metaTypes, const QHash<QByteArray, QByteArray> &knownQObjectClasses, const QHash<QByteArray, QByteArray> &knownGadgets, FILE *outfile = nullptr, bool requireCompleteTypes = false); diff --git a/src/tools/moc/moc.cpp b/src/tools/moc/moc.cpp index baa6690350d..36fac34ee08 100644 --- a/src/tools/moc/moc.cpp +++ b/src/tools/moc/moc.cpp @@ -1247,12 +1247,30 @@ void Moc::generate(FILE *out, FILE *jsonOutput) "#endif\n\n"); #endif + // filter out undeclared enumerators and sets + for (ClassDef &cdef : classList) { + QList<EnumDef> enumList; + for (EnumDef def : std::as_const(cdef.enumList)) { + if (cdef.enumDeclarations.contains(def.name)) { + enumList += def; + } + def.enumName = def.name; + QByteArray alias = cdef.flagAliases.value(def.name); + if (cdef.enumDeclarations.contains(alias)) { + def.name = alias; + def.flags |= cdef.enumDeclarations[alias]; + enumList += def; + } + } + cdef.enumList = enumList; + } + fprintf(out, "QT_WARNING_PUSH\n"); fprintf(out, "QT_WARNING_DISABLE_DEPRECATED\n"); fprintf(out, "QT_WARNING_DISABLE_GCC(\"-Wuseless-cast\")\n"); fputs("", out); - for (ClassDef &def : classList) { + for (const ClassDef &def : std::as_const(classList)) { Generator generator(this, &def, metaTypes, knownQObjectClasses, knownGadgets, out, requireCompleteTypes); generator.generateCode(); |
