/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Event/DecayChain/DecayChain-00-00-03-slc6tag/DecayChain/Iterator/MuteWholeCandidateItr.h

Go to the documentation of this file.
00001 #ifndef DCHAIN_MUTEWHOLECANDIDATEITR_H
00002 #define DCHAIN_MUTEWHOLECANDIDATEITR_H
00003 // -*- C++ -*-
00004 //
00005 // Package:     DChain
00006 // Module:      MuteWholeCandidateItr
00007 // 
00008 // Description: Iterator through a entire LabeledList.
00009 //
00010 // Usage:
00011 //    <usage>
00012 //
00013 // Author:      Simon Patton
00014 // Created:     Wed Sep 11 21:51:25 EDT 1996
00015 // $Id: MuteWholeCandidateItr.h,v 1.1.1.1 2009/03/03 06:06:56 maqm Exp $
00016 //
00017 // Revision history
00018 //
00019 // $Log: MuteWholeCandidateItr.h,v $
00020 // Revision 1.1.1.1  2009/03/03 06:06:56  maqm
00021 // first import of DecayChain
00022 //
00023 // Revision 1.1  2006/01/11 20:28:17  cdj
00024 // massive class renaming, addition of [] for selection and unit tests
00025 //
00026 //
00027 
00028 // system include files
00029 
00030 // user include files
00031 #include "DecayChain/Iterator/candidateitr.h" // distance
00032 #include "DecayChain/Element/LabeledCandidate.h"
00033 //#include "DecayChain/List/IndexedLabeledCandidates.h"
00034 
00035 // forward declarations
00036 namespace dchain {
00037 
00038 template < class CandidateClass > class IndexedLabeledCandidates ;
00039 template < class CandidateClass> class LabeledCandidate ;
00040 template < class CandidateClass > class LabeledCandidateList ;
00041 
00042 template < class CandidateClass >
00043 class MuteWholeCandidateItr
00044 {
00045       // friend classses and functions
00046       friend class LabeledCandidateList< CandidateClass > ;
00047 
00048    public:
00049       // constants, enums and typedefs
00050       typedef const LabeledCandidate<CandidateClass> value_type;
00051       typedef candidateitr::size_type distance_type;
00052       typedef candidateitr::size_type size_type;
00053       typedef candidateitr::difference_type difference_type;
00054       typedef std::random_access_iterator_tag iterator_category;
00055       typedef const LabeledCandidate<CandidateClass>* pointer;
00056       typedef const LabeledCandidate<CandidateClass>& reference;
00057 
00058       // Constructors and destructor
00059       MuteWholeCandidateItr( const MuteWholeCandidateItr< CandidateClass >& aOtherItr ) ;
00060       virtual ~MuteWholeCandidateItr() {}
00061 
00062       // assignment operator(s)
00063       const MuteWholeCandidateItr< CandidateClass >& operator=( const MuteWholeCandidateItr< CandidateClass >& aOtherItr ) ;
00064 
00065       // member functions
00066       MuteWholeCandidateItr< CandidateClass >& operator++() ;
00067       MuteWholeCandidateItr< CandidateClass > operator++( int ) ;
00068       MuteWholeCandidateItr< CandidateClass >& operator--() ;
00069       MuteWholeCandidateItr< CandidateClass > operator--( int ) ;
00070       MuteWholeCandidateItr< CandidateClass >& operator+=( difference_type n ) ;
00071       MuteWholeCandidateItr< CandidateClass > operator+( difference_type n ) ;
00072       MuteWholeCandidateItr< CandidateClass >& operator-=( difference_type n ) ;
00073       MuteWholeCandidateItr< CandidateClass > operator-( difference_type n ) ;
00074 
00075       // const member functions
00076       LabeledCandidate< CandidateClass >& operator*() const ;
00077       LabeledCandidate< CandidateClass >& operator[]( size_type n ) const ;
00078       difference_type operator-( const MuteWholeCandidateItr< CandidateClass >& aOtherItr ) const ;
00079       bool operator==( const MuteWholeCandidateItr< CandidateClass >& aOtherItr ) const ;
00080       bool operator!=( const MuteWholeCandidateItr< CandidateClass >& aOtherItr ) const ;
00081       bool operator<( const MuteWholeCandidateItr< CandidateClass >& aOtherItr ) const ;
00082       bool operator>( const MuteWholeCandidateItr< CandidateClass >& aOtherItr ) const ;
00083       bool operator>=( const MuteWholeCandidateItr< CandidateClass >& aOtherItr ) const ;
00084       bool operator<=( const MuteWholeCandidateItr< CandidateClass >& aOtherItr ) const ;
00085 
00086       // static member functions
00087 
00088    protected:
00089       // Constructors and destructor
00090       MuteWholeCandidateItr( IndexedLabeledCandidates< CandidateClass >* aList ,
00091                          const size_type aIndex ) ;
00092 
00093       // protected member functions
00094 
00095       // protected const member functions
00096       IndexedLabeledCandidates< CandidateClass >* indexedCandidates() const ;
00097       size_type index() const ;
00098 
00099    private:
00100       // Constructors and destructor
00101       MuteWholeCandidateItr() ; // stop default
00102 
00103       // private member functions
00104 
00105       // private const member functions
00106 
00107       // data members
00108       IndexedLabeledCandidates< CandidateClass >* m_indexedCandidates ;
00109       size_type m_index ;
00110 
00111       // static data members
00112 
00113 } ;
00114 
00115 template < class CandidateClass >
00116 LabeledCandidate< CandidateClass >* value_type( const MuteWholeCandidateItr< CandidateClass >& ) ;
00117 
00118 // inline function definitions
00119 
00120 // user include files
00121 
00122 //
00123 // forward definitions of inline functions
00124 //
00125 
00126 template < class CandidateClass >
00127 inline
00128 IndexedLabeledCandidates< CandidateClass >* MuteWholeCandidateItr< CandidateClass >::indexedCandidates() const
00129 {
00130    return ( m_indexedCandidates ) ;
00131 }
00132 
00133 template < class CandidateClass >
00134 inline
00135 typename MuteWholeCandidateItr<CandidateClass>::size_type MuteWholeCandidateItr< CandidateClass >::index() const
00136 {
00137    return ( m_index ) ;
00138 }
00139 
00140 //
00141 // constructors and destructor
00142 //
00143 
00144 template < class CandidateClass >
00145 inline
00146 MuteWholeCandidateItr< CandidateClass >::MuteWholeCandidateItr( const MuteWholeCandidateItr< CandidateClass >& aOtherItr ) :
00147    m_indexedCandidates( aOtherItr.indexedCandidates() ) ,
00148    m_index( aOtherItr.index() )
00149 {
00150 }
00151 
00152 template < class CandidateClass >
00153 inline
00154 MuteWholeCandidateItr< CandidateClass >::MuteWholeCandidateItr( IndexedLabeledCandidates< CandidateClass >* aList ,
00155                                                     const size_type aIndex ) :
00156    m_indexedCandidates( (IndexedLabeledCandidates< CandidateClass >*)aList ) ,
00157    m_index( aIndex )
00158 {   
00159 }
00160 
00161 //
00162 // assignment operators
00163 //
00164 
00165 template < class CandidateClass >
00166 inline
00167 const MuteWholeCandidateItr< CandidateClass >& MuteWholeCandidateItr< CandidateClass >::operator=( const MuteWholeCandidateItr< CandidateClass >& aOtherItr )
00168 {
00169    m_indexedCandidates = aOtherItr.indexedCandidates() ;
00170    m_index = aOtherItr.index() ;
00171    return ( *this ) ;
00172 }
00173 
00174 //
00175 // member functions
00176 //
00177 
00178 template < class CandidateClass >
00179 inline
00180 MuteWholeCandidateItr< CandidateClass >& MuteWholeCandidateItr< CandidateClass >::operator++()
00181 {
00182    ++m_index ;
00183    return ( *this ) ;
00184 }
00185 
00186 template < class CandidateClass >
00187 inline
00188 MuteWholeCandidateItr< CandidateClass > MuteWholeCandidateItr< CandidateClass >::operator++( int )
00189 {
00190    MuteWholeCandidateItr tmp( *this ) ;
00191    ++m_index ;
00192    return ( tmp ) ;
00193 }
00194 
00195 template < class CandidateClass >
00196 inline
00197 MuteWholeCandidateItr< CandidateClass >& MuteWholeCandidateItr< CandidateClass >::operator--()
00198 {
00199    --m_index ;
00200    return ( *this ) ;
00201 }
00202 
00203 template < class CandidateClass >
00204 inline
00205 MuteWholeCandidateItr< CandidateClass > MuteWholeCandidateItr< CandidateClass >::operator--( int )
00206 {
00207    MuteWholeCandidateItr tmp( *this ) ;
00208    --m_index ;
00209    return ( tmp ) ;
00210 }
00211 
00212 template < class CandidateClass >
00213 inline
00214 MuteWholeCandidateItr< CandidateClass >& MuteWholeCandidateItr< CandidateClass >::operator+=( difference_type n )
00215 {
00216    m_index += n ;
00217    return( *this ) ;
00218 }
00219 
00220 template < class CandidateClass >
00221 inline
00222 MuteWholeCandidateItr< CandidateClass > MuteWholeCandidateItr< CandidateClass >::operator+( difference_type n )
00223 {
00224    MuteWholeCandidateItr tmp( *this ) ;
00225    return ( tmp += n ) ;
00226 }
00227 
00228 template < class CandidateClass >
00229 inline
00230 MuteWholeCandidateItr< CandidateClass >& MuteWholeCandidateItr< CandidateClass >::operator-=( difference_type n )
00231 {
00232    m_index -= n ;
00233    return( *this ) ;
00234 }
00235 
00236 template < class CandidateClass >
00237 inline
00238 MuteWholeCandidateItr< CandidateClass > MuteWholeCandidateItr< CandidateClass >::operator-( difference_type n )
00239 {
00240    MuteWholeCandidateItr tmp( *this ) ;
00241    return ( tmp -= n ) ;
00242 }
00243 
00244 //
00245 // const member functions
00246 //
00247 
00248 template < class CandidateClass >
00249 inline
00250 LabeledCandidate< CandidateClass >& MuteWholeCandidateItr< CandidateClass >::operator*() const
00251 {
00252    return ( (*m_indexedCandidates).labeledCandidateClass( m_index ) ) ;
00253 }
00254 
00255 template < class CandidateClass >
00256 inline
00257 LabeledCandidate< CandidateClass >& MuteWholeCandidateItr< CandidateClass >::operator[]( size_type n ) const
00258 {
00259    return ( (*m_indexedCandidates).labeledCandidateClass( m_index + n ) ) ;
00260 }
00261 
00262 template < class CandidateClass >
00263 inline
00264 typename MuteWholeCandidateItr<CandidateClass>::difference_type MuteWholeCandidateItr< CandidateClass >::operator-( const MuteWholeCandidateItr< CandidateClass >& aOtherItr ) const
00265 {
00266    return ( m_index - aOtherItr.index() ) ;
00267 }
00268 
00269 template < class CandidateClass >
00270 inline
00271 bool MuteWholeCandidateItr< CandidateClass >::operator==( const MuteWholeCandidateItr< CandidateClass >& aOtherItr ) const
00272 {
00273    return ( ( m_index == aOtherItr.index() ) &&
00274             ( m_indexedCandidates == aOtherItr.indexedCandidates() ) ) ;
00275 }
00276 
00277 template < class CandidateClass >
00278 inline
00279 bool MuteWholeCandidateItr< CandidateClass >::operator!=( const MuteWholeCandidateItr< CandidateClass >& aOtherItr ) const
00280 {
00281    return ( ( m_index != aOtherItr.index() ) ||
00282             ( m_indexedCandidates != aOtherItr.indexedCandidates() ) ) ;
00283 }
00284 
00285 template < class CandidateClass >
00286 inline
00287 bool MuteWholeCandidateItr< CandidateClass >::operator<( const MuteWholeCandidateItr< CandidateClass >& aOtherItr ) const
00288 {
00289    return ( ( m_index < aOtherItr.index() ) &&
00290             ( m_indexedCandidates == aOtherItr.indexedCandidates() ) ) ;
00291 }
00292 
00293 template < class CandidateClass >
00294 inline
00295 bool MuteWholeCandidateItr< CandidateClass >::operator>( const MuteWholeCandidateItr< CandidateClass >& aOtherItr ) const 
00296 {
00297    return ( ( m_index > aOtherItr.index() ) &&
00298             ( m_indexedCandidates == aOtherItr.indexedCandidates() ) ) ;
00299 }
00300 
00301 template < class CandidateClass >
00302 inline
00303 bool MuteWholeCandidateItr< CandidateClass >::operator>=( const MuteWholeCandidateItr< CandidateClass >& aOtherItr ) const
00304 {
00305    return ( ( m_index >= aOtherItr.index() ) &&
00306             ( m_indexedCandidates == aOtherItr.indexedCandidates() ) ) ;
00307 }
00308 
00309 template < class CandidateClass >
00310 inline
00311 bool MuteWholeCandidateItr< CandidateClass >::operator<=( const MuteWholeCandidateItr< CandidateClass >& aOtherItr ) const
00312 {
00313    return ( ( m_index <= aOtherItr.index() ) &&
00314             ( m_indexedCandidates == aOtherItr.indexedCandidates() ) ) ;
00315 }
00316 
00317 template < class CandidateClass >
00318 inline
00319 LabeledCandidate< CandidateClass >* value_type( const MuteWholeCandidateItr< CandidateClass >& )
00320 {
00321    return ( (CandidateClass*)0 ) ;
00322 }
00323 
00324 }
00325 
00326 #endif /* DCHAIN_MUTEWHOLECANDIDATEITR_H */

Generated on Tue Nov 29 22:58:22 2016 for BOSS_7.0.2 by  doxygen 1.4.7