diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2024-04-22 18:03:59 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2024-04-23 15:56:36 +0200 |
commit | 22a3ebbe438c2dd5e00dabbdb2819206849ea056 (patch) | |
tree | 3af7669b605cbaf8ec834a3ba230d1ae2267a3a8 | |
parent | ba2e297d7a5dd6692c4f62b044e5ab7625d11cd6 (diff) |
qmltyperegistrar: Clean up QQmlTypesCreator::writeComponents()
Deduplicate the code a bit.
Change-Id: I46f4c281936b955bf3c6269679485191d0716325
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
-rw-r--r-- | src/qmltyperegistrar/qqmltypescreator.cpp | 69 | ||||
-rw-r--r-- | src/qmltyperegistrar/qqmltypescreator_p.h | 1 |
2 files changed, 31 insertions, 39 deletions
diff --git a/src/qmltyperegistrar/qqmltypescreator.cpp b/src/qmltyperegistrar/qqmltypescreator.cpp index fb07ff2a48..2454f505eb 100644 --- a/src/qmltyperegistrar/qqmltypescreator.cpp +++ b/src/qmltyperegistrar/qqmltypescreator.cpp @@ -428,36 +428,41 @@ void QmlTypesCreator::writeRootMethods(const MetaType &classDef) writeMethods(componentMethods, S_METHOD); }; -void QmlTypesCreator::writeComponents() +void QmlTypesCreator::writeComponent(const QmlTypesClassDescription &collector) { - for (const MetaType &component : std::as_const(m_ownTypes)) { - QmlTypesClassDescription collector; - collector.collect(component, m_ownTypes, m_foreignTypes, - QmlTypesClassDescription::TopLevel, m_version); + m_qml.writeStartObject(S_COMPONENT); - m_qml.writeStartObject(S_COMPONENT); + writeClassProperties(collector); - writeClassProperties(collector); + if (const MetaType &classDef = collector.resolvedClass; !classDef.isEmpty()) { + writeEnums( + classDef.enums(), + collector.registerEnumClassesScoped + ? EnumClassesMode::Scoped + : EnumClassesMode::Unscoped); - if (const MetaType &classDef = collector.resolvedClass; !classDef.isEmpty()) { - writeEnums( - classDef.enums(), - collector.registerEnumClassesScoped - ? EnumClassesMode::Scoped - : EnumClassesMode::Unscoped); + writeProperties(members(classDef.properties(), m_version)); - writeProperties(members(classDef.properties(), m_version)); + if (collector.isRootClass) { + writeRootMethods(classDef); + } else { + writeMethods(members(classDef.sigs(), m_version), S_SIGNAL); + writeMethods(members(classDef.methods(), m_version), S_METHOD); + } - if (collector.isRootClass) { - writeRootMethods(classDef); - } else { - writeMethods(members(classDef.sigs(), m_version), S_SIGNAL); - writeMethods(members(classDef.methods(), m_version), S_METHOD); - } + writeMethods(constructors(classDef.constructors(), m_version), S_METHOD); + } + m_qml.writeEndObject(); +} - writeMethods(constructors(classDef.constructors(), m_version), S_METHOD); - } - m_qml.writeEndObject(); +void QmlTypesCreator::writeComponents() +{ + for (const MetaType &component : std::as_const(m_ownTypes)) { + QmlTypesClassDescription collector; + collector.collect(component, m_ownTypes, m_foreignTypes, + QmlTypesClassDescription::TopLevel, m_version); + + writeComponent(collector); if (collector.resolvedClass != component && std::binary_search( @@ -468,25 +473,11 @@ void QmlTypesCreator::writeComponents() // also generate a description of the local type then. All the QML_* macros are // ignored, and the result is an anonymous type. - m_qml.writeStartObject(S_COMPONENT); - QmlTypesClassDescription collector; collector.collectLocalAnonymous(component, m_ownTypes, m_foreignTypes, m_version); + Q_ASSERT(!collector.isRootClass); - writeClassProperties(collector); - writeEnums( - component.enums(), - collector.registerEnumClassesScoped - ? EnumClassesMode::Scoped - : EnumClassesMode::Unscoped); - - writeProperties(members(component.properties(), m_version)); - - writeMethods(members(component.sigs(), m_version), S_SIGNAL); - writeMethods(members(component.methods(), m_version), S_METHOD); - writeMethods(constructors(component.constructors(), m_version), S_METHOD); - - m_qml.writeEndObject(); + writeComponent(collector); } } } diff --git a/src/qmltyperegistrar/qqmltypescreator_p.h b/src/qmltyperegistrar/qqmltypescreator_p.h index 0d6dd91327..10c5a3d35d 100644 --- a/src/qmltyperegistrar/qqmltypescreator_p.h +++ b/src/qmltyperegistrar/qqmltypescreator_p.h @@ -37,6 +37,7 @@ public: void setVersion(QTypeRevision version) { m_version = version; } private: + void writeComponent(const QmlTypesClassDescription &collector); void writeClassProperties(const QmlTypesClassDescription &collector); void writeType(QAnyStringView type); void writeProperties(const Property::Container &properties); |