The Gaudi Framework  v31r0 (aeb156f0)
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 (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 138 of file ContextSpecificPtr.h.

Constructor & Destructor Documentation

template<typename T>
Gaudi::Hive::ContextSpecificData< T >::ContextSpecificData ( proto = {})
inline

Constructor with prototype value.

Definition at line 141 of file ContextSpecificPtr.h.

141 {} ) : m_proto( std::move( proto ) ) {}
T move(T...args)
template<typename T>
Gaudi::Hive::ContextSpecificData< T >::~ContextSpecificData ( )
inline

Destructor.

Definition at line 144 of file ContextSpecificPtr.h.

144 { 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 160 of file ContextSpecificPtr.h.

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

165  {
166  return m_ptr.accumulate( []( const T* p ) { return *p; }, init, op );
167  }
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 183 of file ContextSpecificPtr.h.

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

Definition at line 187 of file ContextSpecificPtr.h.

187  {
188  m_ptr.for_all( [&f]( size_t s, T* p ) { f( s, *p ); } );
189  }
ContextSpecificPtr< T > m_ptr
Internal implementation.
string s
Definition: gaudirun.py:312
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 171 of file ContextSpecificPtr.h.

171  {
172  m_ptr.for_each( [&f]( const T* p ) { f( *p ); } );
173  }
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 177 of file ContextSpecificPtr.h.

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

Definition at line 146 of file ContextSpecificPtr.h.

146  {
147  if ( !m_ptr ) m_ptr = new T( m_proto );
148  return *m_ptr;
149  }
ContextSpecificPtr< T > m_ptr
Internal implementation.
template<typename T>
Gaudi::Hive::ContextSpecificData< T >::operator T & ( ) const
inline

Definition at line 151 of file ContextSpecificPtr.h.

151  {
152  if ( !m_ptr ) m_ptr = new T( m_proto );
153  return *m_ptr;
154  }
ContextSpecificPtr< T > m_ptr
Internal implementation.
template<typename T>
T& Gaudi::Hive::ContextSpecificData< T >::operator= ( const T &  other)
inline

Assignment operator.

Definition at line 157 of file ContextSpecificPtr.h.

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

Member Data Documentation

template<typename T>
T Gaudi::Hive::ContextSpecificData< T >::m_proto = {}
private

Prototype value.

Definition at line 196 of file ContextSpecificPtr.h.

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

Internal implementation.

Definition at line 198 of file ContextSpecificPtr.h.


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