summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2013-04-02 13:45:55 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2013-04-03 13:26:30 +0200
commita44efdd72349a5d2fcb1bb77cf729a84e712f74e (patch)
tree5c28976e8d32d932ecd4417df8df5b4754952aaf
parentf501c82eb66f478c0447ffa08dee1b629f0baa6b (diff)
downloadqbs-a44efdd72349a5d2fcb1bb77cf729a84e712f74e.tar.gz
introduce ScriptEngine.defineProperty
This is a convenience wrapper around Object.defineProperty. Change-Id: Ifefe59ea8a443bed347115be9e8e87078a853ec4 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
-rw-r--r--src/lib/language/scriptengine.cpp18
-rw-r--r--src/lib/language/scriptengine.h1
2 files changed, 13 insertions, 6 deletions
diff --git a/src/lib/language/scriptengine.cpp b/src/lib/language/scriptengine.cpp
index 15291f1fd..d8c80f903 100644
--- a/src/lib/language/scriptengine.cpp
+++ b/src/lib/language/scriptengine.cpp
@@ -121,6 +121,17 @@ QScriptValue ScriptEngine::retrieveFromPropertyCache(const QString &moduleName,
propertyMap));
}
+void ScriptEngine::defineProperty(QScriptValue &object, const QString &name,
+ const QScriptValue &descriptor)
+{
+ QScriptValue arguments = newArray();
+ arguments.setProperty(0, object);
+ arguments.setProperty(1, name);
+ arguments.setProperty(2, descriptor);
+ QScriptValue result = m_definePropertyFunction.call(QScriptValue(), arguments);
+ QBS_ASSERT(!result.isError(), qDebug() << name << result.toString());
+}
+
static QScriptValue js_observedGet(QScriptContext *context, QScriptEngine *, void *arg)
{
ScriptPropertyObserver * const observer = static_cast<ScriptPropertyObserver *>(arg);
@@ -147,12 +158,7 @@ void ScriptEngine::setObservedProperty(QScriptValue &object, const QString &name
QScriptValue descriptor = newObject();
descriptor.setProperty(QLatin1String("get"), getterFunc);
descriptor.setProperty(QLatin1String("set"), m_emptyFunction);
- QScriptValue arguments = newArray();
- arguments.setProperty(0, object);
- arguments.setProperty(1, name);
- arguments.setProperty(2, descriptor);
- QScriptValue result = m_definePropertyFunction.call(QScriptValue(), arguments);
- QBS_ASSERT(!result.isError(), qDebug() << name << result.toString());
+ defineProperty(object, name, descriptor);
}
void ScriptEngine::importProgram(const QScriptProgram &program, const QScriptValue &scope,
diff --git a/src/lib/language/scriptengine.h b/src/lib/language/scriptengine.h
index e39d46e25..19e43e98d 100644
--- a/src/lib/language/scriptengine.h
+++ b/src/lib/language/scriptengine.h
@@ -67,6 +67,7 @@ public:
QScriptValue retrieveFromPropertyCache(const QString &moduleName, const QString &propertyName,
const PropertyMapConstPtr &propertyMap);
+ void defineProperty(QScriptValue &object, const QString &name, const QScriptValue &descriptor);
void setObservedProperty(QScriptValue &object, const QString &name, const QScriptValue &value,
ScriptPropertyObserver *observer);