00001 #ifndef DCHAIN_INDEXEDLABELEDCANDIDATES_H 00002 #define DCHAIN_INDEXEDLABELEDCANDIDATES_H 00003 // -*- C++ -*- 00004 // 00005 // Package: DChain 00006 // Module: IndexedLabeledCandidates 00007 // 00008 // Description: Interface used by Candidate iterators 00009 // 00010 // Usage: 00011 // <usage> 00012 // 00013 // Author: Simon Patton 00014 // Created: Fri Sep 13 17:58:11 EDT 1996 00015 // $Id: IndexedLabeledCandidates.h,v 1.1.1.1 2009/03/03 06:06:56 maqm Exp $ 00016 // 00017 // Revision history 00018 // 00019 // $Log: IndexedLabeledCandidates.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:27 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/Element/ReferenceCount.h" // superclass 00032 00033 // forward declarations 00034 namespace dchain { 00035 template < class CandidateClass > class LabeledCandidate ; 00036 template < class CandidateClass > class MuteWholeCandidateItr ; 00037 template < class CandidateClass > class WholeCandidateItr ; 00038 template < class CandidateClass > class PartialCandidateItr ; 00039 00040 template < class CandidateClass > 00041 class IndexedLabeledCandidates 00042 : public ReferenceCount 00043 { 00044 // friend classses and functions 00045 friend class dchain::MuteWholeCandidateItr< CandidateClass > ; 00046 friend class dchain::WholeCandidateItr< CandidateClass > ; 00047 friend class dchain::PartialCandidateItr< CandidateClass > ; 00048 00049 public: 00050 // constants, enums and typedefs 00051 00052 // Constructors and destructor 00053 IndexedLabeledCandidates() ; 00054 virtual ~IndexedLabeledCandidates() ; 00055 00056 // member functions 00057 00058 // const member functions 00059 virtual int size() const = 0 ; 00060 00061 // static member functions 00062 00063 protected: 00064 // protected member functions 00065 virtual dchain::LabeledCandidate< CandidateClass >& labeledCandidateClass( const int aIndex ) = 0 ; 00066 00067 // protected const member functions 00068 virtual const dchain::LabeledCandidate< CandidateClass >& labeledCandidateClass( const int aIndex ) const = 0 ; 00069 00070 private: 00071 // Constructors and destructor 00072 IndexedLabeledCandidates( const IndexedLabeledCandidates< CandidateClass >& ) ; // stop default 00073 00074 // assignment operator(s) 00075 const IndexedLabeledCandidates& operator=( const IndexedLabeledCandidates< CandidateClass >& ) ; // stop default 00076 00077 // private member functions 00078 00079 // private const member functions 00080 00081 // data members 00082 00083 // static data members 00084 00085 } ; 00086 00087 } 00088 // inline function definitions 00089 00090 // function definitions 00091 # include "DecayChain/List/Template/IndexedLabeledCandidates.cc" 00092 00093 #endif // DCHAIN_INDEXEDLABELEDCANDIDATES_H