source: trunk/src/script/qscriptclasspropertyiterator.cpp@ 447

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

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

File size: 6.1 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#include "qscriptclasspropertyiterator.h"
43
44#ifndef QT_NO_SCRIPT
45
46#include "qscriptclasspropertyiterator_p.h"
47#include "qscriptstring.h"
48
49QT_BEGIN_NAMESPACE
50
51/*!
52 \since 4.4
53 \class QScriptClassPropertyIterator
54
55 \brief The QScriptClassPropertyIterator class provides an iterator interface for custom Qt Script objects.
56
57 \ingroup script
58
59 This class is only relevant if you have subclassed QScriptClass and
60 want to provide enumeration of your custom properties (e.g. when
61 objects of your class are used with QScriptValueIterator, or with
62 the for-in statement in scripts).
63
64 The object() function returns the Qt Script object the iterator is
65 traversing.
66
67 toFront(), hasNext() and next() provide forward iteration.
68
69 toBack(), hasPrevious() and previous() provide backward iteration.
70
71 name(), id() and flags() return information about the last property
72 that was jumped over using next() or previous().
73
74 \sa QScriptClass::newIterator(), QScriptValueIterator
75*/
76
77QScriptClassPropertyIteratorPrivate::QScriptClassPropertyIteratorPrivate(QScriptClassPropertyIterator *q)
78 : q_ptr(q)
79{
80}
81
82QScriptClassPropertyIteratorPrivate::~QScriptClassPropertyIteratorPrivate()
83{
84}
85
86/*!
87 Constructs an iterator for traversing \a object.
88
89 Subclasses should ensure that the iterator is set to the front of the
90 sequence of properties (before the first property).
91*/
92QScriptClassPropertyIterator::QScriptClassPropertyIterator(const QScriptValue &object)
93 : d_ptr(new QScriptClassPropertyIteratorPrivate(this))
94{
95 d_ptr->object = object;
96}
97
98/*!
99 \internal
100*/
101QScriptClassPropertyIterator::QScriptClassPropertyIterator(const QScriptValue &object,
102 QScriptClassPropertyIteratorPrivate &dd)
103 : d_ptr(&dd)
104{
105 d_ptr->q_ptr = this;
106 d_ptr->object = object;
107}
108
109/*!
110 Destroys the iterator.
111*/
112QScriptClassPropertyIterator::~QScriptClassPropertyIterator()
113{
114 delete d_ptr;
115 d_ptr = 0;
116}
117
118/*!
119 Returns the Qt Script object this iterator is traversing.
120*/
121QScriptValue QScriptClassPropertyIterator::object() const
122{
123 Q_D(const QScriptClassPropertyIterator);
124 return d->object;
125}
126
127/*!
128 \fn bool QScriptClassPropertyIterator::hasNext() const
129
130 Returns true if there is at least one item ahead of the iterator
131 (i.e. the iterator is \e not at the back of the property sequence);
132 otherwise returns false.
133
134 \sa next(), hasPrevious()
135*/
136
137/*!
138 \fn void QScriptClassPropertyIterator::next()
139
140 Advances the iterator by one position.
141
142 Calling this function on an iterator located at the back of the
143 container leads to undefined results.
144
145 \sa hasNext(), previous(), name()
146*/
147
148/*!
149 \fn bool QScriptClassPropertyIterator::hasPrevious() const
150
151 Returns true if there is at least one item behind the iterator
152 (i.e. the iterator is \e not at the front of the property sequence);
153 otherwise returns false.
154
155 \sa previous(), hasNext()
156*/
157
158/*!
159 \fn void QScriptClassPropertyIterator::previous()
160
161 Moves the iterator back by one position.
162
163 Calling this function on an iterator located at the front of the
164 container leads to undefined results.
165
166 \sa hasPrevious(), next(), name()
167*/
168
169/*!
170 \fn void QScriptClassPropertyIterator::toFront()
171
172 Moves the iterator to the front of the QScriptValue (before the
173 first property).
174
175 \sa toBack(), next()
176*/
177
178/*!
179 \fn void QScriptClassPropertyIterator::toBack()
180
181 Moves the iterator to the back of the QScriptValue (after the
182 last property).
183
184 \sa toFront(), previous()
185*/
186
187/*!
188 \fn QScriptString QScriptClassPropertyIterator::name() const
189
190 Returns the name of the last property that was jumped over using
191 next() or previous().
192
193 \sa id()
194*/
195
196/*!
197 \fn uint QScriptClassPropertyIterator::id() const
198
199 Returns the id of the last property that was jumped over using
200 next() or previous().
201
202 The default implementation returns 0.
203
204 \sa name()
205*/
206uint QScriptClassPropertyIterator::id() const
207{
208 return 0;
209}
210
211/*!
212 Returns the flags of the last property that was jumped over using
213 next() or previous().
214
215 The default implementation calls the propertyFlags() function of
216 object() with argument name().
217*/
218QScriptValue::PropertyFlags QScriptClassPropertyIterator::flags() const
219{
220 return object().propertyFlags(name());
221}
222
223QT_END_NAMESPACE
224
225#endif // QT_NO_SCRIPT
Note: See TracBrowser for help on using the repository browser.