]> git.saurik.com Git - apple/javascriptcore.git/blame - bindings/qt/qt_instance.h
JavaScriptCore-461.tar.gz
[apple/javascriptcore.git] / bindings / qt / qt_instance.h
CommitLineData
b37bf2e1
A
1/*
2 * Copyright (C) 2006 Trolltech ASA
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 *
18 */
19
20#ifndef BINDINGS_QT_INSTANCE_H_
21#define BINDINGS_QT_INSTANCE_H_
22
23#include "runtime.h"
24#include "runtime_root.h"
25#include <qpointer.h>
26#include <qhash.h>
27
28class QObject;
29
30namespace KJS {
31
32namespace Bindings {
33
34class QtClass;
35class QtField;
36class QtRuntimeMetaMethod;
37
38class QtInstance : public Instance
39{
40public:
41 ~QtInstance ();
42
43 virtual Class* getClass() const;
44
45 virtual void begin();
46 virtual void end();
47
48 virtual JSValue* valueOf() const;
49 virtual JSValue* defaultValue (JSType hint) const;
50
51 virtual bool implementsCall() const;
52
53 virtual JSValue* invokeMethod (ExecState *exec, const MethodList &method, const List &args);
54 virtual JSValue* invokeDefaultMethod (ExecState *exec, const List &args);
55
56 virtual void getPropertyNames(ExecState*, PropertyNameArray&);
57
58 virtual BindingLanguage getBindingLanguage() const { return QtLanguage; }
59
60 JSValue* stringValue() const;
61 JSValue* numberValue() const;
62 JSValue* booleanValue() const;
63
64 QObject* getObject() const { return m_object; }
65
66 static QtInstance* getQtInstance(QObject*, PassRefPtr<RootObject>);
67 static JSObject* getRuntimeObject(QtInstance*);
68
69private:
70 friend class QtClass;
71 QtInstance(QObject*, PassRefPtr<RootObject>); // Factory produced only..
72 mutable QtClass* m_class;
73 QPointer<QObject> m_object;
74 QObject* m_hashkey;
75 mutable QHash<QByteArray,JSValue*> m_methods;
76 mutable QHash<QString,QtField*> m_fields;
77 mutable QtRuntimeMetaMethod* m_defaultMethod;
78 mutable int m_defaultMethodIndex;
79};
80
81} // namespace Bindings
82
83} // namespace KJS
84
85#endif