| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

NamedRange.h

Go to the documentation of this file.
00001 // $Id: NamedRange.h,v 1.1 2008/10/10 08:06:32 marcocle Exp $
00002 // ============================================================================
00003 #ifndef GAUDI_NAMEDRANGE_H 
00004 #define GAUDI_NAMEDRANGE_H 1
00005 // ============================================================================
00006 // Include files
00007 // ============================================================================
00008 // STD & STL 
00009 // ============================================================================
00010 #include <string>
00011 // ============================================================================
00012 // GaudiUtils 
00013 // ============================================================================
00014 #include "GaudiUtils/Range.h"
00015 // ============================================================================
00031 // ============================================================================
00032 namespace Gaudi
00033 {
00034   // ==========================================================================
00044   template <class TYPE>
00045   class NamedRange_ : public Gaudi::Range_<TYPE> 
00046   {
00047   protected:
00048     // ========================================================================
00050     typedef Gaudi::Range_<TYPE>  Base ;
00052     typedef NamedRange_<TYPE>   Self ;
00053     // ========================================================================
00054   public:
00055     // ========================================================================
00057     NamedRange_() : Base() , m_name() {};
00063     NamedRange_( typename Base::iterator ibegin    , 
00064                  typename Base::iterator iend      , 
00065                  const std::string&      name = "" ) 
00066       : Base   ( ibegin , iend ) , m_name ( name ) {} ;
00071     NamedRange_( const Base&        base      , 
00072                  const std::string& name = "" ) 
00073       : Base   ( base ) , m_name ( name ) {};
00078     NamedRange_( const typename Base::_Base& base      , 
00079                  const std::string&          name = "" ) 
00080       : Base   ( base ) , m_name ( name ) {};
00085     NamedRange_( const typename Base::Container& base      , 
00086                  const std::string&              name = "" ) 
00087       : Base   ( base ) , m_name ( name ) {};
00088     /* constructor of empty range/sequence
00089      * @param ibegin  iterator to begin of empty sequence
00090      *  @param name name of the range 
00091      */
00092     NamedRange_( typename Base::iterator ibegin      , 
00093                  const std::string&      name   = "" ) 
00094       : Base   ( ibegin , ibegin ) , m_name ( name ) {};
00096     ~NamedRange_(){};
00097     // ========================================================================
00098   public:
00099     // ========================================================================
00101     inline NamedRange_ slice( long index1 , long index2 ) const 
00102     {  return NamedRange_( Base::slice ( index1 , index2 ) , m_name ) ; }
00103     // ========================================================================
00104   public:
00105     // ========================================================================
00107     const std::string& name() const { return m_name ; }
00109     void  setName( const std::string& value ) { m_name = value ; }
00110     // ========================================================================
00111   private:    
00112     // ========================================================================
00114     std::string m_name ; // the name associated to the range
00115   };
00116   // ==========================================================================
00130   template <class CONTAINER>
00131   inline 
00132   NamedRange_<CONTAINER> 
00133   range ( const CONTAINER&   cnt  , 
00134           const std::string& name ) 
00135   { return NamedRange_<CONTAINER>( cnt.begin() , cnt.end() , name ) ; }
00136   // ==========================================================================
00137 } // end of namespace Gaudi
00138 // ============================================================================
00139 // The END 
00140 // ============================================================================
00141 #endif // GAUDI_NAMEDRANGE_H
00142 // ============================================================================
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 19:58:04 2011 for GaudiUtils by doxygen 1.4.7