VR-Forces 4.2 Class Documentation
Home
Modules
Namespaces
Classes
Files
Examples
Behavior Models
File List
File Members
include
vrfutil
recRscrIter.h
Go to the documentation of this file.
1
/*******************************************************************************
2
** Copyright (c) 2004 MaK Technologies, Inc.
3
** All rights reserved.
4
*******************************************************************************/
5
/*******************************************************************************
6
** $RCSfile: recRscrIter.h,v $ $Revision: 1.3 $ $State: Exp $
7
Created: 4/5/04 MEM
8
*******************************************************************************/
9
12
18
19
#ifndef DtRecursiveResourceIterator_H_
20
#define DtRecursiveResourceIterator_H_
21
22
#include "
vrfutil/simRsrc.h
"
23
#include "
vrfutil/rsrcList.h
"
24
#include "
vrfutil/iteratorBase.h
"
25
31
#include "
vrfutil/vrfutilDefines.h
"
32
class
DT_DLL_vrfutil
DtRecursiveResourceIterator
:
public
DtIteratorBase
<DtSimResource>
33
{
34
private
:
36
DtRecursiveResourceIterator
();
37
39
DtRecursiveResourceIterator
(
40
const
DtRecursiveResourceIterator
& orig);
41
43
const
DtRecursiveResourceIterator
&
operator=
(
44
const
DtRecursiveResourceIterator
& orig);
45
46
public
:
47
49
DtRecursiveResourceIterator
(
const
DtList& list) :
50
DtIteratorBase
<
DtSimResource
>(list), myChildIterator(NULL) {};
51
53
virtual
~DtRecursiveResourceIterator
() {
delete
myChildIterator; };
54
57
DtSimResource
*
first
(
bool
move=
true
)
58
{
59
return
DtIteratorBase<DtSimResource>::first
(move);
60
}
61
63
DtSimResource
*
current
()
const
64
{
65
if
(myChildIterator)
66
{
67
DtSimResource
* currRep = myChildIterator->current();
68
69
if
(currRep)
70
{
71
return
currRep;
72
}
73
74
else
75
{
76
delete
myChildIterator;
77
DtRecursiveResourceIterator
* pRsrcIter =
78
(
DtRecursiveResourceIterator
*)
this
;
79
pRsrcIter->
myChildIterator
= NULL;
80
}
81
}
82
83
if
(myCursor)
84
{
85
return
(
DtSimResource
*) myCursor->data();
86
}
87
89
return
NULL;
90
}
91
95
DtSimResource
*
next
(
bool
move=
true
,
bool
recurse=
false
)
96
{
97
DtSimResource
* currRep;
98
100
if
(myChildIterator)
101
{
102
currRep = myChildIterator->next(move,recurse);
103
104
if
(currRep)
105
{
106
return
currRep;
107
}
108
109
else
110
{
111
delete
myChildIterator;
112
myChildIterator = NULL;
113
}
114
}
115
116
else
if
( recurse )
117
{
118
DtSimResource
* currRep =
current
();
119
120
if
(!currRep)
121
{
122
return
NULL;
123
}
124
125
if
(currRep->
subresources
() && currRep->
subresources
()->count())
126
{
128
myChildIterator =
new
DtRecursiveResourceIterator
(*(currRep->
subresources
()));
129
if
(myChildIterator)
130
{
131
return
myChildIterator->first();
132
}
133
134
else
135
{
137
return
NULL;
138
}
139
}
140
}
141
144
if
(myCursor)
145
{
146
myCursor = myCursor->next();
147
}
148
149
return
current
();
150
}
151
154
void
reset
()
155
{
156
DtIteratorBase<DtSimResource>::reset
();
157
158
if
(myChildIterator)
159
{
160
delete
myChildIterator;
161
myChildIterator = NULL;
162
}
163
}
164
165
protected
:
166
DtRecursiveResourceIterator
*
myChildIterator
;
167
168
};
169
170
#endif
Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (
www.mak.com
)