b311480e |
1 | // Created on: 2002-04-23 |
2 | // Created by: Alexander KARTOMIN |
3 | // Copyright (c) 2002-2012 OPEN CASCADE SAS |
4 | // |
5 | // The content of this file is subject to the Open CASCADE Technology Public |
6 | // License Version 6.5 (the "License"). You may not use the content of this file |
7 | // except in compliance with the License. Please obtain a copy of the License |
8 | // at http://www.opencascade.org and read it completely before using this file. |
9 | // |
10 | // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its |
11 | // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France. |
12 | // |
13 | // The Original Code and all software distributed under the License is |
14 | // distributed on an "AS IS" basis, without warranty of any kind, and the |
15 | // Initial Developer hereby disclaims all such warranties, including without |
16 | // limitation, any warranties of merchantability, fitness for a particular |
17 | // purpose or non-infringement. Please see the License for the specific terms |
18 | // and conditions governing the rights and limitations under the License. |
19 | |
7fd59977 |
20 | |
21 | #ifndef NCollection_TListIterator_HeaderFile |
22 | #define NCollection_TListIterator_HeaderFile |
23 | |
24 | #include <NCollection_BaseCollection.hxx> |
25 | #include <NCollection_BaseList.hxx> |
26 | #include <NCollection_TListNode.hxx> |
27 | |
7fd59977 |
28 | /** |
29 | * Purpose: This Iterator class iterates on BaseList of TListNode and is |
30 | * instantiated in List/Set/Queue/Stack |
31 | * Remark: TListIterator is internal class |
32 | */ |
33 | template <class TheItemType> class NCollection_TListIterator |
34 | : public NCollection_BaseCollection<TheItemType>::Iterator, |
35 | public NCollection_BaseList::Iterator |
36 | { |
37 | public: |
38 | //! Empty constructor - for later Init |
39 | NCollection_TListIterator (void) : |
40 | NCollection_BaseList::Iterator () {} |
41 | //! Constructor with initialisation |
42 | NCollection_TListIterator (const NCollection_BaseList& theList) : |
43 | NCollection_BaseList::Iterator (theList) {} |
44 | //! Assignment |
45 | NCollection_TListIterator& operator= (const NCollection_TListIterator& theIt) |
46 | { |
47 | NCollection_BaseList::Iterator& me = * this; |
48 | me.operator= (theIt); |
49 | return * this; |
50 | } |
51 | //! Check end |
52 | virtual Standard_Boolean More (void) const |
53 | { return (myCurrent!=NULL); } |
54 | //! Make step |
55 | virtual void Next (void) |
56 | { |
57 | myPrevious = myCurrent; |
58 | myCurrent = myCurrent->Next(); |
59 | } |
60 | //! Constant Value access |
61 | virtual const TheItemType& Value (void) const |
62 | { return ((const NCollection_TListNode<TheItemType>*) myCurrent)->Value(); } |
63 | //! Variable Value access |
64 | virtual TheItemType& ChangeValue (void) const |
65 | { return ((NCollection_TListNode<TheItemType> *)myCurrent)->ChangeValue(); } |
7fd59977 |
66 | }; |
67 | |
7fd59977 |
68 | #endif |