18 #ifndef hifi_ScriptValueV8Wrapper_h
19 #define hifi_ScriptValueV8Wrapper_h
21 #include <QtCore/QPointer>
25 #include "../ScriptValue.h"
26 #include "ScriptEngineV8.h"
37 _engine(engine), _value(value) {
38 #ifdef OVERTE_V8_MEMORY_DEBUG
39 engine->incrementScriptValueProxyCounter();
43 _engine(engine), _value(std::move(value)) {
44 #ifdef OVERTE_V8_MEMORY_DEBUG
45 engine->incrementScriptValueProxyCounter();
49 inline const V8ScriptValue& toV8Value()
const {
return _value; }
50 static V8ScriptValue fullUnwrap(ScriptEngineV8* engine,
const ScriptValue& value);
51 ScriptEngineV8* getV8Engine() {
return _engine;}
54 virtual void release()
override;
59 const ScriptValueList& args = ScriptValueList())
override;
61 virtual ScriptValue construct(
const ScriptValueList& args = ScriptValueList())
override;
64 virtual ScriptEnginePointer engine()
const override;
65 virtual ScriptValueIteratorPointer newIterator()
const override;
67 const ScriptValue::ResolveFlags& mode = ScriptValue::ResolvePrototype)
const override;
69 const ScriptValue::ResolveFlags& mode = ScriptValue::ResolvePrototype)
const override;
71 virtual void setData(
const ScriptValue& val)
override;
73 virtual bool hasProperty(
const QString &name)
const override;
75 virtual void setProperty(
const QString& name,
77 const ScriptValue::PropertyFlags& flags = ScriptValue::KeepExistingFlags)
override;
78 virtual void setProperty(quint32 arrayIndex,
80 const ScriptValue::PropertyFlags& flags = ScriptValue::KeepExistingFlags)
override;
81 virtual void setPrototype(
const ScriptValue& prototype)
override;
82 virtual bool strictlyEquals(
const ScriptValue& other)
const override;
83 virtual QList<QString> getPropertyNames()
const override;
85 virtual bool equals(
const ScriptValue& other)
const override;
86 virtual bool isArray()
const override;
87 virtual bool isBool()
const override;
88 virtual bool isError()
const override;
89 virtual bool isFunction()
const override;
90 virtual bool isNumber()
const override;
91 virtual bool isNull()
const override;
92 virtual bool isObject()
const override;
93 virtual bool isString()
const override;
94 virtual bool isUndefined()
const override;
95 virtual bool isValid()
const override;
96 virtual bool isVariant()
const override;
97 virtual bool toBool()
const override;
98 virtual qint32 toInt32()
const override;
99 virtual double toInteger()
const override;
100 virtual double toNumber()
const override;
101 virtual QString toString()
const override;
102 virtual quint16 toUInt16()
const override;
103 virtual quint32 toUInt32()
const override;
104 virtual QVariant toVariant()
const override;
105 virtual QObject* toQObject()
const override;
107 #ifdef OVERTE_V8_SCRIPT_VALUE_WRAPPER_DELETE_GUARD
110 void enableDeleteGuard() { deleteGuard =
true;}
111 void disableDeleteGuard() { deleteGuard =
false;}
116 #ifdef OVERTE_V8_MEMORY_DEBUG
117 _engine->decrementScriptValueProxyCounter();
119 #ifdef OVERTE_V8_SCRIPT_VALUE_WRAPPER_DELETE_GUARD
121 uint32_t* crashTrigger =
nullptr;
122 *crashTrigger = 0x12345678;
128 V8ScriptValue fullUnwrap(
const ScriptValue& value)
const;
131 ScriptEngineV8 *_engine;
132 V8ScriptValue _value;
134 #ifdef OVERTE_V8_SCRIPT_VALUE_WRAPPER_DELETE_GUARD
135 bool deleteGuard{
false};
138 mutable QReadWriteLock lock;
[ScriptInterface] Provides an engine-independent interface for QScriptValue
Definition: ScriptValue.h:40
[ScriptInterface] Provides an engine-independent interface for QScriptValue
Definition: ScriptValue.h:128
[V8] Implements ScriptValue for V8 and translates calls for V8ScriptValue
Definition: ScriptValueV8Wrapper.h:32