diff options
Diffstat (limited to 'src/script/bridge/qscriptqobject_p.h')
-rw-r--r-- | src/script/bridge/qscriptqobject_p.h | 322 |
1 files changed, 0 insertions, 322 deletions
diff --git a/src/script/bridge/qscriptqobject_p.h b/src/script/bridge/qscriptqobject_p.h deleted file mode 100644 index 7e62540..0000000 --- a/src/script/bridge/qscriptqobject_p.h +++ /dev/null @@ -1,322 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtScript module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL-ONLY$ -** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QSCRIPTQOBJECT_P_H -#define QSCRIPTQOBJECT_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include "qscriptobject_p.h" - -#include "qscriptengine.h" -#include <QtCore/qpointer.h> - -#include "InternalFunction.h" - -QT_BEGIN_NAMESPACE - -namespace QScript -{ - -enum AttributeExtension { - // ### Make sure there's no conflict with JSC::Attribute - QObjectMemberAttribute = 1 << 12 -}; - -class QObjectDelegate : public QScriptObjectDelegate -{ -public: - struct Data - { - QPointer<QObject> value; - QScriptEngine::ValueOwnership ownership; - QScriptEngine::QObjectWrapOptions options; - - QHash<QByteArray, JSC::JSValue> cachedMembers; - - Data(QObject *o, QScriptEngine::ValueOwnership own, - QScriptEngine::QObjectWrapOptions opt) - : value(o), ownership(own), options(opt) {} - }; - - QObjectDelegate( - QObject *object, QScriptEngine::ValueOwnership ownership, - const QScriptEngine::QObjectWrapOptions &options); - ~QObjectDelegate(); - - virtual Type type() const; - - virtual bool getOwnPropertySlot(QScriptObject*, JSC::ExecState*, - const JSC::Identifier& propertyName, - JSC::PropertySlot&); - virtual bool getOwnPropertyDescriptor(QScriptObject*, JSC::ExecState*, - const JSC::Identifier& propertyName, - JSC::PropertyDescriptor&); - - virtual void put(QScriptObject*, JSC::ExecState* exec, - const JSC::Identifier& propertyName, - JSC::JSValue, JSC::PutPropertySlot&); - virtual bool deleteProperty(QScriptObject*, JSC::ExecState*, - const JSC::Identifier& propertyName); - virtual void getOwnPropertyNames(QScriptObject*, JSC::ExecState*, - JSC::PropertyNameArray&, - JSC::EnumerationMode mode = JSC::ExcludeDontEnumProperties); - virtual void markChildren(QScriptObject*, JSC::MarkStack& markStack); - virtual bool compareToObject(QScriptObject*, JSC::ExecState*, JSC::JSObject*); - - inline QObject *value() const { return data->value; } - inline void setValue(QObject* value) { data->value = value; } - - inline QScriptEngine::ValueOwnership ownership() const - { return data->ownership; } - inline void setOwnership(QScriptEngine::ValueOwnership ownership) - { data->ownership = ownership; } - - inline QScriptEngine::QObjectWrapOptions options() const - { return data->options; } - inline void setOptions(QScriptEngine::QObjectWrapOptions options) - { data->options = options; } - -protected: - Data *data; -}; - -class QObjectPrototypeObject : public QObject -{ - Q_OBJECT -public: - QObjectPrototypeObject(QObject *parent = 0) - : QObject(parent) { } - ~QObjectPrototypeObject() { } -}; - -class QObjectPrototype : public QScriptObject -{ -public: - QObjectPrototype(JSC::ExecState*, WTF::PassRefPtr<JSC::Structure>, - JSC::Structure* prototypeFunctionStructure); -}; - -class QObjectConnectionManager; - -struct QObjectWrapperInfo -{ - QObjectWrapperInfo(QScriptObject *obj, - QScriptEngine::ValueOwnership own, - const QScriptEngine::QObjectWrapOptions &opt) - : object(obj), ownership(own), options(opt) {} - - QScriptObject *object; - QScriptEngine::ValueOwnership ownership; - QScriptEngine::QObjectWrapOptions options; -}; - -class QObjectData // : public QObjectUserData -{ -public: - QObjectData(QScriptEnginePrivate *engine); - ~QObjectData(); - - bool addSignalHandler(QObject *sender, - int signalIndex, - JSC::JSValue receiver, - JSC::JSValue slot, - JSC::JSValue senderWrapper, - Qt::ConnectionType type); - bool removeSignalHandler(QObject *sender, - int signalIndex, - JSC::JSValue receiver, - JSC::JSValue slot); - - QScriptObject *findWrapper(QScriptEngine::ValueOwnership ownership, - const QScriptEngine::QObjectWrapOptions &options) const; - void registerWrapper(QScriptObject *wrapper, - QScriptEngine::ValueOwnership ownership, - const QScriptEngine::QObjectWrapOptions &options); - - void mark(JSC::MarkStack&); - -private: - QScriptEnginePrivate *engine; - QScript::QObjectConnectionManager *connectionManager; - QList<QScript::QObjectWrapperInfo> wrappers; -}; - -class QtFunction: public JSC::InternalFunction -{ -public: - // work around CELL_SIZE limitation - struct Data - { - JSC::JSValue object; - int initialIndex; - bool maybeOverloaded; - - Data(JSC::JSValue o, int ii, bool mo) - : object(o), initialIndex(ii), maybeOverloaded(mo) {} - }; - - QtFunction(JSC::JSValue object, int initialIndex, bool maybeOverloaded, - JSC::JSGlobalData*, WTF::PassRefPtr<JSC::Structure>, const JSC::Identifier&); - virtual ~QtFunction(); - - virtual JSC::CallType getCallData(JSC::CallData&); - virtual void markChildren(JSC::MarkStack&); - - virtual const JSC::ClassInfo* classInfo() const { return &info; } - static const JSC::ClassInfo info; - - static JSC::JSValue JSC_HOST_CALL call(JSC::ExecState*, JSC::JSObject*, - JSC::JSValue, const JSC::ArgList&); - - JSC::JSValue execute(JSC::ExecState *exec, JSC::JSValue thisValue, - const JSC::ArgList &args); - - QScriptObject *wrapperObject() const; - QObject *qobject() const; - const QMetaObject *metaObject() const; - int initialIndex() const; - bool maybeOverloaded() const; - int mostGeneralMethod(QMetaMethod *out = 0) const; - QList<int> overloadedIndexes() const; - -private: - Data *data; -}; - -class QtPropertyFunction: public JSC::InternalFunction -{ -public: - // work around CELL_SIZE limitation - struct Data - { - const QMetaObject *meta; - int index; - - Data(const QMetaObject *m, int i) - : meta(m), index(i) {} - }; - - QtPropertyFunction(const QMetaObject *meta, int index, - JSC::JSGlobalData*, WTF::PassRefPtr<JSC::Structure>, - const JSC::Identifier&); - virtual ~QtPropertyFunction(); - - virtual JSC::CallType getCallData(JSC::CallData&); - - virtual const JSC::ClassInfo* classInfo() const { return &info; } - static const JSC::ClassInfo info; - - static JSC::JSValue JSC_HOST_CALL call(JSC::ExecState*, JSC::JSObject*, - JSC::JSValue, const JSC::ArgList&); - - JSC::JSValue execute(JSC::ExecState *exec, JSC::JSValue thisValue, - const JSC::ArgList &args); - - const QMetaObject *metaObject() const; - int propertyIndex() const; - -private: - Data *data; -}; - -class QMetaObjectWrapperObject : public JSC::JSObject -{ -public: - // work around CELL_SIZE limitation - struct Data - { - const QMetaObject *value; - JSC::JSValue ctor; - JSC::JSValue prototype; - - Data(const QMetaObject *mo, JSC::JSValue c) - : value(mo), ctor(c) {} - }; - - explicit QMetaObjectWrapperObject( - JSC::ExecState *, const QMetaObject *metaobject, JSC::JSValue ctor, - WTF::PassRefPtr<JSC::Structure> sid); - ~QMetaObjectWrapperObject(); - - virtual bool getOwnPropertySlot(JSC::ExecState*, - const JSC::Identifier& propertyName, - JSC::PropertySlot&); - virtual bool getOwnPropertyDescriptor(JSC::ExecState*, - const JSC::Identifier& propertyName, - JSC::PropertyDescriptor&); - virtual void put(JSC::ExecState* exec, const JSC::Identifier& propertyName, - JSC::JSValue, JSC::PutPropertySlot&); - virtual bool deleteProperty(JSC::ExecState*, - const JSC::Identifier& propertyName); - virtual void getOwnPropertyNames(JSC::ExecState*, JSC::PropertyNameArray&, - JSC::EnumerationMode mode = JSC::ExcludeDontEnumProperties); - virtual void markChildren(JSC::MarkStack& markStack); - - virtual JSC::CallType getCallData(JSC::CallData&); - virtual JSC::ConstructType getConstructData(JSC::ConstructData&); - - virtual const JSC::ClassInfo* classInfo() const { return &info; } - static const JSC::ClassInfo info; - - static JSC::JSValue JSC_HOST_CALL call(JSC::ExecState*, JSC::JSObject*, - JSC::JSValue, const JSC::ArgList&); - static JSC::JSObject* construct(JSC::ExecState *, JSC::JSObject *, const JSC::ArgList &); - - JSC::JSValue execute(JSC::ExecState *exec, const JSC::ArgList &args); - - inline const QMetaObject *value() const { return data->value; } - inline void setValue(const QMetaObject* value) { data->value = value; } - - static WTF::PassRefPtr<JSC::Structure> createStructure(JSC::JSValue prototype) - { - return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags)); - } - -protected: - static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | JSC::OverridesMarkChildren | JSC::OverridesGetPropertyNames | JSC::ImplementsHasInstance | JSObject::StructureFlags; - - Data *data; -}; - -class QMetaObjectPrototype : public QMetaObjectWrapperObject -{ -public: - QMetaObjectPrototype(JSC::ExecState*, WTF::PassRefPtr<JSC::Structure>, - JSC::Structure* prototypeFunctionStructure); -}; - -} // namespace QScript - -QT_END_NAMESPACE - -#endif |