NamedRange.h
Go to the documentation of this file.
1 #ifndef GAUDI_NAMEDRANGE_H
2 #define GAUDI_NAMEDRANGE_H 1
3 // ============================================================================
4 // Include files
5 // ============================================================================
6 // STD & STL
7 // ============================================================================
8 #include <string>
9 // ============================================================================
10 // GaudiUtils
11 // ============================================================================
12 #include "GaudiKernel/Range.h"
13 // ============================================================================
29 // ============================================================================
30 namespace Gaudi
31 {
32  // ==========================================================================
42  template <class TYPE>
43  class NamedRange_ : public Gaudi::Range_<TYPE>
44  {
45  protected:
46  // ========================================================================
51  // ========================================================================
52  public:
53  // ========================================================================
55  NamedRange_() = default;
61  NamedRange_( typename Base::iterator ibegin ,
62  typename Base::iterator iend ,
63  std::string name = "" )
64  : Base ( ibegin , iend ) , m_name ( std::move(name) ) {} ;
69  NamedRange_( const Base& base ,
70  std::string name = "" )
71  : Base ( base ) , m_name ( std::move(name) ) {};
76  NamedRange_( const typename Base::_Base& base ,
77  std::string name = "" )
78  : Base ( base ) , m_name ( std::move(name) ) {};
83  NamedRange_( const typename Base::Container& base ,
84  std::string name = "" )
85  : Base ( base ) , m_name ( std::move(name) ) {};
86  /* constructor of empty range/sequence
87  * @param ibegin iterator to begin of empty sequence
88  * @param name name of the range
89  */
90  NamedRange_( typename Base::iterator ibegin ,
91  std::string name = "" )
92  : Base ( ibegin , ibegin ) , m_name ( std::move(name) ) {};
94  ~NamedRange_() = default;
95  // ========================================================================
96  public:
97  // ========================================================================
99  inline NamedRange_ slice( long index1 , long index2 ) const
100  { return NamedRange_( Base::slice ( index1 , index2 ) , m_name ) ; }
101  // ========================================================================
102  public:
103  // ========================================================================
105  const std::string& name() const { return m_name ; }
107  void setName( const std::string& value ) { m_name = value ; }
108  // ========================================================================
109  private:
110  // ========================================================================
112  std::string m_name ; // the name associated to the range
113  };
114  // ==========================================================================
127  template <class CONTAINER>
128  inline
130  range ( const CONTAINER& cnt ,
131  std::string name )
132  { return NamedRange_<CONTAINER>( cnt.begin() , cnt.end() , std::move(name) ) ; }
133  // ==========================================================================
134 } // end of namespace Gaudi
135 // ============================================================================
136 // The END
137 // ============================================================================
138 #endif // GAUDI_NAMEDRANGE_H
139 // ============================================================================
void setName(const std::string &value)
set the name of the range
Definition: NamedRange.h:107
NamedRange_< TYPE > Self
"self"-type
Definition: NamedRange.h:50
NamedRange_(const Base &base, std::string name="")
constructor from the base class
Definition: NamedRange.h:69
NamedRange_(typename Base::iterator ibegin, std::string name="")
Definition: NamedRange.h:90
STL namespace.
NamedRange_(const typename Base::Container &base, std::string name="")
constructor from the base class
Definition: NamedRange.h:83
STL class.
~NamedRange_()=default
destructor
NamedRange_< CONTAINER > range(const CONTAINER &cnt, std::string name)
simple function to create the named range form arbitrary container
Definition: NamedRange.h:130
const std::string & name() const
get the name of the range
Definition: NamedRange.h:105
This file has been imported from LoKi project "C++ ToolKit for Smart and Friendly Physics Analysis" ...
NamedRange_(const typename Base::_Base &base, std::string name="")
constructor from the base class
Definition: NamedRange.h:76
NamedRange_ slice(long index1, long index2) const
get a "slice" of a range, in Python style
Definition: NamedRange.h:99
T move(T...args)
NamedRange_(typename Base::iterator ibegin, typename Base::iterator iend, std::string name="")
Constructor.
Definition: NamedRange.h:61
const Base & base() const
conversion operator to the std::pair
Definition: Range.h:226
std::string m_name
the name, associated to the range
Definition: NamedRange.h:112
Gaudi::Range_< TYPE > Base
the base class
Definition: NamedRange.h:48
Useful class for representation of "sequence" of the objects through the range of valid iterators...
Definition: Range.h:75
NamedRange_()=default
default constructor
Helper functions to set/get the application return code.
Definition: __init__.py:1