aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2024-04-22 18:03:59 +0200
committerUlf Hermann <ulf.hermann@qt.io>2024-04-23 15:56:36 +0200
commit22a3ebbe438c2dd5e00dabbdb2819206849ea056 (patch)
tree3af7669b605cbaf8ec834a3ba230d1ae2267a3a8
parentba2e297d7a5dd6692c4f62b044e5ab7625d11cd6 (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.cpp69
-rw-r--r--src/qmltyperegistrar/qqmltypescreator_p.h1
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);