From 9d45d0998a750ef14a37869efa13655f5338d03d Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Thu, 24 Dec 2020 20:13:06 +0000 Subject: [PATCH] remove unused custom types converting feature of QDeclarativeMetaType Signed-off-by: Ivailo Monev --- src/core/tools/qdatetime.h | 2 - src/declarative/qml/qdeclarativecompiler.cpp | 61 +++++++++---------------- src/declarative/qml/qdeclarativeinstruction.cpp | 3 -- src/declarative/qml/qdeclarativeinstruction_p.h | 6 --- src/declarative/qml/qdeclarativemetatype.cpp | 39 ---------------- src/declarative/qml/qdeclarativemetatype_p.h | 4 -- src/declarative/qml/qdeclarativeproperty.cpp | 7 --- src/declarative/qml/qdeclarativevme.cpp | 23 ---------- src/declarative/util/qdeclarativeanimation.cpp | 4 -- 9 files changed, 22 insertions(+), 127 deletions(-) diff --git a/src/core/tools/qdatetime.h b/src/core/tools/qdatetime.h index 4bf393559..dc71f2b2e 100644 --- a/src/core/tools/qdatetime.h +++ b/src/core/tools/qdatetime.h @@ -105,7 +105,6 @@ public: static uint gregorianToJulian(int y, int m, int d); static void julianToGregorian(uint jd, int &y, int &m, int &d); - static inline QDate fromJulianDay(int jd) { QDate d; d.jd = jd; return d; } inline int toJulianDay() const { return jd; } @@ -239,7 +238,6 @@ public: static QDateTime fromMSecsSinceEpoch(qint64 msecs); static qint64 currentMSecsSinceEpoch(); - private: friend class QDateTimePrivate; void detach(); diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp index fc4d432a0..4ab7c6892 100644 --- a/src/declarative/qml/qdeclarativecompiler.cpp +++ b/src/declarative/qml/qdeclarativecompiler.cpp @@ -291,11 +291,7 @@ bool QDeclarativeCompiler::testLiteralAssignment(const QMetaProperty &prop, break; default: { - int t = prop.userType(); - QDeclarativeMetaType::StringConverter converter = - QDeclarativeMetaType::customStringConverter(t); - if (!converter) - COMPILE_EXCEPTION(v, tr("Invalid property assignment: unsupported type \"%1\"").arg(QString::fromLatin1(QVariant::typeToName(prop.type())))); + COMPILE_EXCEPTION(v, tr("Invalid property assignment: unsupported type \"%1\"").arg(QString::fromLatin1(QVariant::typeToName(prop.type())))); } break; } @@ -335,30 +331,6 @@ void QDeclarativeCompiler::genLiteralAssignment(const QMetaProperty &prop, int type = prop.userType(); switch(type) { - case -1: - { - if (v->value.isNumber()) { - double n = v->value.asNumber(); - if (double(int(n)) == n) { - instr.type = QDeclarativeInstruction::StoreVariantInteger; - instr.storeInteger.propertyIndex = prop.propertyIndex(); - instr.storeInteger.value = int(n); - } else { - instr.type = QDeclarativeInstruction::StoreVariantDouble; - instr.storeDouble.propertyIndex = prop.propertyIndex(); - instr.storeDouble.value = n; - } - } else if(v->value.isBoolean()) { - instr.type = QDeclarativeInstruction::StoreVariantBool; - instr.storeBool.propertyIndex = prop.propertyIndex(); - instr.storeBool.value = v->value.asBoolean(); - } else { - instr.type = QDeclarativeInstruction::StoreVariant; - instr.storeString.propertyIndex = prop.propertyIndex(); - instr.storeString.value = output->indexForString(string); - } - } - break; case QVariant::String: { instr.type = QDeclarativeInstruction::StoreString; @@ -512,18 +484,29 @@ void QDeclarativeCompiler::genLiteralAssignment(const QMetaProperty &prop, instr.storeRealPair.valueIndex = index; } break; + case -1: default: { - int t = prop.userType(); - int index = output->customTypeData.count(); - instr.type = QDeclarativeInstruction::AssignCustomType; - instr.assignCustomType.propertyIndex = prop.propertyIndex(); - instr.assignCustomType.valueIndex = index; - - QDeclarativeCompiledData::CustomTypeData data; - data.index = output->indexForString(string); - data.type = t; - output->customTypeData << data; + if (v->value.isNumber()) { + double n = v->value.asNumber(); + if (double(int(n)) == n) { + instr.type = QDeclarativeInstruction::StoreVariantInteger; + instr.storeInteger.propertyIndex = prop.propertyIndex(); + instr.storeInteger.value = int(n); + } else { + instr.type = QDeclarativeInstruction::StoreVariantDouble; + instr.storeDouble.propertyIndex = prop.propertyIndex(); + instr.storeDouble.value = n; + } + } else if(v->value.isBoolean()) { + instr.type = QDeclarativeInstruction::StoreVariantBool; + instr.storeBool.propertyIndex = prop.propertyIndex(); + instr.storeBool.value = v->value.asBoolean(); + } else { + instr.type = QDeclarativeInstruction::StoreVariant; + instr.storeString.propertyIndex = prop.propertyIndex(); + instr.storeString.value = output->indexForString(string); + } } break; } diff --git a/src/declarative/qml/qdeclarativeinstruction.cpp b/src/declarative/qml/qdeclarativeinstruction.cpp index 081bac3fd..c0825bad7 100644 --- a/src/declarative/qml/qdeclarativeinstruction.cpp +++ b/src/declarative/qml/qdeclarativeinstruction.cpp @@ -159,9 +159,6 @@ void QDeclarativeCompiledData::dump(QDeclarativeInstruction *instr, int idx) case QDeclarativeInstruction::AssignSignalObject: qWarning().nospace() << idx << "\t\t" << line << "\t" << "ASSIGN_SIGNAL_OBJECT\t" << instr->assignSignalObject.signal << "\t\t\t" << datas.at(instr->assignSignalObject.signal); break; - case QDeclarativeInstruction::AssignCustomType: - qWarning().nospace() << idx << "\t\t" << line << "\t" << "ASSIGN_CUSTOMTYPE\t" << instr->assignCustomType.propertyIndex << "\t" << instr->assignCustomType.valueIndex; - break; case QDeclarativeInstruction::StoreBinding: qWarning().nospace() << idx << "\t\t" << line << "\t" << "STORE_BINDING\t" << instr->assignBinding.property << "\t" << instr->assignBinding.value << "\t" << instr->assignBinding.context; diff --git a/src/declarative/qml/qdeclarativeinstruction_p.h b/src/declarative/qml/qdeclarativeinstruction_p.h index cd842f8ff..fe5228704 100644 --- a/src/declarative/qml/qdeclarativeinstruction_p.h +++ b/src/declarative/qml/qdeclarativeinstruction_p.h @@ -121,7 +121,6 @@ public: // Unresolved single assignment // AssignSignalObject, /* assignSignalObject */ - AssignCustomType, /* assignCustomType */ StoreBinding, /* assignBinding */ StoreBindingOnAlias, /* assignBinding */ @@ -280,10 +279,6 @@ public: struct StoreObjectInstruction { int propertyIndex; }; - struct AssignCustomTypeInstruction { - int propertyIndex; - int valueIndex; - }; struct StoreSignalInstruction { int signalIndex; int value; @@ -335,7 +330,6 @@ public: StoreRectInstruction storeRect; StoreVector3DInstruction storeVector3D; StoreObjectInstruction storeObject; - AssignCustomTypeInstruction assignCustomType; StoreSignalInstruction storeSignal; AssignSignalObjectInstruction assignSignalObject; CreateComponentInstruction createComponent; diff --git a/src/declarative/qml/qdeclarativemetatype.cpp b/src/declarative/qml/qdeclarativemetatype.cpp index 7a6ea65e0..56da5e3f1 100644 --- a/src/declarative/qml/qdeclarativemetatype.cpp +++ b/src/declarative/qml/qdeclarativemetatype.cpp @@ -85,8 +85,6 @@ struct QDeclarativeMetaTypeData Names nameToType; typedef QHash MetaObjects; MetaObjects metaObjectToType; - typedef QHash StringConverters; - StringConverters stringConverters; struct ModuleInfo { ModuleInfo(int major, int minor) @@ -907,43 +905,6 @@ bool QDeclarativeMetaType::isList(int userType) } /*! - A custom string convertor allows you to specify a function pointer that - returns a variant of \a type. For example, if you have written your own icon - class that you want to support as an object property assignable in QML: - - \code - int type = qRegisterMetaType("SuperIcon"); - QML::addCustomStringConvertor(type, &SuperIcon::pixmapFromString); - \endcode - - The function pointer must be of the form: - \code - QVariant (*StringConverter)(const QString &); - \endcode - */ -void QDeclarativeMetaType::registerCustomStringConverter(int type, StringConverter converter) -{ - QWriteLocker lock(metaTypeDataLock()); - - QDeclarativeMetaTypeData *data = metaTypeData(); - if (data->stringConverters.contains(type)) - return; - data->stringConverters.insert(type, converter); -} - -/*! - Return the custom string converter for \a type, previously installed through - registerCustomStringConverter() - */ -QDeclarativeMetaType::StringConverter QDeclarativeMetaType::customStringConverter(int type) -{ - QReadLocker lock(metaTypeDataLock()); - - QDeclarativeMetaTypeData *data = metaTypeData(); - return data->stringConverters.value(type); -} - -/*! Returns the type (if any) of URI-qualified named \a name in version specified by \a version_major and \a version_minor. */ diff --git a/src/declarative/qml/qdeclarativemetatype_p.h b/src/declarative/qml/qdeclarativemetatype_p.h index 158fcd5cf..5fcb668c7 100644 --- a/src/declarative/qml/qdeclarativemetatype_p.h +++ b/src/declarative/qml/qdeclarativemetatype_p.h @@ -94,10 +94,6 @@ public: static const char *interfaceIId(int); static bool isList(int); - typedef QVariant (*StringConverter)(const QString &); - static void registerCustomStringConverter(int, StringConverter); - static StringConverter customStringConverter(int); - static bool isModule(const QByteArray &module, int versionMajor, int versionMinor); static QList parentFunctions(); diff --git a/src/declarative/qml/qdeclarativeproperty.cpp b/src/declarative/qml/qdeclarativeproperty.cpp index c4b696bf7..d380dd98a 100644 --- a/src/declarative/qml/qdeclarativeproperty.cpp +++ b/src/declarative/qml/qdeclarativeproperty.cpp @@ -1215,13 +1215,6 @@ bool QDeclarativePropertyPrivate::write(QObject *object, const QDeclarativePrope v = value; if (v.convert(static_cast(propertyType))) { ok = true; - } else if (propertyType >= QVariant::UserType && variantType == QVariant::String) { - QDeclarativeMetaType::StringConverter con = QDeclarativeMetaType::customStringConverter(propertyType); - if (con) { - v = con(value.toString()); - if (v.userType() == propertyType) - ok = true; - } } } if (ok) { diff --git a/src/declarative/qml/qdeclarativevme.cpp b/src/declarative/qml/qdeclarativevme.cpp index c7f5593f0..9f67427df 100644 --- a/src/declarative/qml/qdeclarativevme.cpp +++ b/src/declarative/qml/qdeclarativevme.cpp @@ -635,29 +635,6 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEObjectStack &stack, } break; - - case QDeclarativeInstruction::AssignCustomType: - { - QObject *target = stack.top(); - CLEAN_PROPERTY(target, instr.assignCustomType.propertyIndex); - - QDeclarativeCompiledData::CustomTypeData data = customTypeData.at(instr.assignCustomType.valueIndex); - const QString &primitive = primitives.at(data.index); - QDeclarativeMetaType::StringConverter converter = - QDeclarativeMetaType::customStringConverter(data.type); - QVariant v = (*converter)(primitive); - - QMetaProperty prop = - target->metaObject()->property(instr.assignCustomType.propertyIndex); - if (v.isNull() || ((int)prop.type() != data.type && prop.userType() != data.type)) - VME_EXCEPTION(QCoreApplication::translate("QDeclarativeVME","Cannot assign value %1 to property %2").arg(primitive).arg(QString::fromUtf8(prop.name()))); - - void *a[] = { (void *)v.data(), 0, &status, &flags }; - QMetaObject::metacall(target, QMetaObject::WriteProperty, - instr.assignCustomType.propertyIndex, a); - } - break; - case QDeclarativeInstruction::AssignSignalObject: { // XXX optimize diff --git a/src/declarative/util/qdeclarativeanimation.cpp b/src/declarative/util/qdeclarativeanimation.cpp index a142a3d02..225a84abc 100644 --- a/src/declarative/util/qdeclarativeanimation.cpp +++ b/src/declarative/util/qdeclarativeanimation.cpp @@ -1725,10 +1725,6 @@ void QDeclarativePropertyAnimationPrivate::convertVariant(QVariant &variant, int default: if (QDeclarativeValueTypeFactory::isValueType((uint)type)) { variant.convert((QVariant::Type)type); - } else { - QDeclarativeMetaType::StringConverter converter = QDeclarativeMetaType::customStringConverter(type); - if (converter) - variant = converter(variant.toString()); } break; } -- 2.11.0