The Gaudi Framework  v36r16 (ea80daf8)
Gaudi::Hive::ContextSpecificData< T > Class Template Reference

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

#include </builds/gaudi/Gaudi/GaudiKernel/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 156 of file ContextSpecificPtr.h.

Constructor & Destructor Documentation

◆ ContextSpecificData() [1/2]

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

Constructor with prototype value.

Definition at line 159 of file ContextSpecificPtr.h.

159 {} ) : m_proto( std::move( proto ) ) {}

◆ ~ContextSpecificData()

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

Destructor.

Definition at line 162 of file ContextSpecificPtr.h.

162 { m_ptr.deleteAll(); }

◆ ContextSpecificData() [2/2]

template<typename T >
Gaudi::Hive::ContextSpecificData< T >::ContextSpecificData ( const ContextSpecificData< T > &  )
privatedelete

Member Function Documentation

◆ accumulate() [1/2]

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 178 of file ContextSpecificPtr.h.

178 { return accumulate( init, std::plus<>() ); }

◆ accumulate() [2/2]

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 ) { return *p; }, init, op );
185  }

◆ for_all() [1/2]

template<typename T >
template<class F >
void Gaudi::Hive::ContextSpecificData< T >::for_all ( f)
inline

Definition at line 205 of file ContextSpecificPtr.h.

205  {
206  m_ptr.for_all( [&f]( size_t s, T* p ) { f( s, *p ); } );
207  }

◆ for_all() [2/2]

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 201 of file ContextSpecificPtr.h.

201  {
202  m_ptr.for_all( [&f]( size_t s, const T* p ) { f( s, *p ); } );
203  }

◆ for_each() [1/2]

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 195 of file ContextSpecificPtr.h.

195  {
196  m_ptr.for_each( [&f]( T* p ) { f( *p ); } );
197  }

◆ for_each() [2/2]

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 189 of file ContextSpecificPtr.h.

189  {
190  m_ptr.for_each( [&f]( const T* p ) { f( *p ); } );
191  }

◆ operator T&() [1/2]

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

Definition at line 164 of file ContextSpecificPtr.h.

164  {
165  if ( !m_ptr ) m_ptr = new T( m_proto );
166  return *m_ptr;
167  }

◆ operator T&() [2/2]

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

Definition at line 169 of file ContextSpecificPtr.h.

169  {
170  if ( !m_ptr ) m_ptr = new T( m_proto );
171  return *m_ptr;
172  }

◆ operator=()

template<typename T >
T& Gaudi::Hive::ContextSpecificData< T >::operator= ( const T &  other)
inline

Assignment operator.

Definition at line 175 of file ContextSpecificPtr.h.

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

Member Data Documentation

◆ m_proto

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

Prototype value.

Definition at line 214 of file ContextSpecificPtr.h.

◆ m_ptr

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

Internal implementation.

Definition at line 216 of file ContextSpecificPtr.h.


The documentation for this class was generated from the following file:
std::move
T move(T... args)
Gaudi::Hive::ContextSpecificData::accumulate
T accumulate(T init) const
Return the sum of all the contained values using init as first value.
Definition: ContextSpecificPtr.h:178
gaudirun.s
string s
Definition: gaudirun.py:348
Gaudi::Hive::ContextSpecificData::m_ptr
ContextSpecificPtr< T > m_ptr
Internal implementation.
Definition: ContextSpecificPtr.h:216
std::plus
Gaudi::Hive::ContextSpecificData::m_proto
T m_proto
Prototype value.
Definition: ContextSpecificPtr.h:214