summaryrefslogtreecommitdiffstats
path: root/src/script/api/qscriptengine.cpp
diff options
context:
space:
mode:
authorJedrzej Nowacki <jedrzej.nowacki@nokia.com>2009-07-09 11:03:48 (GMT)
committerJedrzej Nowacki <jedrzej.nowacki@nokia.com>2009-07-09 11:33:23 (GMT)
commit5bf417cf836636aab1dcadffaa73f26966880dff (patch)
tree7a98577d2399a06631666a5b2249d5d574bf76bc /src/script/api/qscriptengine.cpp
parentdadfb997897141ccd47808b2e9b38807f0042c53 (diff)
downloadQt-5bf417cf836636aab1dcadffaa73f26966880dff.zip
Qt-5bf417cf836636aab1dcadffaa73f26966880dff.tar.gz
Qt-5bf417cf836636aab1dcadffaa73f26966880dff.tar.bz2
Fix autotest checking QScriptValue::objectId method.
(QScriptValue::objectId() and QScriptEnigne::objectById)
Diffstat (limited to 'src/script/api/qscriptengine.cpp')
-rw-r--r--src/script/api/qscriptengine.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp
index 13e21d2..f2b0cac 100644
--- a/src/script/api/qscriptengine.cpp
+++ b/src/script/api/qscriptengine.cpp
@@ -826,7 +826,7 @@ ASSERT_CLASS_FITS_IN_CELL(QScript::GlobalObject);
} // namespace JSC
-QScriptEnginePrivate::QScriptEnginePrivate()
+QScriptEnginePrivate::QScriptEnginePrivate() : idGenerator(1)
{
JSC::initializeThreading(); // ### hmmm
@@ -1216,6 +1216,11 @@ bool QScriptEnginePrivate::scriptDisconnect(JSC::JSValue signal, JSC::JSValue re
}
#endif
+void QScriptEnginePrivate::registerScriptValue(QScriptValuePrivate *value)
+{
+ value->id=idGenerator.fetchAndAddRelaxed(1);
+ attachedScriptValues.insert(value);
+}
void QScriptEnginePrivate::detachAllRegisteredScriptValues()
{
@@ -3328,9 +3333,13 @@ QScriptValue QScriptEngine::toObject(const QScriptValue &value)
*/
QScriptValue QScriptEngine::objectById(qint64 id) const
{
- Q_ASSERT_X(false, Q_FUNC_INFO, "not implemented");
- // mapping from id to JSObject*?
- Q_UNUSED(id);
+ Q_D(const QScriptEngine);
+ QSet<QScriptValuePrivate*>::const_iterator i = d->attachedScriptValues.constBegin();
+ while(i != d->attachedScriptValues.constEnd()) {
+ if ( (*i)->id == id )
+ return (*i)->toPublic();
+ i++;
+ }
return QScriptValue();
}