diff options
author | Jason Barron <jbarron@trolltech.com> | 2009-08-21 07:23:33 (GMT) |
---|---|---|
committer | Jason Barron <jbarron@trolltech.com> | 2009-08-21 07:23:33 (GMT) |
commit | 45357546c29240b95300f392084a2fe901073d85 (patch) | |
tree | aca89043c1bd80a3a7515402ee0fbb55b9cbf6ee /src/script/api/qscriptclasspropertyiterator.cpp | |
parent | 2e645960930442e895f887f1ef5e226d14eabcc7 (diff) | |
parent | f11fc8f62558543dac1eca9d52a4801196c55221 (diff) | |
download | Qt-45357546c29240b95300f392084a2fe901073d85.zip Qt-45357546c29240b95300f392084a2fe901073d85.tar.gz Qt-45357546c29240b95300f392084a2fe901073d85.tar.bz2 |
Merge commit 'qt/master'
Conflicts:
configure.exe
examples/examples.pro
qmake/Makefile.unix
qmake/Makefile.win32
qmake/Makefile.win32-g++
qmake/Makefile.win32-g++-sh
qmake/qmake.pro
src/script/api/qscriptable.h
src/script/api/qscriptclasspropertyiterator.h
src/script/api/qscriptcontext.h
src/script/api/qscriptengineagent.cpp
src/script/api/qscriptstring.cpp
src/script/api/qscriptstring.h
src/script/api/qscriptvalueiterator.cpp
src/script/api/qscriptvalueiterator.h
src/script/qscriptclass.cpp
src/script/qscriptcontext.cpp
src/script/qscriptengine.cpp
src/script/qscriptengine_p.cpp
src/script/qscriptvalue.cpp
src/script/qscriptvalue_p.h
src/script/qscriptvalueimplfwd_p.h
src/script/script.pro
src/src.pro
tests/auto/auto.pro
tests/auto/qscriptv8testsuite/tst_qscriptv8testsuite.cpp
tools/configure/configureapp.cpp
Diffstat (limited to 'src/script/api/qscriptclasspropertyiterator.cpp')
-rw-r--r-- | src/script/api/qscriptclasspropertyiterator.cpp | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/src/script/api/qscriptclasspropertyiterator.cpp b/src/script/api/qscriptclasspropertyiterator.cpp new file mode 100644 index 0000000..a9c537e --- /dev/null +++ b/src/script/api/qscriptclasspropertyiterator.cpp @@ -0,0 +1,222 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtScript module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain +** additional rights. These rights are described in the Nokia Qt LGPL +** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qscriptclasspropertyiterator.h" + +#include "qscriptstring.h" + +QT_BEGIN_NAMESPACE + +/*! + \since 4.4 + \class QScriptClassPropertyIterator + + \brief The QScriptClassPropertyIterator class provides an iterator interface for custom Qt Script objects. + + \ingroup script + + This class is only relevant if you have subclassed QScriptClass and + want to provide enumeration of your custom properties (e.g. when + objects of your class are used with QScriptValueIterator, or with + the for-in statement in scripts). + + The object() function returns the Qt Script object the iterator is + traversing. + + toFront(), hasNext() and next() provide forward iteration. + + toBack(), hasPrevious() and previous() provide backward iteration. + + name(), id() and flags() return information about the last property + that was jumped over using next() or previous(). + + \sa QScriptClass::newIterator(), QScriptValueIterator +*/ + +class QScriptClassPropertyIteratorPrivate +{ + Q_DECLARE_PUBLIC(QScriptClassPropertyIterator) +public: + QScriptClassPropertyIteratorPrivate() {} + virtual ~QScriptClassPropertyIteratorPrivate() {} + + QScriptValue object; + + QScriptClassPropertyIterator *q_ptr; +}; + +/*! + Constructs an iterator for traversing \a object. + + Subclasses should ensure that the iterator is set to the front of the + sequence of properties (before the first property). +*/ +QScriptClassPropertyIterator::QScriptClassPropertyIterator(const QScriptValue &object) + : d_ptr(new QScriptClassPropertyIteratorPrivate) +{ + d_ptr->q_ptr = this; + d_ptr->object = object; +} + +/*! + \internal +*/ +QScriptClassPropertyIterator::QScriptClassPropertyIterator(const QScriptValue &object, + QScriptClassPropertyIteratorPrivate &dd) + : d_ptr(&dd) +{ + d_ptr->q_ptr = this; + d_ptr->object = object; +} + +/*! + Destroys the iterator. +*/ +QScriptClassPropertyIterator::~QScriptClassPropertyIterator() +{ +} + +/*! + Returns the Qt Script object this iterator is traversing. +*/ +QScriptValue QScriptClassPropertyIterator::object() const +{ + Q_D(const QScriptClassPropertyIterator); + return d->object; +} + +/*! + \fn bool QScriptClassPropertyIterator::hasNext() const + + Returns true if there is at least one item ahead of the iterator + (i.e. the iterator is \e not at the back of the property sequence); + otherwise returns false. + + \sa next(), hasPrevious() +*/ + +/*! + \fn void QScriptClassPropertyIterator::next() + + Advances the iterator by one position. + + Calling this function on an iterator located at the back of the + container leads to undefined results. + + \sa hasNext(), previous(), name() +*/ + +/*! + \fn bool QScriptClassPropertyIterator::hasPrevious() const + + Returns true if there is at least one item behind the iterator + (i.e. the iterator is \e not at the front of the property sequence); + otherwise returns false. + + \sa previous(), hasNext() +*/ + +/*! + \fn void QScriptClassPropertyIterator::previous() + + Moves the iterator back by one position. + + Calling this function on an iterator located at the front of the + container leads to undefined results. + + \sa hasPrevious(), next(), name() +*/ + +/*! + \fn void QScriptClassPropertyIterator::toFront() + + Moves the iterator to the front of the QScriptValue (before the + first property). + + \sa toBack(), next() +*/ + +/*! + \fn void QScriptClassPropertyIterator::toBack() + + Moves the iterator to the back of the QScriptValue (after the + last property). + + \sa toFront(), previous() +*/ + +/*! + \fn QScriptString QScriptClassPropertyIterator::name() const + + Returns the name of the last property that was jumped over using + next() or previous(). + + \sa id() +*/ + +/*! + \fn uint QScriptClassPropertyIterator::id() const + + Returns the id of the last property that was jumped over using + next() or previous(). + + The default implementation returns 0. + + \sa name() +*/ +uint QScriptClassPropertyIterator::id() const +{ + return 0; +} + +/*! + Returns the flags of the last property that was jumped over using + next() or previous(). + + The default implementation calls the propertyFlags() function of + object() with argument name(). +*/ +QScriptValue::PropertyFlags QScriptClassPropertyIterator::flags() const +{ + return object().propertyFlags(name()); +} + +QT_END_NAMESPACE |