1 /****************************************************************************
3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4 ** Contact: Nokia Corporation (qt-info@nokia.com)
6 ** This file is part of the QtScript module of the Qt Toolkit.
8 ** $QT_BEGIN_LICENSE:LGPL$
10 ** This file contains pre-release code and may not be distributed.
11 ** You may use this file in accordance with the terms and conditions
12 ** contained in the either Technology Preview License Agreement or the
13 ** Beta Release License Agreement.
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.
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
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.
36 ** If you are unsure which license is appropriate for your use, please
37 ** contact the sales department at http://www.qtsoftware.com/contact.
40 ****************************************************************************/
42 #ifndef QSCRIPTVALUEIMPLFWD_P_H
43 #define QSCRIPTVALUEIMPLFWD_P_H
45 #include "qscriptglobals_p.h"
49 #include "qscriptvalue.h"
51 #include <QtCore/qstring.h>
52 #include <QtCore/qlist.h>
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.
67 class QScriptValueImpl
;
68 typedef QList
<QScriptValueImpl
> QScriptValueImplList
;
70 class QScriptClassInfo
;
72 class QScriptObjectData
;
73 class QScriptNameIdImpl
;
74 class QScriptFunction
;
75 class QScriptEnginePrivate
;
82 class QScriptValueImpl
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
);
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;
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;
123 inline bool isError() const;
124 inline bool isArray() const;
125 inline bool isDate() const;
126 inline bool isRegExp() const;
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;
140 inline QRegExp
toRegExp() const;
143 inline QVariant
&variantValue() const;
144 inline void setVariantValue(const QVariant
&v
);
146 bool instanceOf(const QScriptValueImpl
&value
) const;
147 bool instanceOf_helper(const QScriptValueImpl
&value
) const;
149 bool implementsHasInstance() const;
150 bool hasInstance(const QScriptValueImpl
&value
) const;
152 inline QScriptValueImpl
prototype() const;
153 inline void setPrototype(const QScriptValueImpl
&prototype
);
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
);
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
);
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
);
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;
175 inline bool deleteProperty(QScriptNameIdImpl
*nameId
,
176 const QScriptValue::ResolveFlags
&mode
= QScriptValue::ResolveLocal
);
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
);
185 inline void mark(int) const;
186 bool isMarked(int) const;
188 inline QScriptValueImpl
internalValue() const;
189 inline void setInternalValue(const QScriptValueImpl
&internalValue
);
191 inline void setQObjectValue(QObject
*object
);
193 inline QScriptObjectData
*objectData() const;
194 inline void setObjectData(QScriptObjectData
*data
);
195 void destroyObjectData();
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;
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
);
214 inline QScriptValueImpl
scope() const;
215 inline void setScope(const QScriptValueImpl
&scope
);
217 inline QScriptFunction
*toFunction() const;
219 bool detectedCycle() const;
221 QScript::Type m_type
;
225 qsreal m_number_value
;
227 QScriptObject
*m_object_value
;
228 QScriptNameIdImpl
*m_string_value
;
229 QString
*m_lazy_string_value
;
235 #endif // QT_NO_SCRIPT
237 #endif // QSCRIPTVALUEIMPLFWD_P_H