The Gaudi Framework  v30r4 (9b837755)
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 150 of file ContextSpecificPtr.h.

Constructor & Destructor Documentation

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

Constructor with prototype value.

Definition at line 154 of file ContextSpecificPtr.h.

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

Destructor.

Definition at line 157 of file ContextSpecificPtr.h.

157 { 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 175 of file ContextSpecificPtr.h.

175 { 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 180 of file ContextSpecificPtr.h.

181  {
182  return m_ptr.accumulate( []( const T* p ) { return *p; }, init, op );
183  }
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 201 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:253
template<typename T>
template<class F >
void Gaudi::Hive::ContextSpecificData< T >::for_all ( f)
inline

Definition at line 206 of file ContextSpecificPtr.h.

207  {
208  m_ptr.for_all( [&f]( size_t s, T* p ) { f( s, *p ); } );
209  }
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 187 of file ContextSpecificPtr.h.

188  {
189  m_ptr.for_each( [&f]( const T* p ) { f( *p ); } );
190  }
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 194 of file ContextSpecificPtr.h.

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

Definition at line 159 of file ContextSpecificPtr.h.

160  {
161  if ( !m_ptr ) m_ptr = new T( m_proto );
162  return *m_ptr;
163  }
ContextSpecificPtr< T > m_ptr
Internal implementation.
template<typename T>
Gaudi::Hive::ContextSpecificData< T >::operator T & ( ) const
inline

Definition at line 165 of file ContextSpecificPtr.h.

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

Assignment operator.

Definition at line 172 of file ContextSpecificPtr.h.

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

Member Data Documentation

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

Prototype value.

Definition at line 216 of file ContextSpecificPtr.h.

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

Internal implementation.

Definition at line 218 of file ContextSpecificPtr.h.


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