1#ifndef DCHAIN_COMBINATORICLOOP_CC
2#define DCHAIN_COMBINATORICLOOP_CC
93template<
class Cand
idateClass >
97 m_beginIterator( aBegin ) ,
98 m_endIterator( aEnd ) ,
99 m_previousDuplicate( 0 )
101 typename _combinatoricloop_vector_::const_iterator lastLoop( aLoopList.begin() ) ;
102 typename _combinatoricloop_vector_::const_iterator loopToCheck( aLoopList.end() ) ;
103 while ( loopToCheck != lastLoop ) {
105 if ( ( (*(*loopToCheck)).m_beginIterator ) == m_beginIterator ) {
106 m_previousDuplicate =
new typename _combinatoricloop_vector_::const_iterator( loopToCheck ) ;
107 (*(*(*m_previousDuplicate))).adjustEnd() ;
111 loopToCheck = lastLoop ;
116template<
class Cand
idateClass >
119 delete m_previousDuplicate ;
133template<
class Cand
idateClass >
136 m_currentIterator = aIterator ;
143template<
class Cand
idateClass >
146 if ( 0 == m_previousDuplicate ) {
147 return( m_beginIterator ) ;
150 return( ++newBegin ) ;
153template<
class Cand
idateClass >
156 return( m_endIterator ) ;
159template<
class Cand
idateClass >
162 if ( m_beginIterator != m_endIterator ) {
164 if ( 0 != m_previousDuplicate ) {
165 (*(*(*m_previousDuplicate))).adjustEnd() ;
#define _combinatoricloop_vector_
const dchain::CandidateList< CandidateClass >::const_partial_iterator partial_end() const
const dchain::CandidateList< CandidateClass >::const_partial_iterator partial_begin() const
void setCurrentIterator(typename dchain::CandidateList< CandidateClass >::const_partial_iterator &aIterator)
virtual ~CombinatoricLoop()