18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Lesser General Public 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version. 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful, 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Lesser General Public License for more details. 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Lesser General Public 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License along with this library; if not, write to the Free Software 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef BINDINGS_QT_RUNTIME_H_ 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define BINDINGS_QT_RUNTIME_H_ 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2353733164eb6cabab5a1eddcabb42e4ce27eb0e44Ben Murdoch#include "BridgeJSC.h" 24635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#include "Completion.h" 252daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#include "Strong.h" 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "runtime_method.h" 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <qbytearray.h> 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <qmetaobject.h> 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <qpointer.h> 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <qvariant.h> 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace JSC { 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace Bindings { 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass QtInstance; 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass QtField : public Field { 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project typedef enum { 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project MetaProperty, 43dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#ifndef QT_NO_PROPERTIES 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project DynamicProperty, 45dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ChildObject 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } QtFieldType; 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QtField(const QMetaProperty &p) 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : m_type(MetaProperty), m_property(p) 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project {} 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 53dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#ifndef QT_NO_PROPERTIES 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QtField(const QByteArray &b) 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : m_type(DynamicProperty), m_dynamicProperty(b) 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project {} 57dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block#endif 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QtField(QObject *child) 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : m_type(ChildObject), m_childObject(child) 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project {} 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 635f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian virtual JSValue valueFromInstance(ExecState*, const Instance*) const; 645f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian virtual void setValueToInstance(ExecState*, const Instance*, JSValue) const; 656c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen QByteArray name() const; 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QtFieldType fieldType() const {return m_type;} 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate: 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QtFieldType m_type; 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QByteArray m_dynamicProperty; 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QMetaProperty m_property; 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QPointer<QObject> m_childObject; 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass QtMethod : public Method 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QtMethod(const QMetaObject *mo, int i, const QByteArray &ident, int numParameters) 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : m_metaObject(mo), 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_index(i), 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_identifier(ident), 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_nParams(numParameters) 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { } 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual const char* name() const { return m_identifier.constData(); } 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual int numParameters() const { return m_nParams; } 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate: 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project friend class QtInstance; 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const QMetaObject *m_metaObject; 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int m_index; 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QByteArray m_identifier; 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int m_nParams; 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttemplate <typename T> class QtArray : public Array 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QtArray(QList<T> list, QMetaType::Type type, PassRefPtr<RootObject>); 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual ~QtArray(); 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RootObject* rootObject() const; 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1055f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian virtual void setValueAt(ExecState*, unsigned index, JSValue) const; 1065f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian virtual JSValue valueAt(ExecState*, unsigned index) const; 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual unsigned int getLength() const {return m_length;} 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate: 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project mutable QList<T> m_list; // setValueAt is const! 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project unsigned int m_length; 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QMetaType::Type m_type; 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Based on RuntimeMethod 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Extra data classes (to avoid the CELL_SIZE limit on JS objects) 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass QtRuntimeMethodData { 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project public: 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual ~QtRuntimeMethodData(); 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<QtInstance> m_instance; 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass QtRuntimeConnectionMethod; 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass QtRuntimeMetaMethodData : public QtRuntimeMethodData { 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project public: 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ~QtRuntimeMetaMethodData(); 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QByteArray m_signature; 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_allowPrivate; 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int m_index; 1322fc2651226baac27029e38c9d6ef883fa32084dbSteve Block WriteBarrier<QtRuntimeConnectionMethod> m_connect; 1332fc2651226baac27029e38c9d6ef883fa32084dbSteve Block WriteBarrier<QtRuntimeConnectionMethod> m_disconnect; 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass QtRuntimeConnectionMethodData : public QtRuntimeMethodData { 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project public: 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ~QtRuntimeConnectionMethodData(); 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QByteArray m_signature; 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int m_index; 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool m_isConnect; 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Common base class (doesn't really do anything interesting) 1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass QtRuntimeMethod : public InternalFunction { 1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual ~QtRuntimeMethod(); 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static const ClassInfo s_info; 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1515f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian static FunctionPrototype* createPrototype(ExecState*, JSGlobalObject* globalObject) 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1535f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian return globalObject->functionPrototype(); 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1562daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch static Structure* createStructure(JSGlobalData& globalData, JSValue prototype) 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1582bde8e466a4451c7319e3a072d118917957d6554Steve Block return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info); 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprotected: 162d0825bca7fe65beaee391d30da42e937db621564Steve Block static const unsigned StructureFlags = OverridesGetOwnPropertySlot | OverridesGetPropertyNames | InternalFunction::StructureFlags | OverridesMarkChildren; 163643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QtRuntimeMethodData *d_func() const {return d_ptr;} 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QtRuntimeMethod(QtRuntimeMethodData *dd, ExecState *exec, const Identifier &n, PassRefPtr<QtInstance> inst); 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QtRuntimeMethodData *d_ptr; 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass QtRuntimeMetaMethod : public QtRuntimeMethod 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QtRuntimeMetaMethod(ExecState *exec, const Identifier &n, PassRefPtr<QtInstance> inst, int index, const QByteArray& signature, bool allowPrivate); 1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool getOwnPropertySlot(ExecState *, const Identifier&, PropertySlot&); 175d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual bool getOwnPropertyDescriptor(ExecState*, const Identifier&, PropertyDescriptor&); 176d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual void getOwnPropertyNames(ExecState*, PropertyNameArray&, EnumerationMode mode = ExcludeDontEnumProperties); 1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 178231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual void markChildren(MarkStack& markStack); 1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprotected: 1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QtRuntimeMetaMethodData* d_func() const {return reinterpret_cast<QtRuntimeMetaMethodData*>(d_ptr);} 1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate: 1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual CallType getCallData(CallData&); 185545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch static EncodedJSValue JSC_HOST_CALL call(ExecState* exec); 186dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block static JSValue lengthGetter(ExecState*, JSValue, const Identifier&); 187dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block static JSValue connectGetter(ExecState*, JSValue, const Identifier&); 188dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block static JSValue disconnectGetter(ExecState*, JSValue, const Identifier&); 1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass QtConnectionObject; 1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass QtRuntimeConnectionMethod : public QtRuntimeMethod 1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QtRuntimeConnectionMethod(ExecState *exec, const Identifier &n, bool isConnect, PassRefPtr<QtInstance> inst, int index, const QByteArray& signature ); 1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool getOwnPropertySlot(ExecState *, const Identifier&, PropertySlot&); 198d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual bool getOwnPropertyDescriptor(ExecState*, const Identifier&, PropertyDescriptor&); 199d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual void getOwnPropertyNames(ExecState*, PropertyNameArray&, EnumerationMode mode = ExcludeDontEnumProperties); 2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprotected: 2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QtRuntimeConnectionMethodData* d_func() const {return reinterpret_cast<QtRuntimeConnectionMethodData*>(d_ptr);} 2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate: 2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual CallType getCallData(CallData&); 206545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch static EncodedJSValue JSC_HOST_CALL call(ExecState* exec); 207dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block static JSValue lengthGetter(ExecState*, JSValue, const Identifier&); 2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static QMultiMap<QObject *, QtConnectionObject *> connections; 2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project friend class QtConnectionObject; 2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass QtConnectionObject: public QObject 2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 21581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch QtConnectionObject(JSGlobalData&, PassRefPtr<QtInstance> instance, int signalIndex, JSObject* thisObject, JSObject* funcObject); 2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ~QtConnectionObject(); 2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project static const QMetaObject staticMetaObject; 2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual const QMetaObject *metaObject() const; 2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void *qt_metacast(const char *); 2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual int qt_metacall(QMetaObject::Call, int, void **argv); 2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project bool match(QObject *sender, int signalIndex, JSObject* thisObject, JSObject *funcObject); 2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // actual slot: 2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project void execute(void **argv); 2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprivate: 2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project RefPtr<QtInstance> m_instance; 2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int m_signalIndex; 2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project QObject* m_originalObject; // only used as a key, not dereferenced 2322daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch Strong<JSObject> m_thisObject; 2332daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch Strong<JSObject> m_funcObject; 2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2365f1ab04193ad0130ca8204aadaceae083aca9881Feng QianQVariant convertValueToQVariant(ExecState* exec, JSValue value, QMetaType::Type hint, int *distance); 2375f1ab04193ad0130ca8204aadaceae083aca9881Feng QianJSValue convertQVariantToValue(ExecState* exec, PassRefPtr<RootObject> root, const QVariant& variant); 2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace Bindings 2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace JSC 2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 243