Add more convenient get/put API to QV4::Object
authorLars Knoll <lars.knoll@digia.com>
Wed, 8 May 2013 11:14:40 +0000 (13:14 +0200)
committerSimon Hausmann <simon.hausmann@digia.com>
Wed, 8 May 2013 13:16:03 +0000 (15:16 +0200)
We can retrieve the current context from the Object
itself, so it's possible to offer a simplified
get/put API that doesn't require a context argument.

Clean up a circular include dependency between qv4engine
and qv4object.

Change-Id: I39a37d479ace1ffbfe8ac59b393cab8e4be07677
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
src/imports/localstorage/plugin.cpp
src/imports/xmllistmodel/qqmlxmllistmodel.cpp
src/qml/qml/v4/qv4engine_p.h
src/qml/qml/v4/qv4internalclass.cpp
src/qml/qml/v4/qv4object_p.h
src/qml/qml/v4/qv4value_p.h
src/qml/qml/v8/qjsvalueiterator.cpp
src/qml/qml/v8/qv4sqlerrors.cpp
src/quick/items/context2d/qquickcontext2d.cpp

index 498e541..1797db3 100644 (file)
@@ -56,6 +56,7 @@
 #include <QtCore/qdir.h>
 #include <private/qv4sqlerrors_p.h>
 #include <private/qv4engine_p.h>
+#include <private/qv4object_p.h>
 
 #define V8THROW_SQL(error, desc) \
 { \
index 668479f..77c04be 100644 (file)
@@ -46,6 +46,7 @@
 #include <private/qv8engine_p.h>
 #include <private/qv4value_p.h>
 #include <private/qv4engine_p.h>
+#include <private/qv4object_p.h>
 
 #include <QDebug>
 #include <QStringList>
index daacebd..95b1a72 100644 (file)
@@ -43,7 +43,6 @@
 
 #include "qv4global_p.h"
 #include "qv4isel_p.h"
-#include "qv4object_p.h"
 #include "qv4util_p.h"
 #include "qv4context_p.h"
 #include "qv4property_p.h"
index 391e05f..6fbc3d4 100644 (file)
@@ -43,6 +43,7 @@
 #include <qv4string_p.h>
 #include <qv4engine_p.h>
 #include <qv4identifier_p.h>
+#include "qv4object_p.h"
 
 using namespace QV4;
 
index e1cf57c..17f187a 100644 (file)
@@ -177,6 +177,8 @@ struct Q_QML_EXPORT Object: Managed {
 
     Property *insertMember(String *s, PropertyAttributes attributes);
 
+    inline ExecutionEngine *engine() const { return internalClass->engine; }
+
     // Array handling
 
     uint allocArrayValue() {
@@ -323,6 +325,14 @@ public:
     void arrayReserve(uint n);
     void ensureArrayAttributes();
 
+    inline Value get(String *name)
+    { return vtbl->get(this, engine()->current, name, 0); }
+    inline Value getIndexed(uint idx)
+    { return vtbl->getIndexed(this, engine()->current, idx, 0); }
+    inline void put(String *name, const Value &v)
+    { vtbl->put(this, engine()->current, name, v); }
+    inline void putIndexed(uint idx, const Value &v)
+    { vtbl->putIndexed(this, engine()->current, idx, v); }
     using Managed::get;
     using Managed::getIndexed;
     using Managed::put;
index 3cc651d..bb4ea55 100644 (file)
@@ -585,6 +585,9 @@ public:
     operator Value() const { return value(); }
 
     bool isEmpty() const { return !d; }
+    void clear() {
+        *this = PersistentValue();
+    }
 
 private:
     PersistentValuePrivate *d;
index a547918..555cbf0 100644 (file)
@@ -43,6 +43,7 @@
 #include "qjsvalueiterator_p.h"
 #include "qjsvalue_p.h"
 #include "private/qv4string_p.h"
+#include "private/qv4object_p.h"
 
 QT_BEGIN_NAMESPACE
 
index 246a6f6..bd5a9fd 100644 (file)
@@ -41,6 +41,7 @@
 
 #include "qv4sqlerrors_p.h"
 #include "private/qv4engine_p.h"
+#include "private/qv4object_p.h"
 
 QT_BEGIN_NAMESPACE
 
index 196394f..78c0e2e 100644 (file)
@@ -61,6 +61,7 @@
 #include <qqmlengine.h>
 #include <private/qv4domerrors_p.h>
 #include <private/qv4engine_p.h>
+#include <private/qv4object_p.h>
 #include <QtCore/qnumeric.h>
 #include <private/qquickwindow_p.h>