source: branches/4.5.1/src/script/qscriptvalueimplfwd_p.h@ 1168

Last change on this file since 1168 was 2, checked in by Dmitry A. Kuminov, 16 years ago

Initially imported qt-all-opensource-src-4.5.1 from Trolltech.

File size: 8.9 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4** Contact: Qt Software Information ([email protected])
5**
6** This file is part of the QtScript module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
9** Commercial Usage
10** Licensees holding valid Qt Commercial licenses may use this file in
11** accordance with the Qt Commercial License Agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and Nokia.
14**
15** GNU Lesser General Public License Usage
16** Alternatively, this file may be used under the terms of the GNU Lesser
17** General Public License version 2.1 as published by the Free Software
18** Foundation and appearing in the file LICENSE.LGPL included in the
19** packaging of this file. Please review the following information to
20** ensure the GNU Lesser General Public License version 2.1 requirements
21** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
22**
23** In addition, as a special exception, Nokia gives you certain
24** additional rights. These rights are described in the Nokia Qt LGPL
25** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
26** package.
27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you are unsure which license is appropriate for your use, please
37** contact the sales department at [email protected].
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#ifndef QSCRIPTVALUEIMPLFWD_P_H
43#define QSCRIPTVALUEIMPLFWD_P_H
44
45#include "qscriptglobals_p.h"
46
47#ifndef QT_NO_SCRIPT
48
49#include "qscriptvalue.h"
50
51#include <QtCore/qstring.h>
52#include <QtCore/qlist.h>
53
54QT_BEGIN_NAMESPACE
55
56//
57// W A R N I N G
58// -------------
59//
60// This file is not part of the Qt API. It exists purely as an
61// implementation detail. This header file may change from version to
62// version without notice, or even be removed.
63//
64// We mean it.
65//
66
67class QScriptValueImpl;
68typedef QList<QScriptValueImpl> QScriptValueImplList;
69
70class QScriptClassInfo;
71class QScriptObject;
72class QScriptObjectData;
73class QScriptNameIdImpl;
74class QScriptFunction;
75class QScriptEnginePrivate;
76
77namespace QScript
78{
79 class Member;
80};
81
82class QScriptValueImpl
83{
84public:
85 enum TypeHint {
86 NoTypeHint,
87 NumberTypeHint,
88 StringTypeHint
89 };
90
91 inline QScriptValueImpl();
92 inline QScriptValueImpl(QScriptValue::SpecialValue val);
93 inline QScriptValueImpl(bool val);
94 inline QScriptValueImpl(int val);
95 inline QScriptValueImpl(uint val);
96 inline QScriptValueImpl(qsreal val);
97 inline QScriptValueImpl(QScriptEnginePrivate *engine, const QString &val);
98 inline QScriptValueImpl(QScriptNameIdImpl *val);
99
100 inline QScript::Type type() const;
101 inline QScriptEnginePrivate *engine() const;
102 inline QScriptClassInfo *classInfo() const;
103 inline void setClassInfo(QScriptClassInfo *cls);
104 inline QScriptNameIdImpl *stringValue() const;
105 inline QScriptObject *objectValue() const;
106 inline void incr();
107 inline void decr();
108
109 inline void invalidate();
110 inline bool isValid() const;
111 inline bool isBoolean() const;
112 inline bool isNumber() const;
113 inline bool isString() const;
114 inline bool isFunction() const;
115 inline bool isObject() const;
116 inline bool isUndefined() const;
117 inline bool isNull() const;
118 inline bool isVariant() const;
119 inline bool isQObject() const;
120 inline bool isQMetaObject() const;
121 inline bool isReference() const;
122
123 inline bool isError() const;
124 inline bool isArray() const;
125 inline bool isDate() const;
126 inline bool isRegExp() const;
127
128 inline QString toString() const;
129 inline qsreal toNumber() const;
130 inline bool toBoolean() const;
131 inline qsreal toInteger() const;
132 inline qint32 toInt32() const;
133 inline quint32 toUInt32() const;
134 inline quint16 toUInt16() const;
135 QVariant toVariant() const;
136 inline QObject *toQObject() const;
137 inline const QMetaObject *toQMetaObject() const;
138 inline QDateTime toDateTime() const;
139#ifndef QT_NO_REGEXP
140 inline QRegExp toRegExp() const;
141#endif
142
143 inline QVariant &variantValue() const;
144 inline void setVariantValue(const QVariant &v);
145
146 bool instanceOf(const QScriptValueImpl &value) const;
147 bool instanceOf_helper(const QScriptValueImpl &value) const;
148
149 bool implementsHasInstance() const;
150 bool hasInstance(const QScriptValueImpl &value) const;
151
152 inline QScriptValueImpl prototype() const;
153 inline void setPrototype(const QScriptValueImpl &prototype);
154
155 inline QScriptValueImpl property(QScriptNameIdImpl *nameId,
156 const QScriptValue::ResolveFlags &mode = QScriptValue::ResolvePrototype) const;
157 void setProperty(QScriptNameIdImpl *nameId, const QScriptValueImpl &value,
158 const QScriptValue::PropertyFlags &flags = QScriptValue::KeepExistingFlags);
159
160 inline QScriptValueImpl property(const QString &name,
161 const QScriptValue::ResolveFlags &mode = QScriptValue::ResolvePrototype) const;
162 inline void setProperty(const QString &name, const QScriptValueImpl &value,
163 const QScriptValue::PropertyFlags &flags = QScriptValue::KeepExistingFlags);
164
165 inline QScriptValueImpl property(quint32 arrayIndex,
166 const QScriptValue::ResolveFlags &mode = QScriptValue::ResolvePrototype) const;
167 inline void setProperty(quint32 arrayIndex, const QScriptValueImpl &value,
168 const QScriptValue::PropertyFlags &flags = QScriptValue::KeepExistingFlags);
169
170 inline QScriptValue::PropertyFlags propertyFlags(const QString &name,
171 const QScriptValue::ResolveFlags &mode = QScriptValue::ResolvePrototype) const;
172 inline QScriptValue::PropertyFlags propertyFlags(QScriptNameIdImpl *nameId,
173 const QScriptValue::ResolveFlags &mode = QScriptValue::ResolvePrototype) const;
174
175 inline bool deleteProperty(QScriptNameIdImpl *nameId,
176 const QScriptValue::ResolveFlags &mode = QScriptValue::ResolveLocal);
177
178 inline QScriptValueImpl call(const QScriptValueImpl &thisObject = QScriptValueImpl(),
179 const QScriptValueImplList &args = QScriptValueImplList());
180 inline QScriptValueImpl call(const QScriptValueImpl &thisObject,
181 const QScriptValueImpl &arguments);
182 inline QScriptValueImpl construct(const QScriptValueImplList &args = QScriptValueImplList());
183 inline QScriptValueImpl construct(const QScriptValueImpl &arguments);
184
185 inline void mark(int) const;
186 bool isMarked(int) const;
187
188 inline QScriptValueImpl internalValue() const;
189 inline void setInternalValue(const QScriptValueImpl &internalValue);
190
191 inline void setQObjectValue(QObject *object);
192
193 inline QScriptObjectData *objectData() const;
194 inline void setObjectData(QScriptObjectData *data);
195 void destroyObjectData();
196
197 inline void createMember(QScriptNameIdImpl *nameId,
198 QScript::Member *member, uint flags); // ### remove me
199 inline int memberCount() const;
200 inline void member(int index, QScript::Member *member) const;
201
202 inline bool resolve(QScriptNameIdImpl *nameId, QScript::Member *member,
203 QScriptValueImpl *object, QScriptValue::ResolveFlags mode,
204 QScript::AccessMode access) const;
205 bool resolve_helper(QScriptNameIdImpl *nameId, QScript::Member *member,
206 QScriptValueImpl *object, QScriptValue::ResolveFlags mode,
207 QScript::AccessMode access) const;
208 inline void get(const QScript::Member &member, QScriptValueImpl *out) const;
209 inline void get_helper(const QScript::Member &member, QScriptValueImpl *out) const;
210 inline void get(QScriptNameIdImpl *nameId, QScriptValueImpl *out);
211 inline void put(const QScript::Member &member, const QScriptValueImpl &value);
212 inline void removeMember(const QScript::Member &member);
213
214 inline QScriptValueImpl scope() const;
215 inline void setScope(const QScriptValueImpl &scope);
216
217 inline QScriptFunction *toFunction() const;
218
219 bool detectedCycle() const;
220
221 QScript::Type m_type;
222 union {
223 bool m_bool_value;
224 int m_int_value;
225 qsreal m_number_value;
226 void *m_ptr_value;
227 QScriptObject *m_object_value;
228 QScriptNameIdImpl *m_string_value;
229 QString *m_lazy_string_value;
230 };
231};
232
233QT_END_NAMESPACE
234
235#endif // QT_NO_SCRIPT
236
237#endif // QSCRIPTVALUEIMPLFWD_P_H
Note: See TracBrowser for help on using the repository browser.