#include <CombinatoricLoop.h>
Public Member Functions | |
CombinatoricLoop (const typename dchain::CandidateList< CandidateClass >::const_partial_iterator &aBegin, const typename dchain::CandidateList< CandidateClass >::const_partial_iterator &aEnd, _combinatoricloop_vector_ &aLoopList) | |
CombinatoricLoop (const typename dchain::CandidateList< CandidateClass >::const_partial_iterator &aBegin, const typename dchain::CandidateList< CandidateClass >::const_partial_iterator &aEnd, _combinatoricloop_vector_ &aLoopList) | |
const dchain::CandidateList< CandidateClass >::const_partial_iterator | partial_begin () const |
const dchain::CandidateList< CandidateClass >::const_partial_iterator | partial_begin () const |
const dchain::CandidateList< CandidateClass >::const_partial_iterator | partial_end () const |
const dchain::CandidateList< CandidateClass >::const_partial_iterator | partial_end () const |
void | setCurrentIterator (typename dchain::CandidateList< CandidateClass >::const_partial_iterator &aIterator) |
void | setCurrentIterator (typename dchain::CandidateList< CandidateClass >::const_partial_iterator &aIterator) |
virtual | ~CombinatoricLoop () |
virtual | ~CombinatoricLoop () |
Private Member Functions | |
void | adjustEnd () |
void | adjustEnd () |
CombinatoricLoop (const CombinatoricLoop< CandidateClass > &) | |
CombinatoricLoop () | |
CombinatoricLoop (const CombinatoricLoop< CandidateClass > &) | |
CombinatoricLoop () | |
const CombinatoricLoop & | operator= (const CombinatoricLoop< CandidateClass > &) |
const CombinatoricLoop & | operator= (const CombinatoricLoop< CandidateClass > &) |
Private Attributes | |
dchain::CandidateList< CandidateClass >::const_partial_iterator | m_beginIterator |
dchain::CandidateList< CandidateClass >::const_partial_iterator | m_currentIterator |
dchain::CandidateList< CandidateClass >::const_partial_iterator | m_endIterator |
_combinatoricloop_vector_::const_iterator * | m_previousDuplicate |
_combinatoricloop_vector_::const_iterator * | m_previousDuplicate |
|
00118 {
00119 delete m_previousDuplicate ;
00120 }
|
|
00096 : 00097 m_beginIterator( aBegin ) , 00098 m_endIterator( aEnd ) , 00099 m_previousDuplicate( 0 ) 00100 { 00101 typename _combinatoricloop_vector_::const_iterator lastLoop( aLoopList.begin() ) ; 00102 typename _combinatoricloop_vector_::const_iterator loopToCheck( aLoopList.end() ) ; 00103 while ( loopToCheck != lastLoop ) { 00104 --loopToCheck ; 00105 if ( ( (*(*loopToCheck)).m_beginIterator ) == m_beginIterator ) { 00106 m_previousDuplicate = new typename _combinatoricloop_vector_::const_iterator( loopToCheck ) ; 00107 (*(*(*m_previousDuplicate))).adjustEnd() ; 00108 // 00109 // only require one match, so prepare to terminate search for duplicate 00110 // 00111 loopToCheck = lastLoop ; 00112 } 00113 } 00114 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
00161 { 00162 if ( m_beginIterator != m_endIterator ) { 00163 --m_endIterator ; 00164 if ( 0 != m_previousDuplicate ) { 00165 (*(*(*m_previousDuplicate))).adjustEnd() ; 00166 } 00167 } 00168 }
|
|
|
|
|
|
|
|
00145 { 00146 if ( 0 == m_previousDuplicate ) { 00147 return( m_beginIterator ) ; 00148 } 00149 typename dchain::CandidateList< CandidateClass >::const_partial_iterator newBegin( ( (*(*(*m_previousDuplicate))).m_currentIterator ) ) ; 00150 return( ++newBegin ) ; 00151 }
|
|
|
|
00155 {
00156 return( m_endIterator ) ;
00157 }
|
|
|
|
00135 { 00136 m_currentIterator = aIterator ; 00137 }
|
|
|
|
|
|
|
|
|
|
|