diff -r 93b982ccede2 -r 5daf16870df6 src/script/bridge/qscriptdeclarativeclass_p.h --- a/src/script/bridge/qscriptdeclarativeclass_p.h Mon Jun 21 22:38:13 2010 +0100 +++ b/src/script/bridge/qscriptdeclarativeclass_p.h Thu Jul 22 16:41:55 2010 +0100 @@ -47,16 +47,47 @@ class Q_SCRIPT_EXPORT QScriptDeclarativeClass { public: +#define QT_HAVE_QSCRIPTDECLARATIVECLASS_VALUE + class Q_SCRIPT_EXPORT Value + { + public: + Value(); + Value(const Value &); + + Value(QScriptContext *, int); + Value(QScriptContext *, uint); + Value(QScriptContext *, bool); + Value(QScriptContext *, double); + Value(QScriptContext *, float); + Value(QScriptContext *, const QString &); + Value(QScriptContext *, const QScriptValue &); + Value(QScriptEngine *, int); + Value(QScriptEngine *, uint); + Value(QScriptEngine *, bool); + Value(QScriptEngine *, double); + Value(QScriptEngine *, float); + Value(QScriptEngine *, const QString &); + Value(QScriptEngine *, const QScriptValue &); + ~Value(); + + QScriptValue toScriptValue(QScriptEngine *) const; + private: + char dummy[8]; + }; + typedef void* Identifier; struct Object { virtual ~Object() {} }; static QScriptValue newObject(QScriptEngine *, QScriptDeclarativeClass *, Object *); + static Value newObjectValue(QScriptEngine *, QScriptDeclarativeClass *, Object *); static QScriptDeclarativeClass *scriptClass(const QScriptValue &); static Object *object(const QScriptValue &); static QScriptValue function(const QScriptValue &, const Identifier &); static QScriptValue property(const QScriptValue &, const Identifier &); + static Value functionValue(const QScriptValue &, const Identifier &); + static Value propertyValue(const QScriptValue &, const Identifier &); static QScriptValue scopeChainValue(QScriptContext *, int index); static QScriptContext *pushCleanContext(QScriptEngine *); @@ -73,7 +104,8 @@ private: friend class QScriptDeclarativeClass; - PersistentIdentifier(bool) : identifier(0), d(0) {} + PersistentIdentifier(QScriptEnginePrivate *e) : identifier(0), engine(e), d(0) {} + QScriptEnginePrivate *engine; void *d; }; @@ -82,6 +114,9 @@ QScriptEngine *engine() const; + bool supportsCall() const; + void setSupportsCall(bool); + PersistentIdentifier createPersistentIdentifier(const QString &); PersistentIdentifier createPersistentIdentifier(const Identifier &); @@ -91,9 +126,11 @@ virtual QScriptClass::QueryFlags queryProperty(Object *, const Identifier &, QScriptClass::QueryFlags flags); - virtual QScriptValue property(Object *, const Identifier &); + virtual Value property(Object *, const Identifier &); virtual void setProperty(Object *, const Identifier &name, const QScriptValue &); virtual QScriptValue::PropertyFlags propertyFlags(Object *, const Identifier &); + virtual Value call(Object *, QScriptContext *); + virtual bool compare(Object *, Object *); virtual QStringList propertyNames(Object *);