1/*
2    File:       CListIterator.c
3
4    Contains:   Implementation of the CListIterator class
5
6*/
7
8#include "CListIterator.h"
9#include <CList.h>
10
11//--------------------------------------------------------------------------------
12#define super CArrayIterator
13    OSDefineMetaClassAndStructors(CListIterator, CArrayIterator);
14//--------------------------------------------------------------------------------
15
16
17//--------------------------------------------------------------------------------
18//      CListIterator::cListIterator
19//--------------------------------------------------------------------------------
20CListIterator *
21CListIterator::cListIterator()
22{
23    CListIterator *obj;
24    obj = new CListIterator();
25    if (obj && !obj->init()) {
26	obj->release();
27	obj = nil;
28    }
29    return obj;
30}
31
32
33//--------------------------------------------------------------------------------
34//      CListIterator::cListIterator
35//--------------------------------------------------------------------------------
36CListIterator *
37CListIterator::cListIterator(CDynamicArray* itsList)
38{
39    CListIterator *obj;
40    obj = new CListIterator();
41    if (obj && !obj->init(itsList)) {
42	obj->release();
43	obj = nil;
44    }
45    return obj;
46}
47
48
49//--------------------------------------------------------------------------------
50//      CListIterator::cListIterator
51//--------------------------------------------------------------------------------
52CListIterator *
53CListIterator::cListIterator(CDynamicArray* itsList, Boolean itsForward)
54{
55    CListIterator *obj;
56    obj = new CListIterator();
57    if (obj && !obj->init(itsList, itsForward)) {
58	obj->release();
59	obj = nil;
60    }
61    return obj;
62}
63
64
65//--------------------------------------------------------------------------------
66//      CListIterator::CListIterator
67//--------------------------------------------------------------------------------
68CListIterator *
69CListIterator::cListIterator(CDynamicArray* itsList, ArrayIndex itsLowBound,
70    ArrayIndex itsHighBound, Boolean itsForward)
71{
72    CListIterator *obj;
73    obj = new CListIterator();
74    if (obj && !obj->init(itsList, itsLowBound, itsHighBound, itsForward)) {
75	obj->release();
76	obj = nil;
77    }
78    return obj;
79}
80
81
82//--------------------------------------------------------------------------------
83//      CListIterator::CurrentItem
84//--------------------------------------------------------------------------------
85void* CListIterator::CurrentItem()
86{
87    if (fDynamicArray)
88	return ((CList*)fDynamicArray)->At(fCurrentIndex);
89    else
90	return nil;
91
92} // CListIterator::CurrentItem
93
94
95//--------------------------------------------------------------------------------
96//      CListIterator::FirstItem
97//--------------------------------------------------------------------------------
98void* CListIterator::FirstItem()
99{
100    this->Reset();
101
102    if (this->More())
103	return ((CList*)fDynamicArray)->At(fCurrentIndex);
104    else
105	return nil;
106
107} // CListIterator::FirstItem
108
109
110//--------------------------------------------------------------------------------
111//      CListIterator::NextItem
112//--------------------------------------------------------------------------------
113void* CListIterator::NextItem()
114{
115    this->Advance();
116
117    if (this->More())
118	return ((CList*)fDynamicArray)->At(fCurrentIndex);
119    else
120	return nil;
121
122} // CListIterator::NextItem
123
124
125