VR-Forces 4.5 Class Documentation
Home
Modules
Namespaces
Classes
Files
Examples
Behavior Models
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
include
vrfutil
recursiveResourceIterator.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/simResource.h
"
23
#include "
vrfutil/simResourceList.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 Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (
www.mak.com
)