The Gaudi Framework  v29r0 (ff2e7097)
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 154 of file ContextSpecificPtr.h.

Constructor & Destructor Documentation

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

Constructor with default initialization.

Definition at line 158 of file ContextSpecificPtr.h.

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

Constructor with prototype value.

Definition at line 160 of file ContextSpecificPtr.h.

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

Destructor.

Definition at line 163 of file ContextSpecificPtr.h.

163 { m_ptr.deleteAll(); }
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 185 of file ContextSpecificPtr.h.

185 { return accumulate( init, std::plus<T>() ); }
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 190 of file ContextSpecificPtr.h.

191  {
192  return m_ptr.accumulate( []( const T* p ) -> T { return *p; }, init, op );
193  }
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 211 of file ContextSpecificPtr.h.

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

Definition at line 216 of file ContextSpecificPtr.h.

217  {
218  m_ptr.for_all( [&f]( size_t s, T* p ) { f( s, *p ); } );
219  }
ContextSpecificPtr< T > m_ptr
Internal implementation.
string s
Definition: gaudirun.py:253
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 197 of file ContextSpecificPtr.h.

198  {
199  m_ptr.for_each( [&f]( const T* p ) { f( *p ); } );
200  }
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 204 of file ContextSpecificPtr.h.

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

Definition at line 165 of file ContextSpecificPtr.h.

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

Definition at line 173 of file ContextSpecificPtr.h.

174  {
175  if ( m_ptr )
176  return *m_ptr;
177  else
178  return *( m_ptr = new T( m_proto ) );
179  }
ContextSpecificPtr< T > m_ptr
Internal implementation.
template<typename T>
T& Gaudi::Hive::ContextSpecificData< T >::operator= ( const T &  other)
inline

Assignment operator.

Definition at line 182 of file ContextSpecificPtr.h.

182 { return (T&)( *this ) = other; }

Member Data Documentation

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

Prototype value.

Definition at line 226 of file ContextSpecificPtr.h.

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

Internal implementation.

Definition at line 228 of file ContextSpecificPtr.h.


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