Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

dchain::CombinatoricLoop< CandidateClass > Class Template Reference

#include <CombinatoricLoop.h>

List of all members.

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 CombinatoricLoopoperator= (const CombinatoricLoop< CandidateClass > &)
const CombinatoricLoopoperator= (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

template<class CandidateClass>
class dchain::CombinatoricLoop< CandidateClass >


Constructor & Destructor Documentation

template<class CandidateClass>
dchain::CombinatoricLoop< CandidateClass >::~CombinatoricLoop  )  [virtual]
 

00118 {
00119    delete m_previousDuplicate ;
00120 }

template<class CandidateClass>
dchain::CombinatoricLoop< CandidateClass >::CombinatoricLoop const typename dchain::CandidateList< CandidateClass >::const_partial_iterator &  aBegin,
const typename dchain::CandidateList< CandidateClass >::const_partial_iterator &  aEnd,
_combinatoricloop_vector_ &  aLoopList
 

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 }

template<class CandidateClass>
dchain::CombinatoricLoop< CandidateClass >::CombinatoricLoop  )  [private]
 

template<class CandidateClass>
dchain::CombinatoricLoop< CandidateClass >::CombinatoricLoop const CombinatoricLoop< CandidateClass > &   )  [private]
 

template<class CandidateClass>
virtual dchain::CombinatoricLoop< CandidateClass >::~CombinatoricLoop  )  [virtual]
 

template<class CandidateClass>
dchain::CombinatoricLoop< CandidateClass >::CombinatoricLoop const typename dchain::CandidateList< CandidateClass >::const_partial_iterator &  aBegin,
const typename dchain::CandidateList< CandidateClass >::const_partial_iterator &  aEnd,
_combinatoricloop_vector_ &  aLoopList
 

template<class CandidateClass>
dchain::CombinatoricLoop< CandidateClass >::CombinatoricLoop  )  [private]
 

template<class CandidateClass>
dchain::CombinatoricLoop< CandidateClass >::CombinatoricLoop const CombinatoricLoop< CandidateClass > &   )  [private]
 


Member Function Documentation

template<class CandidateClass>
void dchain::CombinatoricLoop< CandidateClass >::adjustEnd  )  [private]
 

template<class CandidateClass>
void dchain::CombinatoricLoop< CandidateClass >::adjustEnd  )  [private]
 

00161 {
00162    if ( m_beginIterator != m_endIterator ) {
00163       --m_endIterator ;
00164       if ( 0 != m_previousDuplicate ) {
00165          (*(*(*m_previousDuplicate))).adjustEnd() ;
00166       }     
00167    }
00168 }

template<class CandidateClass>
const CombinatoricLoop& dchain::CombinatoricLoop< CandidateClass >::operator= const CombinatoricLoop< CandidateClass > &   )  [private]
 

template<class CandidateClass>
const CombinatoricLoop& dchain::CombinatoricLoop< CandidateClass >::operator= const CombinatoricLoop< CandidateClass > &   )  [private]
 

template<class CandidateClass>
const dchain::CandidateList< CandidateClass >::const_partial_iterator dchain::CombinatoricLoop< CandidateClass >::partial_begin  )  const
 

template<class CandidateClass>
const dchain::CandidateList< CandidateClass >::const_partial_iterator dchain::CombinatoricLoop< CandidateClass >::partial_begin  )  const
 

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 }

template<class CandidateClass>
const dchain::CandidateList< CandidateClass >::const_partial_iterator dchain::CombinatoricLoop< CandidateClass >::partial_end  )  const
 

template<class CandidateClass>
const dchain::CandidateList< CandidateClass >::const_partial_iterator dchain::CombinatoricLoop< CandidateClass >::partial_end  )  const
 

00155 {
00156    return( m_endIterator ) ;
00157 }

template<class CandidateClass>
void dchain::CombinatoricLoop< CandidateClass >::setCurrentIterator typename dchain::CandidateList< CandidateClass >::const_partial_iterator &  aIterator  ) 
 

template<class CandidateClass>
void dchain::CombinatoricLoop< CandidateClass >::setCurrentIterator typename dchain::CandidateList< CandidateClass >::const_partial_iterator &  aIterator  ) 
 

00135 {
00136    m_currentIterator = aIterator ;
00137 }


Member Data Documentation

template<class CandidateClass>
dchain::CandidateList< CandidateClass >::const_partial_iterator dchain::CombinatoricLoop< CandidateClass >::m_beginIterator [private]
 

template<class CandidateClass>
dchain::CandidateList< CandidateClass >::const_partial_iterator dchain::CombinatoricLoop< CandidateClass >::m_currentIterator [private]
 

template<class CandidateClass>
dchain::CandidateList< CandidateClass >::const_partial_iterator dchain::CombinatoricLoop< CandidateClass >::m_endIterator [private]
 

template<class CandidateClass>
_combinatoricloop_vector_::const_iterator* dchain::CombinatoricLoop< CandidateClass >::m_previousDuplicate [private]
 

template<class CandidateClass>
_combinatoricloop_vector_::const_iterator* dchain::CombinatoricLoop< CandidateClass >::m_previousDuplicate [private]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 19:16:38 2011 for BOSS6.5.5 by  doxygen 1.3.9.1