ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Control
Navigation
Navigation
NavigableVectorIterator.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#ifndef NAVIGATION_NAVIGABLEVECTORITERATOR_H
6
#define NAVIGATION_NAVIGABLEVECTORITERATOR_H
8
// iterator
10
11
#include <vector>
12
13
template
<
typename
OBJCT,
typename
STORE >
14
class
NavigableVectorIterator
15
{
16
public
:
17
18
typedef
OBJCT
object_type
;
19
typedef
STORE
store_type
;
20
typedef
typename
store_type::const_iterator
store_const_iter
;
21
23
// Constuctors & Destructor //
25
26
// default
27
NavigableVectorIterator
(){};
28
// copy
29
// NavigableVectorIterator(NavigableVectorIterator& anIter)
30
// {
31
// m_storePtr = anIter.m_storePtr;
32
// m_actualIter = anIter.m_actualIter;
33
// }
34
// initial
35
NavigableVectorIterator
(
const
store_type
* aStore)
36
:
m_storePtr
(aStore)
37
,
m_actualIter
(aStore->
begin
())
38
{ };
39
40
NavigableVectorIterator
(
const
store_type
& aStore)
41
:
m_storePtr
(&aStore)
42
,
m_actualIter
(aStore.
begin
())
43
{ }
44
45
// destructor
46
virtual
~NavigableVectorIterator
() =
default
;
47
49
// Iterator Operations //
51
52
// begin and end
53
NavigableVectorIterator
begin
()
54
{
55
m_actualIter
=
m_storePtr
->begin();
56
return
*
this
;
57
}
58
NavigableVectorIterator
begin
()
const
59
{
60
m_actualIter
=
m_storePtr
->begin();
61
return
*
this
;
62
}
63
64
NavigableVectorIterator
end
()
65
{
66
m_actualIter
=
m_storePtr
->end();
67
return
*
this
;
68
}
69
70
NavigableVectorIterator
end
()
const
71
{
72
m_actualIter
=
m_storePtr
->end();
73
return
*
this
;
74
}
75
76
// iterator stepping
77
NavigableVectorIterator
operator++
()
78
{
79
++
m_actualIter
;
80
return
*
this
;
81
}
82
NavigableVectorIterator
operator++
(
int
)
83
{
84
++
m_actualIter
;
85
return
*
this
;
86
}
87
NavigableVectorIterator
operator--
()
88
{
89
--
m_actualIter
;
90
return
*
this
;
91
}
92
NavigableVectorIterator
&
operator--
(
int
)
93
{
94
--
m_actualIter
;
95
return
*
this
;
96
}
97
98
// data access operations
99
const
object_type
*
operator[]
(
int
i)
100
{
101
return
i >= 0 && i <
m_storePtr
->size()
102
? (*m_storePtr)[i]
103
: 0;
104
}
105
106
const
object_type
*
operator[]
(
unsigned
int
i)
107
{
108
return
i <
m_storePtr
->size()
109
? (*m_storePtr)[i]
110
: 0;
111
}
112
const
object_type
*
operator*
()
113
{
114
return
*(*m_actualIter);
115
}
116
117
// comparisons and finding
118
bool
operator==
(
const
NavigableVectorIterator
& anIter)
const
119
{
120
return
m_actualIter
== anIter.
m_actualIter
;
121
}
122
bool
operator!=
(
const
NavigableVectorIterator
& anIter)
const
123
{
124
return
m_actualIter
!= anIter.
m_actualIter
;
125
}
126
NavigableVectorIterator
&
find
(
const
object_type
* anObject)
127
{
128
bool
found =
false
;
129
m_actualIter
=
m_storePtr
->begin();
130
while
( ( ! found ) &&
m_actualIter
!=
m_storePtr
->end() )
131
{
132
found = *(*m_actualIter) == anObject;
133
if
( !found ) ++
m_actualIter
;
134
}
135
return
*
this
;
136
}
137
138
private
:
139
140
const
store_type
*
m_storePtr
;
141
store_const_iter
m_actualIter
;
142
};
143
#endif
NavigableVectorIterator::operator--
NavigableVectorIterator & operator--(int)
Definition
NavigableVectorIterator.h:92
NavigableVectorIterator::operator[]
const object_type * operator[](int i)
Definition
NavigableVectorIterator.h:99
NavigableVectorIterator::NavigableVectorIterator
NavigableVectorIterator(const store_type &aStore)
Definition
NavigableVectorIterator.h:40
NavigableVectorIterator::begin
NavigableVectorIterator begin() const
Definition
NavigableVectorIterator.h:58
NavigableVectorIterator::end
NavigableVectorIterator end()
Definition
NavigableVectorIterator.h:64
NavigableVectorIterator< OBJCT, store_type >::begin
NavigableVectorIterator begin()
Definition
NavigableVectorIterator.h:53
NavigableVectorIterator::operator==
bool operator==(const NavigableVectorIterator &anIter) const
Definition
NavigableVectorIterator.h:118
NavigableVectorIterator::find
NavigableVectorIterator & find(const object_type *anObject)
Definition
NavigableVectorIterator.h:126
NavigableVectorIterator::operator*
const object_type * operator*()
Definition
NavigableVectorIterator.h:112
NavigableVectorIterator::operator++
NavigableVectorIterator operator++(int)
Definition
NavigableVectorIterator.h:82
NavigableVectorIterator< OBJCT, store_type >::object_type
OBJCT object_type
Definition
NavigableVectorIterator.h:18
NavigableVectorIterator::end
NavigableVectorIterator end() const
Definition
NavigableVectorIterator.h:70
NavigableVectorIterator::operator--
NavigableVectorIterator operator--()
Definition
NavigableVectorIterator.h:87
NavigableVectorIterator< OBJCT, store_type >::m_storePtr
const store_type * m_storePtr
Definition
NavigableVectorIterator.h:140
NavigableVectorIterator::operator[]
const object_type * operator[](unsigned int i)
Definition
NavigableVectorIterator.h:106
NavigableVectorIterator::operator!=
bool operator!=(const NavigableVectorIterator &anIter) const
Definition
NavigableVectorIterator.h:122
NavigableVectorIterator< OBJCT, store_type >::store_type
store_type store_type
Definition
NavigableVectorIterator.h:19
NavigableVectorIterator::NavigableVectorIterator
NavigableVectorIterator()
Definition
NavigableVectorIterator.h:27
NavigableVectorIterator::~NavigableVectorIterator
virtual ~NavigableVectorIterator()=default
NavigableVectorIterator< OBJCT, store_type >::m_actualIter
store_const_iter m_actualIter
Definition
NavigableVectorIterator.h:141
NavigableVectorIterator::operator++
NavigableVectorIterator operator++()
Definition
NavigableVectorIterator.h:77
NavigableVectorIterator< OBJCT, store_type >::store_const_iter
store_type::const_iterator store_const_iter
Definition
NavigableVectorIterator.h:20
NavigableVectorIterator::NavigableVectorIterator
NavigableVectorIterator(const store_type *aStore)
Definition
NavigableVectorIterator.h:35
Generated on
for ATLAS Offline Software by
1.17.0