History

first pass creating Qt <-> QtScript interface

Heather Anderson committed 4 years ago

Commit bc6eaf21 parent bd0455463 files · +1707 −294Browse files

Showing the changes to libraries/script-engine/src/qtscript/ScriptValueQtWrapper.cpp (1 of 63 files). Show all

Unified · Split

libraries/script-engine/src/qtscript/ScriptValueQtWrapper.cpp+26−6
@@ -28,19 +28,27 @@ ScriptValueQtWrapper* ScriptValueQtWrapper::unwrap(const ScriptValue& val) { · 27 unmodified lines
28QScriptValue ScriptValueQtWrapper::fullUnwrap(const ScriptValue& value) const {28QScriptValue ScriptValueQtWrapper::fullUnwrap(const ScriptValue& value) const {
29 ScriptValueQtWrapper* unwrapped = unwrap(value);29 ScriptValueQtWrapper* unwrapped = unwrap(value);
30 if (unwrapped) {30 if (unwrapped) {
31 return unwrapped->toQtValue();31 if (unwrapped->engine().get() != _engine) {
32 return static_cast<QScriptEngine*>(_engine)->toScriptValue(unwrapped->toVariant());
33 } else {
34 return unwrapped->toQtValue();
35 }
32 }36 }
33 QVariant varValue = value.toVariant();37 QVariant varValue = value.toVariant();
34 return static_cast<QScriptEngine*>(_engine)->newVariant(varValue);38 return _engine->castVariantToValue(varValue);
35}39}
36 40
37QScriptValue ScriptValueQtWrapper::fullUnwrap(ScriptEngineQtScript* engine, const ScriptValue& value) {41QScriptValue ScriptValueQtWrapper::fullUnwrap(ScriptEngineQtScript* engine, const ScriptValue& value) {
38 ScriptValueQtWrapper* unwrapped = unwrap(value);42 ScriptValueQtWrapper* unwrapped = unwrap(value);
39 if (unwrapped) {43 if (unwrapped) {
40 return unwrapped->toQtValue();44 if (unwrapped->engine().get() != engine) {
45 return static_cast<QScriptEngine*>(engine)->toScriptValue(unwrapped->toVariant());
46 } else {
47 return unwrapped->toQtValue();
48 }
41 }49 }
42 QVariant varValue = value.toVariant();50 QVariant varValue = value.toVariant();
43 return static_cast<QScriptEngine*>(engine)->newVariant(varValue);51 return engine->castVariantToValue(varValue);
44}52}
45 53
46ScriptValue ScriptValueQtWrapper::call(const ScriptValue& thisObject, const ScriptValueList& args) {54ScriptValue ScriptValueQtWrapper::call(const ScriptValue& thisObject, const ScriptValueList& args) {
@@ -157,11 +165,23 @@ quint32 ScriptValueQtWrapper::toUInt32() const { · 110 unmodified lines
157}165}
158 166
159QVariant ScriptValueQtWrapper::toVariant() const {167QVariant ScriptValueQtWrapper::toVariant() const {
160 return _value.toVariant();168 QVariant dest;
169 if (_engine->castValueToVariant(_value, dest, QMetaType::UnknownType)) {
170 return dest;
171 } else {
172 Q_ASSERT(false);
173 return QVariant();
174 }
161}175}
162 176
163QObject* ScriptValueQtWrapper::toQObject() const {177QObject* ScriptValueQtWrapper::toQObject() const {
164 return _value.toQObject();178 QVariant dest;
179 if (_engine->castValueToVariant(_value, dest, QMetaType::QObjectStar)) {
180 return dest.value<QObject*>();
181 } else {
182 Q_ASSERT(false);
183 return nullptr;
184 }
165}185}
166 186
167bool ScriptValueQtWrapper::equals(const ScriptValue& other) const {187bool ScriptValueQtWrapper::equals(const ScriptValue& other) const {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t