BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
dchain::PartialCandidateItr< CandidateClass > Class Template Reference

#include <PartialCandidateItr.h>

Inheritance diagram for dchain::PartialCandidateItr< CandidateClass >:

Public Types

typedef LabeledCandidate< CandidateClass > value_type
typedef dchain::candidateitr::difference_type difference_type
typedef dchain::candidateitr::size_type size_type
typedef value_typereference
typedef value_typepointer
typedef std::bidirectional_iterator_tag iterator_category
typedef LabeledCandidate< CandidateClass > value_type
typedef dchain::candidateitr::difference_type difference_type
typedef dchain::candidateitr::size_type size_type
typedef value_typereference
typedef value_typepointer
typedef std::bidirectional_iterator_tag iterator_category
typedef LabeledCandidate< CandidateClass > value_type
typedef dchain::candidateitr::difference_type difference_type
typedef dchain::candidateitr::size_type size_type
typedef value_typereference
typedef value_typepointer
typedef std::bidirectional_iterator_tag iterator_category

Public Member Functions

 PartialCandidateItr ()
 PartialCandidateItr (const PartialCandidateItr< CandidateClass > &aOtherItr)
virtual ~PartialCandidateItr ()
const PartialCandidateItr< CandidateClass > & operator= (const PartialCandidateItr< CandidateClass > &aOtherItr)
PartialCandidateItr< CandidateClass > & operator++ ()
PartialCandidateItr< CandidateClass > operator++ (int)
PartialCandidateItr< CandidateClass > & operator-- ()
PartialCandidateItr< CandidateClass > operator-- (int)
const LabeledCandidate< CandidateClass > & operator* () const
bool operator== (const PartialCandidateItr< CandidateClass > &aOtherItr) const
bool operator!= (const PartialCandidateItr< CandidateClass > &aOtherItr) const
 PartialCandidateItr ()
 PartialCandidateItr (const PartialCandidateItr< CandidateClass > &aOtherItr)
virtual ~PartialCandidateItr ()
const PartialCandidateItr< CandidateClass > & operator= (const PartialCandidateItr< CandidateClass > &aOtherItr)
PartialCandidateItr< CandidateClass > & operator++ ()
PartialCandidateItr< CandidateClass > operator++ (int)
PartialCandidateItr< CandidateClass > & operator-- ()
PartialCandidateItr< CandidateClass > operator-- (int)
const LabeledCandidate< CandidateClass > & operator* () const
bool operator== (const PartialCandidateItr< CandidateClass > &aOtherItr) const
bool operator!= (const PartialCandidateItr< CandidateClass > &aOtherItr) const
 PartialCandidateItr ()
 PartialCandidateItr (const PartialCandidateItr< CandidateClass > &aOtherItr)
virtual ~PartialCandidateItr ()
const PartialCandidateItr< CandidateClass > & operator= (const PartialCandidateItr< CandidateClass > &aOtherItr)
PartialCandidateItr< CandidateClass > & operator++ ()
PartialCandidateItr< CandidateClass > operator++ (int)
PartialCandidateItr< CandidateClass > & operator-- ()
PartialCandidateItr< CandidateClass > operator-- (int)
const LabeledCandidate< CandidateClass > & operator* () const
bool operator== (const PartialCandidateItr< CandidateClass > &aOtherItr) const
bool operator!= (const PartialCandidateItr< CandidateClass > &aOtherItr) const

Protected Member Functions

 PartialCandidateItr (const IndexedLabeledCandidates< CandidateClass > *aList, const size_type aIndex, const conjugation::Label aLabel)
IndexedLabeledCandidates< CandidateClass > * indexedCandidates () const
size_type index () const
conjugation::Label label () const
 PartialCandidateItr (const IndexedLabeledCandidates< CandidateClass > *aList, const size_type aIndex, const conjugation::Label aLabel)
IndexedLabeledCandidates< CandidateClass > * indexedCandidates () const
size_type index () const
conjugation::Label label () const
 PartialCandidateItr (const IndexedLabeledCandidates< CandidateClass > *aList, const size_type aIndex, const conjugation::Label aLabel)
IndexedLabeledCandidates< CandidateClass > * indexedCandidates () const
size_type index () const
conjugation::Label label () const

Friends

class LabeledCandidateList< CandidateClass >

Detailed Description

template<class CandidateClass>
class dchain::PartialCandidateItr< CandidateClass >

Definition at line 46 of file Event/DecayChain/include/DecayChain/Iterator/PartialCandidateItr.h.

Member Typedef Documentation

◆ difference_type [1/3]

template<class CandidateClass>
typedef dchain::candidateitr::difference_type dchain::PartialCandidateItr< CandidateClass >::difference_type

◆ difference_type [2/3]

template<class CandidateClass>
typedef dchain::candidateitr::difference_type dchain::PartialCandidateItr< CandidateClass >::difference_type

◆ difference_type [3/3]

template<class CandidateClass>
typedef dchain::candidateitr::difference_type dchain::PartialCandidateItr< CandidateClass >::difference_type

◆ iterator_category [1/3]

template<class CandidateClass>
typedef std::bidirectional_iterator_tag dchain::PartialCandidateItr< CandidateClass >::iterator_category

◆ iterator_category [2/3]

template<class CandidateClass>
typedef std::bidirectional_iterator_tag dchain::PartialCandidateItr< CandidateClass >::iterator_category

◆ iterator_category [3/3]

template<class CandidateClass>
typedef std::bidirectional_iterator_tag dchain::PartialCandidateItr< CandidateClass >::iterator_category

◆ pointer [1/3]

template<class CandidateClass>
typedef value_type* dchain::PartialCandidateItr< CandidateClass >::pointer

◆ pointer [2/3]

template<class CandidateClass>
typedef value_type* dchain::PartialCandidateItr< CandidateClass >::pointer

◆ pointer [3/3]

template<class CandidateClass>
typedef value_type* dchain::PartialCandidateItr< CandidateClass >::pointer

◆ reference [1/3]

template<class CandidateClass>
typedef value_type& dchain::PartialCandidateItr< CandidateClass >::reference

◆ reference [2/3]

template<class CandidateClass>
typedef value_type& dchain::PartialCandidateItr< CandidateClass >::reference

◆ reference [3/3]

template<class CandidateClass>
typedef value_type& dchain::PartialCandidateItr< CandidateClass >::reference

◆ size_type [1/3]

template<class CandidateClass>
typedef dchain::candidateitr::size_type dchain::PartialCandidateItr< CandidateClass >::size_type

◆ size_type [2/3]

template<class CandidateClass>
typedef dchain::candidateitr::size_type dchain::PartialCandidateItr< CandidateClass >::size_type

◆ size_type [3/3]

template<class CandidateClass>
typedef dchain::candidateitr::size_type dchain::PartialCandidateItr< CandidateClass >::size_type

◆ value_type [1/3]

template<class CandidateClass>
typedef LabeledCandidate<CandidateClass> dchain::PartialCandidateItr< CandidateClass >::value_type

◆ value_type [2/3]

template<class CandidateClass>
typedef LabeledCandidate<CandidateClass> dchain::PartialCandidateItr< CandidateClass >::value_type

◆ value_type [3/3]

template<class CandidateClass>
typedef LabeledCandidate<CandidateClass> dchain::PartialCandidateItr< CandidateClass >::value_type

Constructor & Destructor Documentation

◆ PartialCandidateItr() [1/9]

◆ PartialCandidateItr() [2/9]

template<class CandidateClass>
dchain::PartialCandidateItr< CandidateClass >::PartialCandidateItr ( const PartialCandidateItr< CandidateClass > & aOtherItr)
inline

◆ ~PartialCandidateItr() [1/3]

template<class CandidateClass>
virtual dchain::PartialCandidateItr< CandidateClass >::~PartialCandidateItr ( )
inlinevirtual

◆ PartialCandidateItr() [3/9]

template<class CandidateClass>
dchain::PartialCandidateItr< CandidateClass >::PartialCandidateItr ( const IndexedLabeledCandidates< CandidateClass > * aList,
const size_type aIndex,
const conjugation::Label aLabel )
inlineprotected

Definition at line 150 of file Event/DecayChain/include/DecayChain/Iterator/PartialCandidateItr.h.

153 : // cast away const as const_iterator can be assocciated with a non-const list,
154 // but only const lists use this constructor
155 m_indexedCandidates( (IndexedLabeledCandidates<CandidateClass>*)aList )
156 , m_index( aIndex )
157 , m_label( aLabel ) {
158 // move to first entry with correct label
159 if ( ( m_index < size_type( ( *m_indexedCandidates ).size() ) ) &&
160 ( ( *m_indexedCandidates ).labeledCandidateClass( m_index ) != m_label ) )
161 { operator++(); }
162 }

◆ PartialCandidateItr() [4/9]

template<class CandidateClass>
dchain::PartialCandidateItr< CandidateClass >::PartialCandidateItr ( )

◆ PartialCandidateItr() [5/9]

template<class CandidateClass>
dchain::PartialCandidateItr< CandidateClass >::PartialCandidateItr ( const PartialCandidateItr< CandidateClass > & aOtherItr)

◆ ~PartialCandidateItr() [2/3]

template<class CandidateClass>
virtual dchain::PartialCandidateItr< CandidateClass >::~PartialCandidateItr ( )
inlinevirtual

◆ PartialCandidateItr() [6/9]

template<class CandidateClass>
dchain::PartialCandidateItr< CandidateClass >::PartialCandidateItr ( const IndexedLabeledCandidates< CandidateClass > * aList,
const size_type aIndex,
const conjugation::Label aLabel )
protected

◆ PartialCandidateItr() [7/9]

template<class CandidateClass>
dchain::PartialCandidateItr< CandidateClass >::PartialCandidateItr ( )

◆ PartialCandidateItr() [8/9]

template<class CandidateClass>
dchain::PartialCandidateItr< CandidateClass >::PartialCandidateItr ( const PartialCandidateItr< CandidateClass > & aOtherItr)

◆ ~PartialCandidateItr() [3/3]

template<class CandidateClass>
virtual dchain::PartialCandidateItr< CandidateClass >::~PartialCandidateItr ( )
inlinevirtual

◆ PartialCandidateItr() [9/9]

template<class CandidateClass>
dchain::PartialCandidateItr< CandidateClass >::PartialCandidateItr ( const IndexedLabeledCandidates< CandidateClass > * aList,
const size_type aIndex,
const conjugation::Label aLabel )
protected

Member Function Documentation

◆ index() [1/3]

template<class CandidateClass>
PartialCandidateItr< CandidateClass >::size_type dchain::PartialCandidateItr< CandidateClass >::index ( ) const
inlineprotected

◆ index() [2/3]

template<class CandidateClass>
size_type dchain::PartialCandidateItr< CandidateClass >::index ( ) const
protected

◆ index() [3/3]

template<class CandidateClass>
size_type dchain::PartialCandidateItr< CandidateClass >::index ( ) const
protected

◆ indexedCandidates() [1/3]

template<class CandidateClass>
IndexedLabeledCandidates< CandidateClass > * dchain::PartialCandidateItr< CandidateClass >::indexedCandidates ( ) const
inlineprotected

◆ indexedCandidates() [2/3]

template<class CandidateClass>
IndexedLabeledCandidates< CandidateClass > * dchain::PartialCandidateItr< CandidateClass >::indexedCandidates ( ) const
protected

◆ indexedCandidates() [3/3]

template<class CandidateClass>
IndexedLabeledCandidates< CandidateClass > * dchain::PartialCandidateItr< CandidateClass >::indexedCandidates ( ) const
protected

◆ label() [1/3]

template<class CandidateClass>
conjugation::Label dchain::PartialCandidateItr< CandidateClass >::label ( ) const
inlineprotected

◆ label() [2/3]

template<class CandidateClass>
conjugation::Label dchain::PartialCandidateItr< CandidateClass >::label ( ) const
protected

◆ label() [3/3]

template<class CandidateClass>
conjugation::Label dchain::PartialCandidateItr< CandidateClass >::label ( ) const
protected

◆ operator!=() [1/3]

template<class CandidateClass>
bool dchain::PartialCandidateItr< CandidateClass >::operator!= ( const PartialCandidateItr< CandidateClass > & aOtherItr) const
inline

Definition at line 273 of file Event/DecayChain/include/DecayChain/Iterator/PartialCandidateItr.h.

274 {
275 // There needs to be a final test on the label as itrs with two different labels
276 // have the same values for the past-the-end value
277 return ( ( m_index != aOtherItr.index() ) ||
278 ( m_indexedCandidates != aOtherItr.indexedCandidates() ) ||
279 ( m_label != aOtherItr.label() ) );
280 }

◆ operator!=() [2/3]

template<class CandidateClass>
bool dchain::PartialCandidateItr< CandidateClass >::operator!= ( const PartialCandidateItr< CandidateClass > & aOtherItr) const

◆ operator!=() [3/3]

template<class CandidateClass>
bool dchain::PartialCandidateItr< CandidateClass >::operator!= ( const PartialCandidateItr< CandidateClass > & aOtherItr) const

◆ operator*() [1/3]

template<class CandidateClass>
const LabeledCandidate< CandidateClass > & dchain::PartialCandidateItr< CandidateClass >::operator* ( ) const
inline

Definition at line 258 of file Event/DecayChain/include/DecayChain/Iterator/PartialCandidateItr.h.

258 {
259 return ( ( *m_indexedCandidates ).labeledCandidateClass( m_index ) );
260 }

◆ operator*() [2/3]

template<class CandidateClass>
const LabeledCandidate< CandidateClass > & dchain::PartialCandidateItr< CandidateClass >::operator* ( ) const

◆ operator*() [3/3]

template<class CandidateClass>
const LabeledCandidate< CandidateClass > & dchain::PartialCandidateItr< CandidateClass >::operator* ( ) const

◆ operator++() [1/6]

template<class CandidateClass>
PartialCandidateItr< CandidateClass > & dchain::PartialCandidateItr< CandidateClass >::operator++ ( )
inline

Definition at line 184 of file Event/DecayChain/include/DecayChain/Iterator/PartialCandidateItr.h.

184 {
185 ++m_index;
186 // This while loop find next match to label.
187 // The order is done for efficiency reasons. It is more likely a label
188 // will match than the end of the list has been reached. However this
189 // will can cause an access to an uninitiallized location, but the
190 // loop will still terminate correctly.
191 // update: the efficiency doesn't matter but reading invalid memory
192 // makes our automated memory checkers have fits
193 while ( ( m_index < size_type( ( *m_indexedCandidates ).size() ) &&
194 ( ( *m_indexedCandidates ).labeledCandidateClass( m_index ) != m_label ) ) )
195 { ++m_index; }
196 return ( *this );
197 }

Referenced by dchain::PartialItr< T >::operator++(), and dchain::PartialItr< T >::operator++().

◆ operator++() [2/6]

template<class CandidateClass>
PartialCandidateItr< CandidateClass > & dchain::PartialCandidateItr< CandidateClass >::operator++ ( )

◆ operator++() [3/6]

template<class CandidateClass>
PartialCandidateItr< CandidateClass > & dchain::PartialCandidateItr< CandidateClass >::operator++ ( )

◆ operator++() [4/6]

template<class CandidateClass>
PartialCandidateItr< CandidateClass > dchain::PartialCandidateItr< CandidateClass >::operator++ ( int )
inline

Definition at line 201 of file Event/DecayChain/include/DecayChain/Iterator/PartialCandidateItr.h.

201 {
203 ++m_index;
204 // This while loop find next match to label.
205 // The order is done for efficiency reasons. It is more likely a label
206 // will match than the end of the list has been reached. However this
207 // will can cause an access to an uninitiallized location, but the
208 // loop will still terminate correctly.
209 while ( ( ( *m_indexedCandidates ).labeledCandidateClass( m_index ) != m_label ) &&
210 ( m_index < size_type( ( *m_indexedCandidates ).size() ) ) )
211 { ++m_index; }
212 return ( tmp );
213 }

◆ operator++() [5/6]

template<class CandidateClass>
PartialCandidateItr< CandidateClass > dchain::PartialCandidateItr< CandidateClass >::operator++ ( int )

◆ operator++() [6/6]

template<class CandidateClass>
PartialCandidateItr< CandidateClass > dchain::PartialCandidateItr< CandidateClass >::operator++ ( int )

◆ operator--() [1/6]

template<class CandidateClass>
PartialCandidateItr< CandidateClass > & dchain::PartialCandidateItr< CandidateClass >::operator-- ( )
inline

Definition at line 217 of file Event/DecayChain/include/DecayChain/Iterator/PartialCandidateItr.h.

217 {
218 // As the index is 'unsigned' it should not go below zero. This behavior is completely
219 // consistent with the STL reverse_iterator adaptor. (See pp254 of Musser & Saini)
220 //
221 if ( 0 != m_index ) { --m_index; }
222 // This while loop find next match to label.
223 // The order is done for efficiency reasons. It is more likely a label
224 // will match than the end of the list has been reached. However this
225 // will can cause an access to an uninitiallized location, but the
226 // loop will still terminate correctly.
227 while ( ( ( *m_indexedCandidates ).labeledCandidateClass( m_index ) != m_label ) &&
228 ( m_index != 0 ) )
229 { --m_index; }
230 return ( *this );
231 }

Referenced by dchain::PartialItr< T >::operator--(), and dchain::PartialItr< T >::operator--().

◆ operator--() [2/6]

template<class CandidateClass>
PartialCandidateItr< CandidateClass > & dchain::PartialCandidateItr< CandidateClass >::operator-- ( )

◆ operator--() [3/6]

template<class CandidateClass>
PartialCandidateItr< CandidateClass > & dchain::PartialCandidateItr< CandidateClass >::operator-- ( )

◆ operator--() [4/6]

template<class CandidateClass>
PartialCandidateItr< CandidateClass > dchain::PartialCandidateItr< CandidateClass >::operator-- ( int )
inline

Definition at line 235 of file Event/DecayChain/include/DecayChain/Iterator/PartialCandidateItr.h.

235 {
237 // As the index is 'unsigned' it should not go below zero. This behavior is completely
238 // consistent with the STL reverse_iterator adaptor. (See pp254 of Musser & Saini)
239 //
240 if ( 0 != m_index ) { --m_index; }
241 // This while loop find next match to label.
242 // The order is done for efficiency reasons. It is more likely a label
243 // will match than the end of the list has been reached. However this
244 // will can cause an access to an uninitiallized location, but the
245 // loop will still terminate correctly.
246 while ( ( ( *m_indexedCandidates ).labeledCandidateClass( m_index ) != m_label ) &&
247 ( m_index != 0 ) )
248 { --m_index; }
249 return ( tmp );
250 }

◆ operator--() [5/6]

template<class CandidateClass>
PartialCandidateItr< CandidateClass > dchain::PartialCandidateItr< CandidateClass >::operator-- ( int )

◆ operator--() [6/6]

template<class CandidateClass>
PartialCandidateItr< CandidateClass > dchain::PartialCandidateItr< CandidateClass >::operator-- ( int )

◆ operator=() [1/3]

template<class CandidateClass>
const PartialCandidateItr< CandidateClass > & dchain::PartialCandidateItr< CandidateClass >::operator= ( const PartialCandidateItr< CandidateClass > & aOtherItr)
inline

Definition at line 170 of file Event/DecayChain/include/DecayChain/Iterator/PartialCandidateItr.h.

171 {
172 m_indexedCandidates = aOtherItr.indexedCandidates();
173 m_index = aOtherItr.index();
174 m_label = aOtherItr.label();
175 return ( *this );
176 }

Referenced by dchain::PartialItr< T >::operator=().

◆ operator=() [2/3]

template<class CandidateClass>
const PartialCandidateItr< CandidateClass > & dchain::PartialCandidateItr< CandidateClass >::operator= ( const PartialCandidateItr< CandidateClass > & aOtherItr)

◆ operator=() [3/3]

template<class CandidateClass>
const PartialCandidateItr< CandidateClass > & dchain::PartialCandidateItr< CandidateClass >::operator= ( const PartialCandidateItr< CandidateClass > & aOtherItr)

◆ operator==() [1/3]

template<class CandidateClass>
bool dchain::PartialCandidateItr< CandidateClass >::operator== ( const PartialCandidateItr< CandidateClass > & aOtherItr) const
inline

Definition at line 263 of file Event/DecayChain/include/DecayChain/Iterator/PartialCandidateItr.h.

264 {
265 // There needs to be a final test on the label as itrs with two different labels
266 // have the same values for the past-the-end value
267 return ( ( m_index == aOtherItr.index() ) &&
268 ( m_indexedCandidates == aOtherItr.indexedCandidates() ) &&
269 ( m_label == aOtherItr.label() ) );
270 }

◆ operator==() [2/3]

template<class CandidateClass>
bool dchain::PartialCandidateItr< CandidateClass >::operator== ( const PartialCandidateItr< CandidateClass > & aOtherItr) const

◆ operator==() [3/3]

template<class CandidateClass>
bool dchain::PartialCandidateItr< CandidateClass >::operator== ( const PartialCandidateItr< CandidateClass > & aOtherItr) const

◆ LabeledCandidateList< CandidateClass >

template<class CandidateClass>
friend class LabeledCandidateList< CandidateClass >
friend

The documentation for this class was generated from the following files: