aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2014-05-08 14:35:30 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2014-07-22 13:49:14 +0200
commite8746aeaecc4b1cfe312d8ed943ad74bd53f66e2 (patch)
treef4f391707da4054502b4826eedec5cc80bfe0a1c /src/imports
parent0732e0177e62590c812f0fea9c32f7d427bd933f (diff)
Start implement new Object creation pattern
Create objects through a static create() method that returns a pointer to the objects Data. This will later on simplify breaking the direct connection between Object and Object::Data. Change-Id: Id8daa3c766429bc36f432868e1957846147c96b6 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/imports')
-rw-r--r--src/imports/localstorage/plugin.cpp25
1 files changed, 14 insertions, 11 deletions
diff --git a/src/imports/localstorage/plugin.cpp b/src/imports/localstorage/plugin.cpp
index 143c129dae..651b8d466f 100644
--- a/src/imports/localstorage/plugin.cpp
+++ b/src/imports/localstorage/plugin.cpp
@@ -104,6 +104,13 @@ class QQmlSqlDatabaseWrapper : public Object
public:
enum Type { Database, Query, Rows };
struct Data : Object::Data {
+ Data(ExecutionEngine *e)
+ : Object::Data(e)
+ {
+ setVTable(staticVTable());
+ type = Database;
+ }
+
Type type;
QSqlDatabase database;
@@ -130,14 +137,10 @@ public:
V4_OBJECT
- QQmlSqlDatabaseWrapper(QV8Engine *e)
- : Object(QV8Engine::getV4(e))
+ static Data *create(QV8Engine *engine)
{
- setVTable(staticVTable());
- d()->type = Database;
- d()->inTransaction = false;
- d()->readonly = false;
- d()->forwardOnly = false;
+ QV4::ExecutionEngine *e = QV8Engine::getV4(engine);
+ return new (e) Data(e);
}
~QQmlSqlDatabaseWrapper() {
@@ -325,7 +328,7 @@ static ReturnedValue qmlsqldatabase_executeSql(CallContext *ctx)
}
}
if (query.exec()) {
- QV4::Scoped<QQmlSqlDatabaseWrapper> rows(scope, new (scope.engine->memoryManager) QQmlSqlDatabaseWrapper(engine));
+ QV4::Scoped<QQmlSqlDatabaseWrapper> rows(scope, QQmlSqlDatabaseWrapper::create(engine));
QV4::ScopedObject p(scope, databaseData(engine)->rowsProto.value());
rows->setPrototype(p.getPointer());
rows->d()->type = QQmlSqlDatabaseWrapper::Rows;
@@ -402,7 +405,7 @@ static ReturnedValue qmlsqldatabase_changeVersion(CallContext *ctx)
if (from_version != r->d()->version)
V4THROW_SQL(SQLEXCEPTION_VERSION_ERR, QQmlEngine::tr("Version mismatch: expected %1, found %2").arg(from_version).arg(r->d()->version));
- Scoped<QQmlSqlDatabaseWrapper> w(scope, new (scope.engine->memoryManager) QQmlSqlDatabaseWrapper(engine));
+ Scoped<QQmlSqlDatabaseWrapper> w(scope, QQmlSqlDatabaseWrapper::create(engine));
ScopedObject p(scope, databaseData(engine)->queryProto.value());
w->setPrototype(p.getPointer());
w->d()->type = QQmlSqlDatabaseWrapper::Query;
@@ -455,7 +458,7 @@ static ReturnedValue qmlsqldatabase_transaction_shared(CallContext *ctx, bool re
QSqlDatabase db = r->d()->database;
- Scoped<QQmlSqlDatabaseWrapper> w(scope, new (scope.engine->memoryManager) QQmlSqlDatabaseWrapper(engine));
+ Scoped<QQmlSqlDatabaseWrapper> w(scope, QQmlSqlDatabaseWrapper::create(engine));
QV4::ScopedObject p(scope, databaseData(engine)->queryProto.value());
w->setPrototype(p.getPointer());
w->d()->type = QQmlSqlDatabaseWrapper::Query;
@@ -733,7 +736,7 @@ void QQuickLocalStorage::openDatabaseSync(QQmlV4Function *args)
database.open();
}
- QV4::Scoped<QQmlSqlDatabaseWrapper> db(scope, new (scope.engine->memoryManager) QQmlSqlDatabaseWrapper(engine));
+ QV4::Scoped<QQmlSqlDatabaseWrapper> db(scope, QQmlSqlDatabaseWrapper::create(engine));
QV4::ScopedObject p(scope, databaseData(engine)->databaseProto.value());
db->setPrototype(p.getPointer());
db->d()->database = database;