Gaudi Framework, version v22r0

Home   Generated: 9 Feb 2011

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 "GaudiKernel/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 // ============================================================================
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines

Generated at Wed Feb 9 16:24:52 2011 for Gaudi Framework, version v22r0 by Doxygen version 1.6.2 written by Dimitri van Heesch, © 1997-2004