/****************************************************************************+ −
**+ −
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).+ −
** All rights reserved.+ −
** Contact: Nokia Corporation (qt-info@nokia.com)+ −
**+ −
** This file is part of the documentation 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 Technology Preview License Agreement accompanying+ −
** this package.+ −
**+ −
** 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.1, included in the file LGPL_EXCEPTION.txt in this package.+ −
**+ −
** If you have questions regarding the use of this file, please contact+ −
** Nokia at qt-info@nokia.com.+ −
**+ −
**+ −
**+ −
**+ −
**+ −
**+ −
**+ −
**+ −
** $QT_END_LICENSE$+ −
**+ −
****************************************************************************/+ −
+ −
/*!+ −
\class Q3ValueStack+ −
\brief The Q3ValueStack class is a value-based template class that provides a stack.+ −
\compat+ −
+ −
Define a template instance Q3ValueStack\<X\> to create a stack of+ −
values that all have the class X.+ −
+ −
Note that Q3ValueStack does not store pointers to the members of+ −
the stack; it holds a copy of every member. That is why these+ −
kinds of classes are called "value based"; Q3PtrStack, Q3PtrList,+ −
Q3Dict, etc., are "pointer based".+ −
+ −
A stack is a last in, first out (LIFO) structure. Items are added+ −
to the top of the stack with push() and retrieved from the top+ −
with pop(). The top() function provides access to the topmost item+ −
without removing it.+ −
+ −
Example:+ −
\snippet doc/src/snippets/code/doc_src_q3valuestack.qdoc 0+ −
+ −
Q3ValueStack is a specialized Q3ValueList provided for convenience.+ −
All of Q3ValueList's functionality also applies to Q3PtrStack, for+ −
example the facility to iterate over all elements using+ −
Q3ValueStack<T>::Iterator. See Q3ValueListIterator for further+ −
details.+ −
+ −
Some classes cannot be used within a Q3ValueStack, for example+ −
everything derived from QObject and thus all classes that+ −
implement widgets. Only values can be used in a Q3ValueStack. To+ −
qualify as a value, the class must provide+ −
\list+ −
\i a copy constructor;+ −
\i an assignment operator;+ −
\i a default constructor, i.e. a constructor that does not take any arguments.+ −
\endlist+ −
+ −
Note that C++ defaults to field-by-field assignment operators and+ −
copy constructors if no explicit version is supplied. In many+ −
cases this is sufficient.+ −
*/+ −
+ −
+ −
/*!+ −
\fn Q3ValueStack::Q3ValueStack()+ −
+ −
Constructs an empty stack.+ −
*/+ −
+ −
/*!+ −
\fn Q3ValueStack::~Q3ValueStack()+ −
+ −
Destroys the stack. References to the values in the stack and all+ −
iterators of this stack become invalidated. Because Q3ValueStack is+ −
highly tuned for performance, you won't see warnings if you use+ −
invalid iterators because it is impossible for an iterator to+ −
check whether or not it is valid.+ −
*/+ −
+ −
+ −
/*!+ −
\fn void Q3ValueStack::push( const T& d )+ −
+ −
Adds element, \a d, to the top of the stack. Last in, first out.+ −
+ −
This function is equivalent to append().+ −
+ −
\sa pop(), top()+ −
*/+ −
+ −
/*!+ −
\fn T& Q3ValueStack::top()+ −
+ −
Returns a reference to the top item of the stack or the item+ −
referenced by end() if no such item exists. Note that you must not+ −
change the value the end() iterator points to.+ −
+ −
This function is equivalent to last().+ −
+ −
\sa pop(), push(), Q3ValueList::fromLast()+ −
*/+ −
+ −
+ −
/*!+ −
\fn const T& Q3ValueStack::top() const+ −
+ −
\overload+ −
+ −
Returns a reference to the top item of the stack or the item+ −
referenced by end() if no such item exists.+ −
+ −
This function is equivalent to last().+ −
+ −
\sa pop(), push(), Q3ValueList::fromLast()+ −
*/+ −
+ −
/*!+ −
\fn T Q3ValueStack::pop()+ −
+ −
Removes the top item from the stack and returns it.+ −
+ −
\sa top() push()+ −
*/+ −
+ −
+ −
+ −
+ −
+ −