1d0825bca7fe65beaee391d30da42e937db621564Steve Block/*
2d0825bca7fe65beaee391d30da42e937db621564Steve Block    Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies)
3d0825bca7fe65beaee391d30da42e937db621564Steve Block
4d0825bca7fe65beaee391d30da42e937db621564Steve Block    This library is free software; you can redistribute it and/or
5d0825bca7fe65beaee391d30da42e937db621564Steve Block    modify it under the terms of the GNU Library General Public
6d0825bca7fe65beaee391d30da42e937db621564Steve Block    License as published by the Free Software Foundation; either
7d0825bca7fe65beaee391d30da42e937db621564Steve Block    version 2 of the License, or (at your option) any later version.
8d0825bca7fe65beaee391d30da42e937db621564Steve Block
9d0825bca7fe65beaee391d30da42e937db621564Steve Block    This library is distributed in the hope that it will be useful,
10d0825bca7fe65beaee391d30da42e937db621564Steve Block    but WITHOUT ANY WARRANTY; without even the implied warranty of
11d0825bca7fe65beaee391d30da42e937db621564Steve Block    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12d0825bca7fe65beaee391d30da42e937db621564Steve Block    Library General Public License for more details.
13d0825bca7fe65beaee391d30da42e937db621564Steve Block
14d0825bca7fe65beaee391d30da42e937db621564Steve Block    You should have received a copy of the GNU Library General Public License
15d0825bca7fe65beaee391d30da42e937db621564Steve Block    along with this library; see the file COPYING.LIB.  If not, write to
16d0825bca7fe65beaee391d30da42e937db621564Steve Block    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17d0825bca7fe65beaee391d30da42e937db621564Steve Block    Boston, MA 02110-1301, USA.
18d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
19d0825bca7fe65beaee391d30da42e937db621564Steve Block
20d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "config.h"
21d0825bca7fe65beaee391d30da42e937db621564Steve Block
22d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "qscriptvalue.h"
23d0825bca7fe65beaee391d30da42e937db621564Steve Block
24d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "qscriptengine.h"
25d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "qscriptengine_p.h"
26d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "qscriptvalue_p.h"
27d0825bca7fe65beaee391d30da42e937db621564Steve Block#include <QtCore/qdebug.h>
28d0825bca7fe65beaee391d30da42e937db621564Steve Block
29d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
30d0825bca7fe65beaee391d30da42e937db621564Steve Block    Constructs an invalid value.
31d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
32d0825bca7fe65beaee391d30da42e937db621564Steve BlockQScriptValue::QScriptValue()
33d0825bca7fe65beaee391d30da42e937db621564Steve Block    : d_ptr(new QScriptValuePrivate())
34d0825bca7fe65beaee391d30da42e937db621564Steve Block{
35d0825bca7fe65beaee391d30da42e937db621564Steve Block}
36d0825bca7fe65beaee391d30da42e937db621564Steve Block
37d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
38d0825bca7fe65beaee391d30da42e937db621564Steve Block  Constructs a new QScriptValue with a boolean \a value.
39d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
40d0825bca7fe65beaee391d30da42e937db621564Steve BlockQScriptValue::QScriptValue(bool value)
41d0825bca7fe65beaee391d30da42e937db621564Steve Block    : d_ptr(new QScriptValuePrivate(value))
42d0825bca7fe65beaee391d30da42e937db621564Steve Block{
43d0825bca7fe65beaee391d30da42e937db621564Steve Block}
44d0825bca7fe65beaee391d30da42e937db621564Steve Block
45d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
46d0825bca7fe65beaee391d30da42e937db621564Steve Block  Constructs a new QScriptValue with a number \a value.
47d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
48d0825bca7fe65beaee391d30da42e937db621564Steve BlockQScriptValue::QScriptValue(int value)
49d0825bca7fe65beaee391d30da42e937db621564Steve Block    : d_ptr(new QScriptValuePrivate(value))
50d0825bca7fe65beaee391d30da42e937db621564Steve Block{
51d0825bca7fe65beaee391d30da42e937db621564Steve Block}
52d0825bca7fe65beaee391d30da42e937db621564Steve Block
53d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
54d0825bca7fe65beaee391d30da42e937db621564Steve Block  Constructs a new QScriptValue with a number \a value.
55d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
56d0825bca7fe65beaee391d30da42e937db621564Steve BlockQScriptValue::QScriptValue(uint value)
57d0825bca7fe65beaee391d30da42e937db621564Steve Block    : d_ptr(new QScriptValuePrivate(value))
58d0825bca7fe65beaee391d30da42e937db621564Steve Block{
59d0825bca7fe65beaee391d30da42e937db621564Steve Block}
60d0825bca7fe65beaee391d30da42e937db621564Steve Block
61d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
62d0825bca7fe65beaee391d30da42e937db621564Steve Block  Constructs a new QScriptValue with a number \a value.
63d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
64d0825bca7fe65beaee391d30da42e937db621564Steve BlockQScriptValue::QScriptValue(qsreal value)
65d0825bca7fe65beaee391d30da42e937db621564Steve Block    : d_ptr(new QScriptValuePrivate(value))
66d0825bca7fe65beaee391d30da42e937db621564Steve Block{
67d0825bca7fe65beaee391d30da42e937db621564Steve Block}
68d0825bca7fe65beaee391d30da42e937db621564Steve Block
69d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
70d0825bca7fe65beaee391d30da42e937db621564Steve Block  Constructs a new QScriptValue with a string \a value.
71d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
72d0825bca7fe65beaee391d30da42e937db621564Steve BlockQScriptValue::QScriptValue(const QString& value)
73d0825bca7fe65beaee391d30da42e937db621564Steve Block    : d_ptr(new QScriptValuePrivate(value))
74d0825bca7fe65beaee391d30da42e937db621564Steve Block{
75d0825bca7fe65beaee391d30da42e937db621564Steve Block}
76d0825bca7fe65beaee391d30da42e937db621564Steve Block
77d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
78d0825bca7fe65beaee391d30da42e937db621564Steve Block  Constructs a new QScriptValue with a special \a value.
79d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
80d0825bca7fe65beaee391d30da42e937db621564Steve BlockQScriptValue::QScriptValue(SpecialValue value)
81d0825bca7fe65beaee391d30da42e937db621564Steve Block    : d_ptr(new QScriptValuePrivate(value))
82d0825bca7fe65beaee391d30da42e937db621564Steve Block{
83d0825bca7fe65beaee391d30da42e937db621564Steve Block}
84d0825bca7fe65beaee391d30da42e937db621564Steve Block
85d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
86d0825bca7fe65beaee391d30da42e937db621564Steve Block  Constructs a new QScriptValue with a string \a value.
87d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
88d0825bca7fe65beaee391d30da42e937db621564Steve BlockQScriptValue::QScriptValue(const char* value)
89d0825bca7fe65beaee391d30da42e937db621564Steve Block    : d_ptr(new QScriptValuePrivate(QString::fromUtf8(value)))
90d0825bca7fe65beaee391d30da42e937db621564Steve Block{
91d0825bca7fe65beaee391d30da42e937db621564Steve Block}
92d0825bca7fe65beaee391d30da42e937db621564Steve Block
93d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
94d0825bca7fe65beaee391d30da42e937db621564Steve Block    Block automatic convertion to bool
95d0825bca7fe65beaee391d30da42e937db621564Steve Block    \internal
96d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
97d0825bca7fe65beaee391d30da42e937db621564Steve BlockQScriptValue::QScriptValue(void* d)
98d0825bca7fe65beaee391d30da42e937db621564Steve Block{
99d0825bca7fe65beaee391d30da42e937db621564Steve Block    Q_ASSERT(false);
100d0825bca7fe65beaee391d30da42e937db621564Steve Block}
101d0825bca7fe65beaee391d30da42e937db621564Steve Block
102d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
103d0825bca7fe65beaee391d30da42e937db621564Steve Block    Constructs a new QScriptValue from private
104d0825bca7fe65beaee391d30da42e937db621564Steve Block    \internal
105d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
106d0825bca7fe65beaee391d30da42e937db621564Steve BlockQScriptValue::QScriptValue(QScriptValuePrivate* d)
107d0825bca7fe65beaee391d30da42e937db621564Steve Block    : d_ptr(d)
108d0825bca7fe65beaee391d30da42e937db621564Steve Block{
109d0825bca7fe65beaee391d30da42e937db621564Steve Block}
110d0825bca7fe65beaee391d30da42e937db621564Steve Block
111d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
112d0825bca7fe65beaee391d30da42e937db621564Steve Block  \obsolete
113d0825bca7fe65beaee391d30da42e937db621564Steve Block
114d0825bca7fe65beaee391d30da42e937db621564Steve Block  Constructs a new QScriptValue with the boolean \a value and
115d0825bca7fe65beaee391d30da42e937db621564Steve Block  registers it with the script \a engine.
116d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
117d0825bca7fe65beaee391d30da42e937db621564Steve BlockQScriptValue::QScriptValue(QScriptEngine* engine, bool value)
118d0825bca7fe65beaee391d30da42e937db621564Steve Block{
11921939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (engine)
12021939df44de1705786c545cd1bf519d47250322dBen Murdoch        d_ptr = new QScriptValuePrivate(QScriptEnginePrivate::get(engine), value);
12121939df44de1705786c545cd1bf519d47250322dBen Murdoch    else
12221939df44de1705786c545cd1bf519d47250322dBen Murdoch        d_ptr = new QScriptValuePrivate(value);
123d0825bca7fe65beaee391d30da42e937db621564Steve Block}
124d0825bca7fe65beaee391d30da42e937db621564Steve Block
125d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
126d0825bca7fe65beaee391d30da42e937db621564Steve Block  \obsolete
127d0825bca7fe65beaee391d30da42e937db621564Steve Block
128d0825bca7fe65beaee391d30da42e937db621564Steve Block  Constructs a new QScriptValue with the integer \a value and
129d0825bca7fe65beaee391d30da42e937db621564Steve Block  registers it with the script \a engine.
130d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
131d0825bca7fe65beaee391d30da42e937db621564Steve BlockQScriptValue::QScriptValue(QScriptEngine* engine, int value)
132d0825bca7fe65beaee391d30da42e937db621564Steve Block{
13321939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (engine)
13421939df44de1705786c545cd1bf519d47250322dBen Murdoch        d_ptr = new QScriptValuePrivate(QScriptEnginePrivate::get(engine), value);
13521939df44de1705786c545cd1bf519d47250322dBen Murdoch    else
13621939df44de1705786c545cd1bf519d47250322dBen Murdoch        d_ptr = new QScriptValuePrivate(value);
137d0825bca7fe65beaee391d30da42e937db621564Steve Block}
138d0825bca7fe65beaee391d30da42e937db621564Steve Block
139d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
140d0825bca7fe65beaee391d30da42e937db621564Steve Block  \obsolete
141d0825bca7fe65beaee391d30da42e937db621564Steve Block
142d0825bca7fe65beaee391d30da42e937db621564Steve Block  Constructs a new QScriptValue with the unsigned integer \a value and
143d0825bca7fe65beaee391d30da42e937db621564Steve Block  registers it with the script \a engine.
144d0825bca7fe65beaee391d30da42e937db621564Steve Block */
145d0825bca7fe65beaee391d30da42e937db621564Steve BlockQScriptValue::QScriptValue(QScriptEngine* engine, uint value)
146d0825bca7fe65beaee391d30da42e937db621564Steve Block{
14721939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (engine)
14821939df44de1705786c545cd1bf519d47250322dBen Murdoch        d_ptr = new QScriptValuePrivate(QScriptEnginePrivate::get(engine), value);
14921939df44de1705786c545cd1bf519d47250322dBen Murdoch    else
15021939df44de1705786c545cd1bf519d47250322dBen Murdoch        d_ptr = new QScriptValuePrivate(value);
151d0825bca7fe65beaee391d30da42e937db621564Steve Block}
152d0825bca7fe65beaee391d30da42e937db621564Steve Block
153d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
154d0825bca7fe65beaee391d30da42e937db621564Steve Block  \obsolete
155d0825bca7fe65beaee391d30da42e937db621564Steve Block
156d0825bca7fe65beaee391d30da42e937db621564Steve Block  Constructs a new QScriptValue with the qsreal \a value and
157d0825bca7fe65beaee391d30da42e937db621564Steve Block  registers it with the script \a engine.
158d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
159d0825bca7fe65beaee391d30da42e937db621564Steve BlockQScriptValue::QScriptValue(QScriptEngine* engine, qsreal value)
160d0825bca7fe65beaee391d30da42e937db621564Steve Block{
16121939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (engine)
16221939df44de1705786c545cd1bf519d47250322dBen Murdoch        d_ptr = new QScriptValuePrivate(QScriptEnginePrivate::get(engine), value);
16321939df44de1705786c545cd1bf519d47250322dBen Murdoch    else
16421939df44de1705786c545cd1bf519d47250322dBen Murdoch        d_ptr = new QScriptValuePrivate(value);
165d0825bca7fe65beaee391d30da42e937db621564Steve Block}
166d0825bca7fe65beaee391d30da42e937db621564Steve Block
167d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
168d0825bca7fe65beaee391d30da42e937db621564Steve Block  \obsolete
169d0825bca7fe65beaee391d30da42e937db621564Steve Block
170d0825bca7fe65beaee391d30da42e937db621564Steve Block  Constructs a new QScriptValue with the string \a value and
171d0825bca7fe65beaee391d30da42e937db621564Steve Block  registers it with the script \a engine.
172d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
173d0825bca7fe65beaee391d30da42e937db621564Steve BlockQScriptValue::QScriptValue(QScriptEngine* engine, const QString& value)
174d0825bca7fe65beaee391d30da42e937db621564Steve Block{
17521939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (engine)
17621939df44de1705786c545cd1bf519d47250322dBen Murdoch        d_ptr = new QScriptValuePrivate(QScriptEnginePrivate::get(engine), value);
17721939df44de1705786c545cd1bf519d47250322dBen Murdoch    else
17821939df44de1705786c545cd1bf519d47250322dBen Murdoch        d_ptr = new QScriptValuePrivate(value);
179d0825bca7fe65beaee391d30da42e937db621564Steve Block}
180d0825bca7fe65beaee391d30da42e937db621564Steve Block
181d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
182d0825bca7fe65beaee391d30da42e937db621564Steve Block  \obsolete
183d0825bca7fe65beaee391d30da42e937db621564Steve Block
184d0825bca7fe65beaee391d30da42e937db621564Steve Block  Constructs a new QScriptValue with the string \a value and
185d0825bca7fe65beaee391d30da42e937db621564Steve Block  registers it with the script \a engine.
186d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
187d0825bca7fe65beaee391d30da42e937db621564Steve BlockQScriptValue::QScriptValue(QScriptEngine* engine, const char* value)
188d0825bca7fe65beaee391d30da42e937db621564Steve Block{
18921939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (engine)
19021939df44de1705786c545cd1bf519d47250322dBen Murdoch        d_ptr = new QScriptValuePrivate(QScriptEnginePrivate::get(engine), QString::fromUtf8(value));
19121939df44de1705786c545cd1bf519d47250322dBen Murdoch    else
19221939df44de1705786c545cd1bf519d47250322dBen Murdoch        d_ptr = new QScriptValuePrivate(QString::fromUtf8(value));
193d0825bca7fe65beaee391d30da42e937db621564Steve Block}
194d0825bca7fe65beaee391d30da42e937db621564Steve Block
195d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
196d0825bca7fe65beaee391d30da42e937db621564Steve Block  \obsolete
197d0825bca7fe65beaee391d30da42e937db621564Steve Block
198d0825bca7fe65beaee391d30da42e937db621564Steve Block  Constructs a new QScriptValue with the special \a value and
199d0825bca7fe65beaee391d30da42e937db621564Steve Block  registers it with the script \a engine.
200d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
201d0825bca7fe65beaee391d30da42e937db621564Steve BlockQScriptValue::QScriptValue(QScriptEngine* engine, SpecialValue value)
202d0825bca7fe65beaee391d30da42e937db621564Steve Block{
20321939df44de1705786c545cd1bf519d47250322dBen Murdoch    if (engine)
20421939df44de1705786c545cd1bf519d47250322dBen Murdoch        d_ptr = new QScriptValuePrivate(QScriptEnginePrivate::get(engine), value);
20521939df44de1705786c545cd1bf519d47250322dBen Murdoch    else
20621939df44de1705786c545cd1bf519d47250322dBen Murdoch        d_ptr = new QScriptValuePrivate(value);
207d0825bca7fe65beaee391d30da42e937db621564Steve Block}
208d0825bca7fe65beaee391d30da42e937db621564Steve Block
209d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
210d0825bca7fe65beaee391d30da42e937db621564Steve Block  Constructs a new QScriptValue that is a copy of \a other.
211d0825bca7fe65beaee391d30da42e937db621564Steve Block
212d0825bca7fe65beaee391d30da42e937db621564Steve Block  Note that if \a other is an object (i.e., isObject() would return
213d0825bca7fe65beaee391d30da42e937db621564Steve Block  true), then only a reference to the underlying object is copied into
214d0825bca7fe65beaee391d30da42e937db621564Steve Block  the new script value (i.e., the object itself is not copied).
215d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
216d0825bca7fe65beaee391d30da42e937db621564Steve BlockQScriptValue::QScriptValue(const QScriptValue& other)
217d0825bca7fe65beaee391d30da42e937db621564Steve Block    : d_ptr(other.d_ptr)
218d0825bca7fe65beaee391d30da42e937db621564Steve Block{
219d0825bca7fe65beaee391d30da42e937db621564Steve Block}
220d0825bca7fe65beaee391d30da42e937db621564Steve Block
221d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
222d0825bca7fe65beaee391d30da42e937db621564Steve Block    Destroys this QScriptValue.
223d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
224d0825bca7fe65beaee391d30da42e937db621564Steve BlockQScriptValue::~QScriptValue()
225d0825bca7fe65beaee391d30da42e937db621564Steve Block{
226d0825bca7fe65beaee391d30da42e937db621564Steve Block}
227d0825bca7fe65beaee391d30da42e937db621564Steve Block
228d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
229d0825bca7fe65beaee391d30da42e937db621564Steve Block  Returns true if this QScriptValue is valid; otherwise returns
230d0825bca7fe65beaee391d30da42e937db621564Steve Block  false.
231d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
232d0825bca7fe65beaee391d30da42e937db621564Steve Blockbool QScriptValue::isValid() const
233d0825bca7fe65beaee391d30da42e937db621564Steve Block{
234d0825bca7fe65beaee391d30da42e937db621564Steve Block    return d_ptr->isValid();
235d0825bca7fe65beaee391d30da42e937db621564Steve Block}
236d0825bca7fe65beaee391d30da42e937db621564Steve Block
237d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
238d0825bca7fe65beaee391d30da42e937db621564Steve Block  Returns true if this QScriptValue is of the primitive type Boolean;
239d0825bca7fe65beaee391d30da42e937db621564Steve Block  otherwise returns false.
240d0825bca7fe65beaee391d30da42e937db621564Steve Block
241d0825bca7fe65beaee391d30da42e937db621564Steve Block  \sa toBool()
242d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
243d0825bca7fe65beaee391d30da42e937db621564Steve Blockbool QScriptValue::isBool() const
244d0825bca7fe65beaee391d30da42e937db621564Steve Block{
245d0825bca7fe65beaee391d30da42e937db621564Steve Block    return d_ptr->isBool();
246d0825bca7fe65beaee391d30da42e937db621564Steve Block}
247d0825bca7fe65beaee391d30da42e937db621564Steve Block
248d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
249d0825bca7fe65beaee391d30da42e937db621564Steve Block  \obsolete
250d0825bca7fe65beaee391d30da42e937db621564Steve Block
251d0825bca7fe65beaee391d30da42e937db621564Steve Block  Use isBool() instead.
252d0825bca7fe65beaee391d30da42e937db621564Steve Block  Returns true if this QScriptValue is of the primitive type Boolean;
253d0825bca7fe65beaee391d30da42e937db621564Steve Block  otherwise returns false.
254d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
255d0825bca7fe65beaee391d30da42e937db621564Steve Blockbool QScriptValue::isBoolean() const
256d0825bca7fe65beaee391d30da42e937db621564Steve Block{
257d0825bca7fe65beaee391d30da42e937db621564Steve Block    return d_ptr->isBool();
258d0825bca7fe65beaee391d30da42e937db621564Steve Block}
259d0825bca7fe65beaee391d30da42e937db621564Steve Block
260d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
261d0825bca7fe65beaee391d30da42e937db621564Steve Block  Returns true if this QScriptValue is of the primitive type Number;
262d0825bca7fe65beaee391d30da42e937db621564Steve Block  otherwise returns false.
263d0825bca7fe65beaee391d30da42e937db621564Steve Block
264d0825bca7fe65beaee391d30da42e937db621564Steve Block  \sa toNumber()
265d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
266d0825bca7fe65beaee391d30da42e937db621564Steve Blockbool QScriptValue::isNumber() const
267d0825bca7fe65beaee391d30da42e937db621564Steve Block{
268d0825bca7fe65beaee391d30da42e937db621564Steve Block    return d_ptr->isNumber();
269d0825bca7fe65beaee391d30da42e937db621564Steve Block}
270d0825bca7fe65beaee391d30da42e937db621564Steve Block
271d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
272d0825bca7fe65beaee391d30da42e937db621564Steve Block  Returns true if this QScriptValue is of the primitive type Null;
273d0825bca7fe65beaee391d30da42e937db621564Steve Block  otherwise returns false.
274d0825bca7fe65beaee391d30da42e937db621564Steve Block
275d0825bca7fe65beaee391d30da42e937db621564Steve Block  \sa QScriptEngine::nullValue()
276d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
277d0825bca7fe65beaee391d30da42e937db621564Steve Blockbool QScriptValue::isNull() const
278d0825bca7fe65beaee391d30da42e937db621564Steve Block{
279d0825bca7fe65beaee391d30da42e937db621564Steve Block    return d_ptr->isNull();
280d0825bca7fe65beaee391d30da42e937db621564Steve Block}
281d0825bca7fe65beaee391d30da42e937db621564Steve Block
282d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
283d0825bca7fe65beaee391d30da42e937db621564Steve Block  Returns true if this QScriptValue is of the primitive type String;
284d0825bca7fe65beaee391d30da42e937db621564Steve Block  otherwise returns false.
285d0825bca7fe65beaee391d30da42e937db621564Steve Block
286d0825bca7fe65beaee391d30da42e937db621564Steve Block  \sa toString()
287d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
288d0825bca7fe65beaee391d30da42e937db621564Steve Blockbool QScriptValue::isString() const
289d0825bca7fe65beaee391d30da42e937db621564Steve Block{
290d0825bca7fe65beaee391d30da42e937db621564Steve Block    return d_ptr->isString();
291d0825bca7fe65beaee391d30da42e937db621564Steve Block}
292d0825bca7fe65beaee391d30da42e937db621564Steve Block
293d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
294d0825bca7fe65beaee391d30da42e937db621564Steve Block  Returns true if this QScriptValue is of the primitive type Undefined;
295d0825bca7fe65beaee391d30da42e937db621564Steve Block  otherwise returns false.
296d0825bca7fe65beaee391d30da42e937db621564Steve Block
297d0825bca7fe65beaee391d30da42e937db621564Steve Block  \sa QScriptEngine::undefinedValue()
298d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
299d0825bca7fe65beaee391d30da42e937db621564Steve Blockbool QScriptValue::isUndefined() const
300d0825bca7fe65beaee391d30da42e937db621564Steve Block{
301d0825bca7fe65beaee391d30da42e937db621564Steve Block    return d_ptr->isUndefined();
302d0825bca7fe65beaee391d30da42e937db621564Steve Block}
303d0825bca7fe65beaee391d30da42e937db621564Steve Block
304d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
305d0825bca7fe65beaee391d30da42e937db621564Steve Block  Returns true if this QScriptValue is an object of the Error class;
306d0825bca7fe65beaee391d30da42e937db621564Steve Block  otherwise returns false.
307d0825bca7fe65beaee391d30da42e937db621564Steve Block
308d0825bca7fe65beaee391d30da42e937db621564Steve Block  \sa QScriptContext::throwError()
309d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
310d0825bca7fe65beaee391d30da42e937db621564Steve Blockbool QScriptValue::isError() const
311d0825bca7fe65beaee391d30da42e937db621564Steve Block{
312d0825bca7fe65beaee391d30da42e937db621564Steve Block    return d_ptr->isError();
313d0825bca7fe65beaee391d30da42e937db621564Steve Block}
314d0825bca7fe65beaee391d30da42e937db621564Steve Block
315d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
316e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  Returns true if this QScriptValue is an object of the Array class;
317e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  otherwise returns false.
318e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
319e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  \sa QScriptEngine::newArray()
320e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke*/
321e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkebool QScriptValue::isArray() const
322e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{
323e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    return d_ptr->isArray();
324e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke}
325e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
326e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke/*!
327bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    Returns true if this QScriptValue is an object of the Date class;
328bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    otherwise returns false.
329bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
330bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    \sa QScriptEngine::newDate()
331bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen*/
332bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsenbool QScriptValue::isDate() const
333bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen{
334bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    return d_ptr->isDate();
335bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen}
336bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
337bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen/*!
338d0825bca7fe65beaee391d30da42e937db621564Steve Block  Returns true if this QScriptValue is of the Object type; otherwise
339d0825bca7fe65beaee391d30da42e937db621564Steve Block  returns false.
340d0825bca7fe65beaee391d30da42e937db621564Steve Block
341d0825bca7fe65beaee391d30da42e937db621564Steve Block  Note that function values, variant values, and QObject values are
342d0825bca7fe65beaee391d30da42e937db621564Steve Block  objects, so this function returns true for such values.
343d0825bca7fe65beaee391d30da42e937db621564Steve Block
344d0825bca7fe65beaee391d30da42e937db621564Steve Block  \sa toObject(), QScriptEngine::newObject()
345d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
346d0825bca7fe65beaee391d30da42e937db621564Steve Blockbool QScriptValue::isObject() const
347d0825bca7fe65beaee391d30da42e937db621564Steve Block{
348d0825bca7fe65beaee391d30da42e937db621564Steve Block    return d_ptr->isObject();
349d0825bca7fe65beaee391d30da42e937db621564Steve Block}
350d0825bca7fe65beaee391d30da42e937db621564Steve Block
351d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
352d0825bca7fe65beaee391d30da42e937db621564Steve Block  Returns true if this QScriptValue is a function; otherwise returns
353d0825bca7fe65beaee391d30da42e937db621564Steve Block  false.
354d0825bca7fe65beaee391d30da42e937db621564Steve Block
355d0825bca7fe65beaee391d30da42e937db621564Steve Block  \sa call()
356d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
357d0825bca7fe65beaee391d30da42e937db621564Steve Blockbool QScriptValue::isFunction() const
358d0825bca7fe65beaee391d30da42e937db621564Steve Block{
359d0825bca7fe65beaee391d30da42e937db621564Steve Block    return d_ptr->isFunction();
360d0825bca7fe65beaee391d30da42e937db621564Steve Block}
361d0825bca7fe65beaee391d30da42e937db621564Steve Block
362d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
363d0825bca7fe65beaee391d30da42e937db621564Steve Block  Returns the string value of this QScriptValue, as defined in
364d0825bca7fe65beaee391d30da42e937db621564Steve Block  \l{ECMA-262} section 9.8, "ToString".
365d0825bca7fe65beaee391d30da42e937db621564Steve Block
366d0825bca7fe65beaee391d30da42e937db621564Steve Block  Note that if this QScriptValue is an object, calling this function
367d0825bca7fe65beaee391d30da42e937db621564Steve Block  has side effects on the script engine, since the engine will call
368d0825bca7fe65beaee391d30da42e937db621564Steve Block  the object's toString() function (and possibly valueOf()) in an
369d0825bca7fe65beaee391d30da42e937db621564Steve Block  attempt to convert the object to a primitive value (possibly
370d0825bca7fe65beaee391d30da42e937db621564Steve Block  resulting in an uncaught script exception).
371d0825bca7fe65beaee391d30da42e937db621564Steve Block
372d0825bca7fe65beaee391d30da42e937db621564Steve Block  \sa isString()
373d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
374d0825bca7fe65beaee391d30da42e937db621564Steve BlockQString QScriptValue::toString() const
375d0825bca7fe65beaee391d30da42e937db621564Steve Block{
376d0825bca7fe65beaee391d30da42e937db621564Steve Block    return d_ptr->toString();
377d0825bca7fe65beaee391d30da42e937db621564Steve Block}
378d0825bca7fe65beaee391d30da42e937db621564Steve Block
379d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
380d0825bca7fe65beaee391d30da42e937db621564Steve Block  Returns the number value of this QScriptValue, as defined in
381d0825bca7fe65beaee391d30da42e937db621564Steve Block  \l{ECMA-262} section 9.3, "ToNumber".
382d0825bca7fe65beaee391d30da42e937db621564Steve Block
383d0825bca7fe65beaee391d30da42e937db621564Steve Block  Note that if this QScriptValue is an object, calling this function
384d0825bca7fe65beaee391d30da42e937db621564Steve Block  has side effects on the script engine, since the engine will call
385d0825bca7fe65beaee391d30da42e937db621564Steve Block  the object's valueOf() function (and possibly toString()) in an
386d0825bca7fe65beaee391d30da42e937db621564Steve Block  attempt to convert the object to a primitive value (possibly
387d0825bca7fe65beaee391d30da42e937db621564Steve Block  resulting in an uncaught script exception).
388d0825bca7fe65beaee391d30da42e937db621564Steve Block
389d0825bca7fe65beaee391d30da42e937db621564Steve Block  \sa isNumber(), toInteger(), toInt32(), toUInt32(), toUInt16()
390d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
391d0825bca7fe65beaee391d30da42e937db621564Steve Blockqsreal QScriptValue::toNumber() const
392d0825bca7fe65beaee391d30da42e937db621564Steve Block{
393d0825bca7fe65beaee391d30da42e937db621564Steve Block    return d_ptr->toNumber();
394d0825bca7fe65beaee391d30da42e937db621564Steve Block}
395d0825bca7fe65beaee391d30da42e937db621564Steve Block
396d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
397d0825bca7fe65beaee391d30da42e937db621564Steve Block  Returns the boolean value of this QScriptValue, using the conversion
398d0825bca7fe65beaee391d30da42e937db621564Steve Block  rules described in \l{ECMA-262} section 9.2, "ToBoolean".
399d0825bca7fe65beaee391d30da42e937db621564Steve Block
400d0825bca7fe65beaee391d30da42e937db621564Steve Block  Note that if this QScriptValue is an object, calling this function
401d0825bca7fe65beaee391d30da42e937db621564Steve Block  has side effects on the script engine, since the engine will call
402d0825bca7fe65beaee391d30da42e937db621564Steve Block  the object's valueOf() function (and possibly toString()) in an
403d0825bca7fe65beaee391d30da42e937db621564Steve Block  attempt to convert the object to a primitive value (possibly
404d0825bca7fe65beaee391d30da42e937db621564Steve Block  resulting in an uncaught script exception).
405d0825bca7fe65beaee391d30da42e937db621564Steve Block
406d0825bca7fe65beaee391d30da42e937db621564Steve Block  \sa isBool()
407d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
408d0825bca7fe65beaee391d30da42e937db621564Steve Blockbool QScriptValue::toBool() const
409d0825bca7fe65beaee391d30da42e937db621564Steve Block{
410d0825bca7fe65beaee391d30da42e937db621564Steve Block    return d_ptr->toBool();
411d0825bca7fe65beaee391d30da42e937db621564Steve Block}
412d0825bca7fe65beaee391d30da42e937db621564Steve Block
413d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
414d0825bca7fe65beaee391d30da42e937db621564Steve Block  \obsolete
415d0825bca7fe65beaee391d30da42e937db621564Steve Block
416d0825bca7fe65beaee391d30da42e937db621564Steve Block  Use toBool() instead.
417d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
418d0825bca7fe65beaee391d30da42e937db621564Steve Blockbool QScriptValue::toBoolean() const
419d0825bca7fe65beaee391d30da42e937db621564Steve Block{
420d0825bca7fe65beaee391d30da42e937db621564Steve Block    return d_ptr->toBool();
421d0825bca7fe65beaee391d30da42e937db621564Steve Block}
422d0825bca7fe65beaee391d30da42e937db621564Steve Block
423d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
424d0825bca7fe65beaee391d30da42e937db621564Steve Block  Returns the integer value of this QScriptValue, using the conversion
425d0825bca7fe65beaee391d30da42e937db621564Steve Block  rules described in \l{ECMA-262} section 9.4, "ToInteger".
426d0825bca7fe65beaee391d30da42e937db621564Steve Block
427d0825bca7fe65beaee391d30da42e937db621564Steve Block  Note that if this QScriptValue is an object, calling this function
428d0825bca7fe65beaee391d30da42e937db621564Steve Block  has side effects on the script engine, since the engine will call
429d0825bca7fe65beaee391d30da42e937db621564Steve Block  the object's valueOf() function (and possibly toString()) in an
430d0825bca7fe65beaee391d30da42e937db621564Steve Block  attempt to convert the object to a primitive value (possibly
431d0825bca7fe65beaee391d30da42e937db621564Steve Block  resulting in an uncaught script exception).
432d0825bca7fe65beaee391d30da42e937db621564Steve Block
433d0825bca7fe65beaee391d30da42e937db621564Steve Block  \sa toNumber()
434d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
435d0825bca7fe65beaee391d30da42e937db621564Steve Blockqsreal QScriptValue::toInteger() const
436d0825bca7fe65beaee391d30da42e937db621564Steve Block{
437d0825bca7fe65beaee391d30da42e937db621564Steve Block    return d_ptr->toInteger();
438d0825bca7fe65beaee391d30da42e937db621564Steve Block}
439d0825bca7fe65beaee391d30da42e937db621564Steve Block
440d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
441d0825bca7fe65beaee391d30da42e937db621564Steve Block  Returns the signed 32-bit integer value of this QScriptValue, using
442d0825bca7fe65beaee391d30da42e937db621564Steve Block  the conversion rules described in \l{ECMA-262} section 9.5, "ToInt32".
443d0825bca7fe65beaee391d30da42e937db621564Steve Block
444d0825bca7fe65beaee391d30da42e937db621564Steve Block  Note that if this QScriptValue is an object, calling this function
445d0825bca7fe65beaee391d30da42e937db621564Steve Block  has side effects on the script engine, since the engine will call
446d0825bca7fe65beaee391d30da42e937db621564Steve Block  the object's valueOf() function (and possibly toString()) in an
447d0825bca7fe65beaee391d30da42e937db621564Steve Block  attempt to convert the object to a primitive value (possibly
448d0825bca7fe65beaee391d30da42e937db621564Steve Block  resulting in an uncaught script exception).
449d0825bca7fe65beaee391d30da42e937db621564Steve Block
450d0825bca7fe65beaee391d30da42e937db621564Steve Block  \sa toNumber(), toUInt32()
451d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
452d0825bca7fe65beaee391d30da42e937db621564Steve Blockqint32 QScriptValue::toInt32() const
453d0825bca7fe65beaee391d30da42e937db621564Steve Block{
454d0825bca7fe65beaee391d30da42e937db621564Steve Block    return d_ptr->toInt32();
455d0825bca7fe65beaee391d30da42e937db621564Steve Block}
456d0825bca7fe65beaee391d30da42e937db621564Steve Block
457d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
458d0825bca7fe65beaee391d30da42e937db621564Steve Block  Returns the unsigned 32-bit integer value of this QScriptValue, using
459d0825bca7fe65beaee391d30da42e937db621564Steve Block  the conversion rules described in \l{ECMA-262} section 9.6, "ToUint32".
460d0825bca7fe65beaee391d30da42e937db621564Steve Block
461d0825bca7fe65beaee391d30da42e937db621564Steve Block  Note that if this QScriptValue is an object, calling this function
462d0825bca7fe65beaee391d30da42e937db621564Steve Block  has side effects on the script engine, since the engine will call
463d0825bca7fe65beaee391d30da42e937db621564Steve Block  the object's valueOf() function (and possibly toString()) in an
464d0825bca7fe65beaee391d30da42e937db621564Steve Block  attempt to convert the object to a primitive value (possibly
465d0825bca7fe65beaee391d30da42e937db621564Steve Block  resulting in an uncaught script exception).
466d0825bca7fe65beaee391d30da42e937db621564Steve Block
467d0825bca7fe65beaee391d30da42e937db621564Steve Block  \sa toNumber(), toInt32()
468d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
469d0825bca7fe65beaee391d30da42e937db621564Steve Blockquint32 QScriptValue::toUInt32() const
470d0825bca7fe65beaee391d30da42e937db621564Steve Block{
471d0825bca7fe65beaee391d30da42e937db621564Steve Block    return d_ptr->toUInt32();
472d0825bca7fe65beaee391d30da42e937db621564Steve Block}
473d0825bca7fe65beaee391d30da42e937db621564Steve Block
474d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
475d0825bca7fe65beaee391d30da42e937db621564Steve Block  Returns the unsigned 16-bit integer value of this QScriptValue, using
476d0825bca7fe65beaee391d30da42e937db621564Steve Block  the conversion rules described in \l{ECMA-262} section 9.7, "ToUint16".
477d0825bca7fe65beaee391d30da42e937db621564Steve Block
478d0825bca7fe65beaee391d30da42e937db621564Steve Block  Note that if this QScriptValue is an object, calling this function
479d0825bca7fe65beaee391d30da42e937db621564Steve Block  has side effects on the script engine, since the engine will call
480d0825bca7fe65beaee391d30da42e937db621564Steve Block  the object's valueOf() function (and possibly toString()) in an
481d0825bca7fe65beaee391d30da42e937db621564Steve Block  attempt to convert the object to a primitive value (possibly
482d0825bca7fe65beaee391d30da42e937db621564Steve Block  resulting in an uncaught script exception).
483d0825bca7fe65beaee391d30da42e937db621564Steve Block
484d0825bca7fe65beaee391d30da42e937db621564Steve Block  \sa toNumber()
485d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
486d0825bca7fe65beaee391d30da42e937db621564Steve Blockquint16 QScriptValue::toUInt16() const
487d0825bca7fe65beaee391d30da42e937db621564Steve Block{
488d0825bca7fe65beaee391d30da42e937db621564Steve Block    return d_ptr->toUInt16();
489d0825bca7fe65beaee391d30da42e937db621564Steve Block}
490d0825bca7fe65beaee391d30da42e937db621564Steve Block
491d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
4926c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen  \obsolete
4936c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
4946c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen  This function is obsolete; use QScriptEngine::toObject() instead.
4956c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen*/
4966c2af9490927c3c5959b5cb07461b646f8b32f6cKristian MonsenQScriptValue QScriptValue::toObject() const
4976c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{
4986c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen    return QScriptValuePrivate::get(d_ptr->toObject());
4996c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen}
5006c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen
5016c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen/*!
502bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    Returns a QDateTime representation of this value, in local time.
503bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    If this QScriptValue is not a date, or the value of the date is
504bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    NaN (Not-a-Number), an invalid QDateTime is returned.
505bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
506bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    \sa isDate()
507bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen*/
508bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian MonsenQDateTime QScriptValue::toDateTime() const
509bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen{
510bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen    return d_ptr->toDateTime();
511bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen}
512bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
513bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen/*!
514d0825bca7fe65beaee391d30da42e937db621564Steve Block  Calls this QScriptValue as a function, using \a thisObject as
515d0825bca7fe65beaee391d30da42e937db621564Steve Block  the `this' object in the function call, and passing \a args
516d0825bca7fe65beaee391d30da42e937db621564Steve Block  as arguments to the function. Returns the value returned from
517d0825bca7fe65beaee391d30da42e937db621564Steve Block  the function.
518d0825bca7fe65beaee391d30da42e937db621564Steve Block
519d0825bca7fe65beaee391d30da42e937db621564Steve Block  If this QScriptValue is not a function, call() does nothing
520d0825bca7fe65beaee391d30da42e937db621564Steve Block  and returns an invalid QScriptValue.
521d0825bca7fe65beaee391d30da42e937db621564Steve Block
522d0825bca7fe65beaee391d30da42e937db621564Steve Block  Note that if \a thisObject is not an object, the global object
523d0825bca7fe65beaee391d30da42e937db621564Steve Block  (see \l{QScriptEngine::globalObject()}) will be used as the
524d0825bca7fe65beaee391d30da42e937db621564Steve Block  `this' object.
525d0825bca7fe65beaee391d30da42e937db621564Steve Block
526d0825bca7fe65beaee391d30da42e937db621564Steve Block  Calling call() can cause an exception to occur in the script engine;
527d0825bca7fe65beaee391d30da42e937db621564Steve Block  in that case, call() returns the value that was thrown (typically an
528d0825bca7fe65beaee391d30da42e937db621564Steve Block  \c{Error} object). You can call
529d0825bca7fe65beaee391d30da42e937db621564Steve Block  QScriptEngine::hasUncaughtException() to determine if an exception
530d0825bca7fe65beaee391d30da42e937db621564Steve Block  occurred.
531d0825bca7fe65beaee391d30da42e937db621564Steve Block
532d0825bca7fe65beaee391d30da42e937db621564Steve Block  \snippet doc/src/snippets/code/src_script_qscriptvalue.cpp 2
533d0825bca7fe65beaee391d30da42e937db621564Steve Block
534d0825bca7fe65beaee391d30da42e937db621564Steve Block  \sa construct()
535d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
536d0825bca7fe65beaee391d30da42e937db621564Steve BlockQScriptValue QScriptValue::call(const QScriptValue& thisObject, const QScriptValueList& args)
537d0825bca7fe65beaee391d30da42e937db621564Steve Block{
538d0825bca7fe65beaee391d30da42e937db621564Steve Block    return d_ptr->call(thisObject.d_ptr.data(), args);
539d0825bca7fe65beaee391d30da42e937db621564Steve Block}
540d0825bca7fe65beaee391d30da42e937db621564Steve Block
541d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
542d0825bca7fe65beaee391d30da42e937db621564Steve Block  Returns the QScriptEngine that created this QScriptValue,
543d0825bca7fe65beaee391d30da42e937db621564Steve Block  or 0 if this QScriptValue is invalid or the value is not
544d0825bca7fe65beaee391d30da42e937db621564Steve Block  associated with a particular engine.
545d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
546d0825bca7fe65beaee391d30da42e937db621564Steve BlockQScriptEngine* QScriptValue::engine() const
547d0825bca7fe65beaee391d30da42e937db621564Steve Block{
548d0825bca7fe65beaee391d30da42e937db621564Steve Block    QScriptEnginePrivate* engine = d_ptr->engine();
549d0825bca7fe65beaee391d30da42e937db621564Steve Block    if (engine)
550d0825bca7fe65beaee391d30da42e937db621564Steve Block        return QScriptEnginePrivate::get(engine);
551d0825bca7fe65beaee391d30da42e937db621564Steve Block    return 0;
552d0825bca7fe65beaee391d30da42e937db621564Steve Block}
553d0825bca7fe65beaee391d30da42e937db621564Steve Block
554d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
55506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen  If this QScriptValue is an object, returns the internal prototype
55606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen  (\c{__proto__} property) of this object; otherwise returns an
55706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen  invalid QScriptValue.
55806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
55906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen  \sa setPrototype(), isObject()
56006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen*/
56106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian MonsenQScriptValue QScriptValue::prototype() const
56206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
56306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    return QScriptValuePrivate::get(d_ptr->prototype());
56406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
56506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
56606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen/*!
56706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen  If this QScriptValue is an object, sets the internal prototype
56806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen  (\c{__proto__} property) of this object to be \a prototype;
56906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen  otherwise does nothing.
57006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
57106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen  The internal prototype should not be confused with the public
57206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen  property with name "prototype"; the public prototype is usually
57306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen  only set on functions that act as constructors.
57406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
57506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen  \sa prototype(), isObject()
57606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen*/
57706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenvoid QScriptValue::setPrototype(const QScriptValue& prototype)
57806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen{
57906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    d_ptr->setPrototype(QScriptValuePrivate::get(prototype));
58006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen}
58106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
58206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen/*!
583d0825bca7fe65beaee391d30da42e937db621564Steve Block  Assigns the \a other value to this QScriptValue.
584d0825bca7fe65beaee391d30da42e937db621564Steve Block
585d0825bca7fe65beaee391d30da42e937db621564Steve Block  Note that if \a other is an object (isObject() returns true),
586d0825bca7fe65beaee391d30da42e937db621564Steve Block  only a reference to the underlying object will be assigned;
587d0825bca7fe65beaee391d30da42e937db621564Steve Block  the object itself will not be copied.
588d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
589d0825bca7fe65beaee391d30da42e937db621564Steve BlockQScriptValue& QScriptValue::operator=(const QScriptValue& other)
590d0825bca7fe65beaee391d30da42e937db621564Steve Block{
591d0825bca7fe65beaee391d30da42e937db621564Steve Block    d_ptr = other.d_ptr;
592d0825bca7fe65beaee391d30da42e937db621564Steve Block    return *this;
593d0825bca7fe65beaee391d30da42e937db621564Steve Block}
594d0825bca7fe65beaee391d30da42e937db621564Steve Block
595d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
596d0825bca7fe65beaee391d30da42e937db621564Steve Block  Returns true if this QScriptValue is equal to \a other, otherwise
597d0825bca7fe65beaee391d30da42e937db621564Steve Block  returns false. The comparison follows the behavior described in
598d0825bca7fe65beaee391d30da42e937db621564Steve Block  \l{ECMA-262} section 11.9.3, "The Abstract Equality Comparison
599d0825bca7fe65beaee391d30da42e937db621564Steve Block  Algorithm".
600d0825bca7fe65beaee391d30da42e937db621564Steve Block
601d0825bca7fe65beaee391d30da42e937db621564Steve Block  This function can return true even if the type of this QScriptValue
602d0825bca7fe65beaee391d30da42e937db621564Steve Block  is different from the type of the \a other value; i.e. the
603d0825bca7fe65beaee391d30da42e937db621564Steve Block  comparison is not strict.  For example, comparing the number 9 to
604d0825bca7fe65beaee391d30da42e937db621564Steve Block  the string "9" returns true; comparing an undefined value to a null
605d0825bca7fe65beaee391d30da42e937db621564Steve Block  value returns true; comparing a \c{Number} object whose primitive
606d0825bca7fe65beaee391d30da42e937db621564Steve Block  value is 6 to a \c{String} object whose primitive value is "6"
607d0825bca7fe65beaee391d30da42e937db621564Steve Block  returns true; and comparing the number 1 to the boolean value
608d0825bca7fe65beaee391d30da42e937db621564Steve Block  \c{true} returns true. If you want to perform a comparison
609d0825bca7fe65beaee391d30da42e937db621564Steve Block  without such implicit value conversion, use strictlyEquals().
610d0825bca7fe65beaee391d30da42e937db621564Steve Block
611d0825bca7fe65beaee391d30da42e937db621564Steve Block  Note that if this QScriptValue or the \a other value are objects,
612d0825bca7fe65beaee391d30da42e937db621564Steve Block  calling this function has side effects on the script engine, since
613d0825bca7fe65beaee391d30da42e937db621564Steve Block  the engine will call the object's valueOf() function (and possibly
614d0825bca7fe65beaee391d30da42e937db621564Steve Block  toString()) in an attempt to convert the object to a primitive value
615d0825bca7fe65beaee391d30da42e937db621564Steve Block  (possibly resulting in an uncaught script exception).
616d0825bca7fe65beaee391d30da42e937db621564Steve Block
617d0825bca7fe65beaee391d30da42e937db621564Steve Block  \sa strictlyEquals(), lessThan()
618d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
619d0825bca7fe65beaee391d30da42e937db621564Steve Blockbool QScriptValue::equals(const QScriptValue& other) const
620d0825bca7fe65beaee391d30da42e937db621564Steve Block{
621545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return d_ptr->equals(QScriptValuePrivate::get(other));
622d0825bca7fe65beaee391d30da42e937db621564Steve Block}
623d0825bca7fe65beaee391d30da42e937db621564Steve Block
624d0825bca7fe65beaee391d30da42e937db621564Steve Block/*!
625d0825bca7fe65beaee391d30da42e937db621564Steve Block  Returns true if this QScriptValue is equal to \a other using strict
626d0825bca7fe65beaee391d30da42e937db621564Steve Block  comparison (no conversion), otherwise returns false. The comparison
627d0825bca7fe65beaee391d30da42e937db621564Steve Block  follows the behavior described in \l{ECMA-262} section 11.9.6, "The
628d0825bca7fe65beaee391d30da42e937db621564Steve Block  Strict Equality Comparison Algorithm".
629d0825bca7fe65beaee391d30da42e937db621564Steve Block
630d0825bca7fe65beaee391d30da42e937db621564Steve Block  If the type of this QScriptValue is different from the type of the
631d0825bca7fe65beaee391d30da42e937db621564Steve Block  \a other value, this function returns false. If the types are equal,
632d0825bca7fe65beaee391d30da42e937db621564Steve Block  the result depends on the type, as shown in the following table:
633d0825bca7fe65beaee391d30da42e937db621564Steve Block
634d0825bca7fe65beaee391d30da42e937db621564Steve Block    \table
635d0825bca7fe65beaee391d30da42e937db621564Steve Block    \header \o Type \o Result
636d0825bca7fe65beaee391d30da42e937db621564Steve Block    \row    \o Undefined  \o true
637d0825bca7fe65beaee391d30da42e937db621564Steve Block    \row    \o Null       \o true
638d0825bca7fe65beaee391d30da42e937db621564Steve Block    \row    \o Boolean    \o true if both values are true, false otherwise
639d0825bca7fe65beaee391d30da42e937db621564Steve Block    \row    \o Number     \o false if either value is NaN (Not-a-Number); true if values are equal, false otherwise
640d0825bca7fe65beaee391d30da42e937db621564Steve Block    \row    \o String     \o true if both values are exactly the same sequence of characters, false otherwise
641d0825bca7fe65beaee391d30da42e937db621564Steve Block    \row    \o Object     \o true if both values refer to the same object, false otherwise
642d0825bca7fe65beaee391d30da42e937db621564Steve Block    \endtable
643d0825bca7fe65beaee391d30da42e937db621564Steve Block
644d0825bca7fe65beaee391d30da42e937db621564Steve Block  \sa equals()
645d0825bca7fe65beaee391d30da42e937db621564Steve Block*/
646d0825bca7fe65beaee391d30da42e937db621564Steve Blockbool QScriptValue::strictlyEquals(const QScriptValue& other) const
647d0825bca7fe65beaee391d30da42e937db621564Steve Block{
648545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return d_ptr->strictlyEquals(QScriptValuePrivate::get(other));
649545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch}
650545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
651545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch/*!
652545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    Returns true if this QScriptValue is an instance of
653545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    \a other; otherwise returns false.
654545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch
655545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    This QScriptValue is considered to be an instance of \a other if
656545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    \a other is a function and the value of the \c{prototype}
657545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    property of \a other is in the prototype chain of this
658545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    QScriptValue.
659545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch*/
660545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdochbool QScriptValue::instanceOf(const QScriptValue& other) const
661545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{
662545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch    return d_ptr->instanceOf(QScriptValuePrivate::get(other));
663d0825bca7fe65beaee391d30da42e937db621564Steve Block}
664ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
665ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block/*!
666ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block  Returns the value of this QScriptValue's property with the given \a name,
667ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block  using the given \a mode to resolve the property.
668ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
669ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block  If no such property exists, an invalid QScriptValue is returned.
670ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
671ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block  If the property is implemented using a getter function (i.e. has the
672ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block  PropertyGetter flag set), calling property() has side-effects on the
673ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block  script engine, since the getter function will be called (possibly
674ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block  resulting in an uncaught script exception). If an exception
675ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block  occurred, property() returns the value that was thrown (typically
676ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block  an \c{Error} object).
677ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
678ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block  \sa setProperty(), propertyFlags(), QScriptValueIterator
679ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block*/
680ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve BlockQScriptValue QScriptValue::property(const QString& name, const ResolveFlags& mode) const
681ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block{
682ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    return QScriptValuePrivate::get(d_ptr->property(name, mode));
683ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block}
684ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
685ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block/*!
686ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block  \overload
687ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
688e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  Returns the value of this QScriptValue's property with the given \a name,
689e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  using the given \a mode to resolve the property.
690e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
691e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  This overload of property() is useful when you need to look up the
692e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  same property repeatedly, since the lookup can be performed faster
693e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  when the name is represented as an interned string.
694e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
695e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  \sa QScriptEngine::toStringHandle(), setProperty()
696e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke*/
697e458d70a0d18538346f41b503114c9ebe6b2ce12Leon ClarkeQScriptValue QScriptValue::property(const QScriptString& name, const ResolveFlags& mode) const
698e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{
699e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    return QScriptValuePrivate::get(d_ptr->property(QScriptStringPrivate::get(name).constData(), mode));
700e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke}
701e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
702e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke/*!
703e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  \overload
704e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
705ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block  Returns the property at the given \a arrayIndex, using the given \a
706ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block  mode to resolve the property.
707ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
708ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block  This function is provided for convenience and performance when
709ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block  working with array objects.
710ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block
711ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block  If this QScriptValue is not an Array object, this function behaves
712ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block  as if property() was called with the string representation of \a
713ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block  arrayIndex.
714ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block*/
715ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve BlockQScriptValue QScriptValue::property(quint32 arrayIndex, const ResolveFlags& mode) const
716ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block{
717ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block    return QScriptValuePrivate::get(d_ptr->property(arrayIndex, mode));
718ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block}
719e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
720e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke/*!
721e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  Sets the value of this QScriptValue's property with the given \a name to
722e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  the given \a value.
723e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
724e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  If this QScriptValue is not an object, this function does nothing.
725e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
726e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  If this QScriptValue does not already have a property with name \a name,
727e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  a new property is created; the given \a flags then specify how this
728e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  property may be accessed by script code.
729e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
730e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  If \a value is invalid, the property is removed.
731e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
732e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  If the property is implemented using a setter function (i.e. has the
733e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  PropertySetter flag set), calling setProperty() has side-effects on
734e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  the script engine, since the setter function will be called with the
735e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  given \a value as argument (possibly resulting in an uncaught script
736e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  exception).
737e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
738e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  Note that you cannot specify custom getter or setter functions for
739e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  built-in properties, such as the \c{length} property of Array objects
740e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  or meta properties of QObject objects.
741e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
742e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  \sa property()
743e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke*/
744e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkevoid QScriptValue::setProperty(const QString& name, const QScriptValue& value, const PropertyFlags& flags)
745e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{
746e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    d_ptr->setProperty(name, QScriptValuePrivate::get(value), flags);
747e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke}
748e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
749e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke/*!
750e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  \overload
751e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
752e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  Sets the property at the given \a arrayIndex to the given \a value.
753e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
754e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  This function is provided for convenience and performance when
755e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  working with array objects.
756e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
757e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  If this QScriptValue is not an Array object, this function behaves
758e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  as if setProperty() was called with the string representation of \a
759e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  arrayIndex.
760e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke*/
761e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkevoid QScriptValue::setProperty(quint32 arrayIndex, const QScriptValue& value, const PropertyFlags& flags)
762e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{
763e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    d_ptr->setProperty(arrayIndex, QScriptValuePrivate::get(value), flags);
764e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke}
765e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
766e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke/*!
767e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  Sets the value of this QScriptValue's property with the given \a
768e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  name to the given \a value. The given \a flags specify how this
769e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  property may be accessed by script code.
770e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
771e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  This overload of setProperty() is useful when you need to set the
772e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  same property repeatedly, since the operation can be performed
773e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  faster when the name is represented as an interned string.
774e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
775e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  \sa QScriptEngine::toStringHandle()
776e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke*/
777e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkevoid QScriptValue::setProperty(const QScriptString& name, const QScriptValue& value, const PropertyFlags& flags)
778e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{
779e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    d_ptr->setProperty(QScriptStringPrivate::get(name).constData(), QScriptValuePrivate::get(value), flags);
780e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke}
781e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
782e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke/*!
783e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  Returns the flags of the property with the given \a name, using the
784e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  given \a mode to resolve the property.
785e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
786e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  \sa property()
787e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke*/
788e458d70a0d18538346f41b503114c9ebe6b2ce12Leon ClarkeQScriptValue::PropertyFlags QScriptValue::propertyFlags(const QString& name, const ResolveFlags& mode) const
789e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{
790e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    return d_ptr->propertyFlags(name, mode);
791e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke}
792e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
793e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke/*!
794e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  Returns the flags of the property with the given \a name, using the
795e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  given \a mode to resolve the property.
796e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke
797e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke  \sa property()
798e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke*/
799e458d70a0d18538346f41b503114c9ebe6b2ce12Leon ClarkeQScriptValue::PropertyFlags QScriptValue::propertyFlags(const QScriptString& name, const ResolveFlags& mode) const
800e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{
801e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke    return d_ptr->propertyFlags(QScriptStringPrivate::get(name).constData(), mode);
802e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke}
803