The Gaudi Framework  v28r2p1 (f1a77ff4)
Gaudi::Hive::ContextSpecificData< T > Class Template Reference

Implementation of a context specific storage accessible as a sort of smart reference class. More...

#include <GaudiKernel/ContextSpecificPtr.h>

Collaboration diagram for Gaudi::Hive::ContextSpecificData< T >:

Public Member Functions

 ContextSpecificData ()
 Constructor with default initialization. More...
 
 ContextSpecificData (const T &proto)
 Constructor with prototype value. More...
 
 ~ContextSpecificData ()
 Destructor. More...
 
 operator T & ()
 
 operator T & () const
 
T & operator= (const T &other)
 Assignment operator. More...
 
accumulate (T init) const
 Return the sum of all the contained values using init as first value. More...
 
template<class T1 , class BinaryOperation >
T1 accumulate (T1 init, BinaryOperation op) const
 Return the accumulated result, through the operation 'op', of all the contained values using init as first value. More...
 
template<class F >
void for_each (F f) const
 Call a function on each contained value. More...
 
template<class F >
void for_each (F f)
 Call a function on each contained value. (non-const version) More...
 
template<class F >
void for_all (F f) const
 Call a function on each element, passing slot# as well. More...
 
template<class F >
void for_all (F f)
 

Private Member Functions

 ContextSpecificData (const ContextSpecificData &)=delete
 

Private Attributes

m_proto
 Prototype value. More...
 
ContextSpecificPtr< T > m_ptr
 Internal implementation. More...
 

Detailed Description

template<typename T>
class Gaudi::Hive::ContextSpecificData< T >

Implementation of a context specific storage accessible as a sort of smart reference class.

New values are created from the prototype passed to the constructor.

Definition at line 144 of file ContextSpecificPtr.h.

Constructor & Destructor Documentation

template<typename T>
Gaudi::Hive::ContextSpecificData< T >::ContextSpecificData ( )
inline

Constructor with default initialization.

Definition at line 147 of file ContextSpecificPtr.h.

147 : m_proto() {}
template<typename T>
Gaudi::Hive::ContextSpecificData< T >::ContextSpecificData ( const T &  proto)
inline

Constructor with prototype value.

Definition at line 149 of file ContextSpecificPtr.h.

149 : m_proto(proto) {}
template<typename T>
Gaudi::Hive::ContextSpecificData< T >::~ContextSpecificData ( )
inline

Destructor.

Definition at line 152 of file ContextSpecificPtr.h.

152  {
153  m_ptr.deleteAll();
154  }
ContextSpecificPtr< T > m_ptr
Internal implementation.
template<typename T>
Gaudi::Hive::ContextSpecificData< T >::ContextSpecificData ( const ContextSpecificData< T > &  )
privatedelete

Member Function Documentation

template<typename T>
T Gaudi::Hive::ContextSpecificData< T >::accumulate ( init) const
inline

Return the sum of all the contained values using init as first value.

Definition at line 176 of file ContextSpecificPtr.h.

176  {
177  return accumulate(init, std::plus<T>());
178  }
T accumulate(T init) const
Return the sum of all the contained values using init as first value.
template<typename T>
template<class T1 , class BinaryOperation >
T1 Gaudi::Hive::ContextSpecificData< T >::accumulate ( T1  init,
BinaryOperation  op 
) const
inline

Return the accumulated result, through the operation 'op', of all the contained values using init as first value.

Definition at line 183 of file ContextSpecificPtr.h.

183  {
184  return m_ptr.accumulate([] (const T* p) -> T { return *p; },
185  init, op);
186  }
ContextSpecificPtr< T > m_ptr
Internal implementation.
template<typename T>
template<class F >
void Gaudi::Hive::ContextSpecificData< T >::for_all ( f) const
inline

Call a function on each element, passing slot# as well.

Definition at line 202 of file ContextSpecificPtr.h.

202  {
203  m_ptr.for_all([&f] (size_t s, const T* p) { f(s,*p); });
204  }
ContextSpecificPtr< T > m_ptr
Internal implementation.
string s
Definition: gaudirun.py:245
template<typename T>
template<class F >
void Gaudi::Hive::ContextSpecificData< T >::for_all ( f)
inline

Definition at line 206 of file ContextSpecificPtr.h.

206  {
207  m_ptr.for_all([&f] (size_t s, T* p) { f(s,*p); });
208  }
ContextSpecificPtr< T > m_ptr
Internal implementation.
string s
Definition: gaudirun.py:245
template<typename T>
template<class F >
void Gaudi::Hive::ContextSpecificData< T >::for_each ( f) const
inline

Call a function on each contained value.

Definition at line 190 of file ContextSpecificPtr.h.

190  {
191  m_ptr.for_each([&f] (const T* p) { f(*p); });
192  }
ContextSpecificPtr< T > m_ptr
Internal implementation.
template<typename T>
template<class F >
void Gaudi::Hive::ContextSpecificData< T >::for_each ( f)
inline

Call a function on each contained value. (non-const version)

Definition at line 196 of file ContextSpecificPtr.h.

196  {
197  m_ptr.for_each([&f] (T* p) { f(*p); });
198  }
ContextSpecificPtr< T > m_ptr
Internal implementation.
template<typename T>
Gaudi::Hive::ContextSpecificData< T >::operator T & ( )
inline

Definition at line 156 of file ContextSpecificPtr.h.

156  {
157  if (m_ptr)
158  return *m_ptr;
159  else
160  return *(m_ptr = new T(m_proto));
161  }
ContextSpecificPtr< T > m_ptr
Internal implementation.
template<typename T>
Gaudi::Hive::ContextSpecificData< T >::operator T & ( ) const
inline

Definition at line 163 of file ContextSpecificPtr.h.

163  {
164  if (m_ptr)
165  return *m_ptr;
166  else
167  return *(m_ptr = new T(m_proto));
168  }
ContextSpecificPtr< T > m_ptr
Internal implementation.
template<typename T>
T& Gaudi::Hive::ContextSpecificData< T >::operator= ( const T &  other)
inline

Assignment operator.

Definition at line 171 of file ContextSpecificPtr.h.

171  {
172  return (T&)(*this) = other;
173  }

Member Data Documentation

template<typename T>
T Gaudi::Hive::ContextSpecificData< T >::m_proto
private

Prototype value.

Definition at line 217 of file ContextSpecificPtr.h.

template<typename T>
ContextSpecificPtr<T> Gaudi::Hive::ContextSpecificData< T >::m_ptr
mutableprivate

Internal implementation.

Definition at line 219 of file ContextSpecificPtr.h.


The documentation for this class was generated from the following file: