1#ifndef DCHAIN_PARTIALCANDIDATEITR_H
2#define DCHAIN_PARTIALCANDIDATEITR_H
32#include "DecayChain/Element/LabeledCandidate.h"
33#include "DecayChain/Element/conjugation.h"
34#include "DecayChain/Iterator/candidateitr.h"
43 template <
class Cand
idateClass>
class LabeledCandidate;
44 template <
class Cand
idateClass>
class LabeledCandidateList;
118 template <
class Cand
idateClass>
121 return ( m_indexedCandidates );
124 template <
class Cand
idateClass>
130 template <
class Cand
idateClass>
139 template <
class Cand
idateClass>
142 template <
class Cand
idateClass>
146 , m_index( aOtherItr.
index() )
147 , m_label( aOtherItr.
label() ) {}
149 template <
class Cand
idateClass>
157 , m_label( aLabel ) {
159 if ( ( m_index <
size_type( ( *m_indexedCandidates ).size() ) ) &&
160 ( ( *m_indexedCandidates ).labeledCandidateClass( m_index ) != m_label ) )
168 template <
class Cand
idateClass>
173 m_index = aOtherItr.
index();
174 m_label = aOtherItr.
label();
182 template <
class Cand
idateClass>
193 while ( ( m_index <
size_type( ( *m_indexedCandidates ).size() ) &&
194 ( ( *m_indexedCandidates ).labeledCandidateClass( m_index ) != m_label ) ) )
199 template <
class Cand
idateClass>
209 while ( ( ( *m_indexedCandidates ).labeledCandidateClass( m_index ) != m_label ) &&
210 ( m_index <
size_type( ( *m_indexedCandidates ).size() ) ) )
215 template <
class Cand
idateClass>
221 if ( 0 != m_index ) { --m_index; }
227 while ( ( ( *m_indexedCandidates ).labeledCandidateClass( m_index ) != m_label ) &&
233 template <
class Cand
idateClass>
240 if ( 0 != m_index ) { --m_index; }
246 while ( ( ( *m_indexedCandidates ).labeledCandidateClass( m_index ) != m_label ) &&
256 template <
class Cand
idateClass>
259 return ( ( *m_indexedCandidates ).labeledCandidateClass( m_index ) );
262 template <
class Cand
idateClass>
267 return ( ( m_index == aOtherItr.
index() ) &&
269 ( m_label == aOtherItr.
label() ) );
272 template <
class Cand
idateClass>
277 return ( ( m_index != aOtherItr.
index() ) ||
279 ( m_label != aOtherItr.
label() ) );
const PartialCandidateItr< CandidateClass > & operator=(const PartialCandidateItr< CandidateClass > &aOtherItr)
const LabeledCandidate< CandidateClass > & operator*() const
std::bidirectional_iterator_tag iterator_category
bool operator==(const PartialCandidateItr< CandidateClass > &aOtherItr) const
PartialCandidateItr< CandidateClass > & operator--()
conjugation::Label label() const
dchain::candidateitr::size_type size_type
LabeledCandidate< CandidateClass > value_type
dchain::candidateitr::difference_type difference_type
bool operator!=(const PartialCandidateItr< CandidateClass > &aOtherItr) const
IndexedLabeledCandidates< CandidateClass > * indexedCandidates() const
virtual ~PartialCandidateItr()
PartialCandidateItr< CandidateClass > & operator++()