From 3781b74db1a490535261e45870b9a4c7215c940e Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Tue, 4 Dec 2018 10:54:34 +0100 Subject: Rename and document the qtivi_convertFromJSON method Change-Id: I77530cc0cc66589a923c7dae44f9ffc734ac222b Reviewed-by: Robert Griebl --- src/ivicore/qiviqmlconversion_helper.cpp | 36 +++++++++++++--------- src/ivicore/qiviqmlconversion_helper.h | 2 +- src/ivicore/qivisimulationengine.h | 1 + src/ivicore/qivisimulationglobalobject.cpp | 7 +++-- .../ivigenerator/templates_frontend/struct.cpp.tpl | 2 +- 5 files changed, 29 insertions(+), 19 deletions(-) diff --git a/src/ivicore/qiviqmlconversion_helper.cpp b/src/ivicore/qiviqmlconversion_helper.cpp index 0372b6b..d358a26 100644 --- a/src/ivicore/qiviqmlconversion_helper.cpp +++ b/src/ivicore/qiviqmlconversion_helper.cpp @@ -91,18 +91,26 @@ void qtivi_qmlOrCppWarning(const QObject *obj, const QString &errorString) v4->throwError(errorString); } -QVariant convertFromJSON(const QVariant &val) +/*! + \relates QIviSimulationEngine + + Converts \a value from JSON to valid C++ types. + + The provided JSON value needs to follow the \l{IviSimulatorDataFormat}{IviSimulator Data + Format}. +*/ +QVariant qtivi_convertFromJSON(const QVariant &value) { - QVariant value = val; + QVariant val = value; // First try to convert the values to a Map or a List // This is needed as it could also store a QStringList or a Hash - if (value.canConvert(QVariant::Map)) - value.convert(QVariant::Map); - if (value.canConvert(QVariant::List)) - value.convert(QVariant::List); + if (val.canConvert(QVariant::Map)) + val.convert(QVariant::Map); + if (val.canConvert(QVariant::List)) + val.convert(QVariant::List); - if (value.type() == QVariant::Map) { - const QVariantMap map = value.toMap(); + if (val.type() == QVariant::Map) { + const QVariantMap map = val.toMap(); if (map.contains(typeLiteral) && map.contains(valueLiteral)) { const QString type = map.value(typeLiteral).toString(); const QVariant value = map.value(valueLiteral); @@ -133,7 +141,7 @@ QVariant convertFromJSON(const QVariant &val) QVariantList values = value.toList(); for (auto i = values.begin(); i != values.end(); ++i) - *i = convertFromJSON(*i); + *i = qtivi_convertFromJSON(*i); void *gadget = mo->newInstance(Q_ARG(QVariant, QVariant(values))); return QVariant(typeId, gadget); @@ -142,16 +150,16 @@ QVariant convertFromJSON(const QVariant &val) QVariantMap convertedValues; for (auto i = map.constBegin(); i != map.constEnd(); ++i) - convertedValues.insert(i.key(), convertFromJSON(i.value())); + convertedValues.insert(i.key(), qtivi_convertFromJSON(i.value())); return convertedValues; - } else if (value.type() == QVariant::List) { - QVariantList values = value.toList(); + } else if (val.type() == QVariant::List) { + QVariantList values = val.toList(); for (auto i = values.begin(); i != values.end(); ++i) - *i = convertFromJSON(*i); + *i = qtivi_convertFromJSON(*i); return values; } - return value; + return val; } QT_END_NAMESPACE diff --git a/src/ivicore/qiviqmlconversion_helper.h b/src/ivicore/qiviqmlconversion_helper.h index 2c30772..5975ca8 100644 --- a/src/ivicore/qiviqmlconversion_helper.h +++ b/src/ivicore/qiviqmlconversion_helper.h @@ -54,7 +54,7 @@ QT_BEGIN_NAMESPACE Q_QTIVICORE_EXPORT void qtivi_qmlOrCppWarning(const QObject *obj, const char *errorString); Q_QTIVICORE_EXPORT void qtivi_qmlOrCppWarning(const QObject *obj, const QString& errorString); -Q_QTIVICORE_EXPORT QVariant convertFromJSON(const QVariant &val); +Q_QTIVICORE_EXPORT QVariant qtivi_convertFromJSON(const QVariant &val); template QVariant qtivi_convertValue(const T &val) { diff --git a/src/ivicore/qivisimulationengine.h b/src/ivicore/qivisimulationengine.h index f0cea30..e0838b8 100644 --- a/src/ivicore/qivisimulationengine.h +++ b/src/ivicore/qivisimulationengine.h @@ -46,6 +46,7 @@ #include #include +#include QT_BEGIN_NAMESPACE diff --git a/src/ivicore/qivisimulationglobalobject.cpp b/src/ivicore/qivisimulationglobalobject.cpp index 7b35a34..b60b39b 100644 --- a/src/ivicore/qivisimulationglobalobject.cpp +++ b/src/ivicore/qivisimulationglobalobject.cpp @@ -65,6 +65,7 @@ using namespace qtivi_helper; outside of it. \section1 Data Format + \target IviSimulatorDataFormat The IviSimulator expects its data already in a parsed form. Usually this is done by the QIviSimulationEngine::loadSimulationData() function, which expects the file to be in the JSON @@ -183,7 +184,7 @@ using namespace qtivi_helper; Contact::Contact(const QVariant &variant) : Contact() { - QVariant value = convertFromJSON(variant); + QVariant value = qtivi_convertFromJSON(variant); // First try to convert the values to a Map or a List // This is needed as it could also store a QStringList or a Hash if (value.canConvert(QVariant::Map)) @@ -434,10 +435,10 @@ QVariant QIviSimulationGlobalObject::parseDomainValue(const QVariantMap &data, c z = QStringLiteral("="); if (domainMap.contains(zone)) - return convertFromJSON(domainMap.value(zone)); + return qtivi_convertFromJSON(domainMap.value(zone)); } - return convertFromJSON(domainData); + return qtivi_convertFromJSON(domainData); } QGenericArgument QIviSimulationGlobalObject::createArgument(const QVariant &variant) diff --git a/src/tools/ivigenerator/templates_frontend/struct.cpp.tpl b/src/tools/ivigenerator/templates_frontend/struct.cpp.tpl index 488f1a9..7670f36 100644 --- a/src/tools/ivigenerator/templates_frontend/struct.cpp.tpl +++ b/src/tools/ivigenerator/templates_frontend/struct.cpp.tpl @@ -110,7 +110,7 @@ public: {{class}}::{{class}}(const QVariant &variant) : {{class}}() { - QVariant value = convertFromJSON(variant); + QVariant value = qtivi_convertFromJSON(variant); // First try to convert the values to a Map or a List // This is needed as it could also store a QStringList or a Hash if (value.canConvert(QVariant::Map)) -- cgit v1.2.3