aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominik Holland <dominik.holland@pelagicore.com>2018-12-04 10:54:34 +0100
committerRobert Griebl <robert.griebl@pelagicore.com>2018-12-04 13:14:33 +0000
commit3781b74db1a490535261e45870b9a4c7215c940e (patch)
tree78d9b023cf195121a5eb39b1bd1a9fa6a518fc34
parent8a89aca04ce8c044725b086cf74183fc8d07e002 (diff)
Rename and document the qtivi_convertFromJSON method
Change-Id: I77530cc0cc66589a923c7dae44f9ffc734ac222b Reviewed-by: Robert Griebl <robert.griebl@pelagicore.com>
-rw-r--r--src/ivicore/qiviqmlconversion_helper.cpp36
-rw-r--r--src/ivicore/qiviqmlconversion_helper.h2
-rw-r--r--src/ivicore/qivisimulationengine.h1
-rw-r--r--src/ivicore/qivisimulationglobalobject.cpp7
-rw-r--r--src/tools/ivigenerator/templates_frontend/struct.cpp.tpl2
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 <typename T> 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 <QtQml/QQmlApplicationEngine>
#include <QtIviCore/qivisimulationproxy.h>
+#include <QtIviCore/qiviqmlconversion_helper.h>
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))