NAMD
Main Page
Namespaces
Classes
Files
File List
File Members
UniqueSetIter.h
Go to the documentation of this file.
1
7
/*
8
UniqueSet template - (hashtable)
9
*/
10
11
#ifndef USITER_H
12
#define USITER_H
13
14
#include "
InfoStream.h
"
15
#include "
UniqueSetRaw.h
"
16
#include "
UniqueSet.h
"
17
18
19
template
<
class
T>
class
UniqueSetIter
{
20
21
private
:
22
23
UniqueSet<T>
*us;
24
EntryGlob<T>
*eg;
25
int
index;
26
27
public
:
28
29
UniqueSetIter
(
void
) { us = NULL; eg = NULL; index = 0; }
30
31
UniqueSetIter
(
UniqueSet<T>
& us_param) {
32
us = &us_param; eg = us_param.rep->
globHead
; index = 0;
33
}
34
35
UniqueSetIter
(
const
UniqueSetIter<T>
& iter) {
36
us = iter.us; eg = iter.eg; index = iter.index;
37
}
38
39
UniqueSetIter<T>
&
operator=
(
const
UniqueSetIter<T>
& iter) {
40
us = iter.us; eg = iter.eg; index = iter.index;
return
(*
this
);
41
}
42
43
~UniqueSetIter
(
void
) {}
44
45
T *
operator->
(
void
) {
46
gotoUsed
();
47
if
(eg)
48
return
(T *)&(eg->glob[index].
obj
);
49
else
{
50
index = 0;
51
return
(NULL);
52
}
53
}
54
55
UniqueSetIter<T>
begin
(
void
)
const
{
56
UniqueSetIter<T>
iter;
57
iter.us = us;
58
iter.index = 0;
59
iter.eg = us->rep->
globHead
;
60
iter.
gotoUsed
();
61
return
(iter);
62
}
63
64
UniqueSetIter<T>
end
(
void
)
const
{
65
UniqueSetIter<T>
iter;
66
iter.us = us;
67
iter.index = 0;
68
iter.eg = NULL;
69
return
(iter);
70
}
71
72
int
operator!=
(
const
UniqueSetIter<T>
&iter)
const
{
73
return
(iter.index != index || iter.eg != eg);
74
}
75
76
int
operator==
(
const
UniqueSetIter<T>
&iter)
const
{
77
return
(!
operator
!=(iter));
78
}
79
80
UniqueSetIter<T>
operator++
(
void
) {
81
index++;
82
gotoUsed
();
83
return
(*
this
);
84
}
85
86
UniqueSetIter<T>
operator++
(
int
) {
87
UniqueSetIter<T>
tmp(*
this
);
88
index++;
89
gotoUsed
();
90
return
(tmp);
91
}
92
93
T&
operator*
(
void
) {
94
gotoUsed
();
95
return
*((T *)&(eg->glob[index].
obj
));
96
}
97
98
void
status
(
void
) {
99
std::cout <<
"Index is "
<< index <<
" addr is "
<< eg << std::endl;
100
}
101
102
void
gotoUsed
(
void
) {
103
while
(eg) {
104
for
(;index < us->rep->globSize; index++) {
105
if
(eg->glob[index].
isUsed
())
break
;
106
}
107
if
(index < us->rep->globSize)
break
;
108
index = 0;
109
eg = eg->
next
();
110
}
111
if
(!eg) index = 0;
112
}
113
};
114
115
#endif
UniqueSetIter::operator!=
int operator!=(const UniqueSetIter< T > &iter) const
Definition:
UniqueSetIter.h:72
UniqueSetRaw::globHead
EntryGlob< Elem > * globHead
Definition:
UniqueSetRaw.h:281
UniqueSetIter::operator++
UniqueSetIter< T > operator++(void)
Definition:
UniqueSetIter.h:80
UniqueSetIter::operator=
UniqueSetIter< T > & operator=(const UniqueSetIter< T > &iter)
Definition:
UniqueSetIter.h:39
UniqueSetIter::UniqueSetIter
UniqueSetIter(void)
Definition:
UniqueSetIter.h:29
InfoStream.h
Entry::obj
Elem obj
Definition:
UniqueSetRaw.h:36
UniqueSetIter::operator->
T * operator->(void)
Definition:
UniqueSetIter.h:45
UniqueSetIter::status
void status(void)
Definition:
UniqueSetIter.h:98
UniqueSetIter::begin
UniqueSetIter< T > begin(void) const
Definition:
UniqueSetIter.h:55
UniqueSetIter::operator++
UniqueSetIter< T > operator++(int)
Definition:
UniqueSetIter.h:86
UniqueSetIter::UniqueSetIter
UniqueSetIter(UniqueSet< T > &us_param)
Definition:
UniqueSetIter.h:31
EntryGlob::next
EntryGlob< Elem > * next(void)
Definition:
UniqueSetRaw.h:95
UniqueSet.h
UniqueSetIter::gotoUsed
void gotoUsed(void)
Definition:
UniqueSetIter.h:102
Entry::isUsed
int isUsed(void) const
Definition:
UniqueSetRaw.h:47
UniqueSetIter::UniqueSetIter
UniqueSetIter(const UniqueSetIter< T > &iter)
Definition:
UniqueSetIter.h:35
UniqueSetIter
Definition:
UniqueSet.h:17
UniqueSetIter::end
UniqueSetIter< T > end(void) const
Definition:
UniqueSetIter.h:64
UniqueSetIter::operator==
int operator==(const UniqueSetIter< T > &iter) const
Definition:
UniqueSetIter.h:76
UniqueSet< T >
UniqueSetIter::~UniqueSetIter
~UniqueSetIter(void)
Definition:
UniqueSetIter.h:43
EntryGlob< T >
UniqueSetRaw.h
UniqueSetIter::operator*
T & operator*(void)
Definition:
UniqueSetIter.h:93
Generated by
1.8.5