History

isolate calls to the QtScript libraries to an interface we control

Heather Anderson committed 5 years ago

Commit 1e018db1 parent 713b29e260 files · +6904 −5064Browse files

Showing the changes to libraries/script-engine/src/VariantMapToScriptValue.cpp (1 of 260 files). Show all

Unified · Split

libraries/script-engine/src/VariantMapToScriptValue.cpp+77−0
@@ -0,0 +1,77 @@
1//
2// VariantMapToScriptValue.cpp
3// libraries/shared/src/
4//
5// Created by Brad Hefta-Gaub on 12/6/13.
6// Copyright 2013 High Fidelity, Inc.
7//
8// Distributed under the Apache License, Version 2.0.
9// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10//
11
12#include "VariantMapToScriptValue.h"
13
14#include <QDebug>
15
16#include "SharedLogging.h"
17
18ScriptValuePointer variantToScriptValue(QVariant& qValue, ScriptEngine& scriptEngine) {
19 switch(qValue.type()) {
20 case QVariant::Bool:
21 return scriptEngine.newValue(qValue.toBool());
22 break;
23 case QVariant::Int:
24 return scriptEngine.newValue(qValue.toInt());
25 break;
26 case QVariant::Double:
27 return scriptEngine.newValue(qValue.toDouble());
28 break;
29 case QVariant::String:
30 case QVariant::Url:
31 return scriptEngine.newValue(qValue.toString());
32 break;
33 case QVariant::Map: {
34 QVariantMap childMap = qValue.toMap();
35 return variantMapToScriptValue(childMap, scriptEngine);
36 break;
37 }
38 case QVariant::List: {
39 QVariantList childList = qValue.toList();
40 return variantListToScriptValue(childList, scriptEngine);
41 break;
42 }
43 default:
44 if (qValue.canConvert<float>()) {
45 return scriptEngine.newValue(qValue.toFloat());
46 }
47 //qCDebug(shared) << "unhandled QScript type" << qValue.type();
48 break;
49 }
50
51 return ScriptValuePointer();
52}
53
54
55ScriptValuePointer variantMapToScriptValue(QVariantMap& variantMap, ScriptEngine& scriptEngine) {
56 ScriptValuePointer scriptValue = scriptEngine.newObject();
57
58 for (QVariantMap::const_iterator iter = variantMap.begin(); iter != variantMap.end(); ++iter) {
59 QString key = iter.key();
60 QVariant qValue = iter.value();
61 scriptValue->setProperty(key, variantToScriptValue(qValue, scriptEngine));
62 }
63
64 return scriptValue;
65}
66
67
68ScriptValuePointer variantListToScriptValue(QVariantList& variantList, ScriptEngine& scriptEngine) {
69
70 ScriptValuePointer scriptValue = scriptEngine.newArray();
71
72 for (int i = 0; i < variantList.size(); i++) {
73 scriptValue->setProperty(i, variantToScriptValue(variantList[i], scriptEngine));
74 }
75
76 return scriptValue;
77}