CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator > Class Template Reference

#include <Callback.h>

Inheritance diagram for edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >:
edm::eventsetup::CallbackBase

Public Types

using method_type = TReturn(T::*)(const TRecord &)
 

Public Member Functions

 Callback (T *iProd, method_type iMethod, const TDecorator &iDec=TDecorator())
 
template<class DataT >
void holdOntoPointer (DataT *iData)
 
void newRecordComing ()
 
void operator() (const TRecord &iRecord)
 
template<class RemainingContainerT , class DataT , class ProductsT >
void setData (ProductsT &iProducts)
 
void storeReturnedValues (TReturn iReturn)
 
- Public Member Functions inherited from edm::eventsetup::CallbackBase
virtual ~CallbackBase ()
 

Private Member Functions

 Callback (const Callback &)=delete
 
const Callbackoperator= (const Callback &)=delete
 

Private Attributes

TDecorator decorator_
 
method_type method_
 
edm::propagate_const< T * > producer_
 
std::array< void *, produce::size< TReturn >::value > proxyData_
 
bool wasCalledForThisRecord_
 

Detailed Description

template<typename T, typename TReturn, typename TRecord, typename TDecorator = CallbackSimpleDecorator<TRecord>>
class edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >

Definition at line 49 of file Callback.h.

Member Typedef Documentation

template<typename T , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
using edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::method_type = TReturn (T ::*)(const TRecord&)

Definition at line 51 of file Callback.h.

Constructor & Destructor Documentation

template<typename T , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::Callback ( T iProd,
method_type  iMethod,
const TDecorator &  iDec = TDecorator() 
)
inline

Definition at line 53 of file Callback.h.

55  :
56  proxyData_{},
57  producer_(iProd),
58  method_(iMethod),
60  decorator_(iDec) {}
std::array< void *, produce::size< TReturn >::value > proxyData_
Definition: Callback.h:108
edm::propagate_const< T * > producer_
Definition: Callback.h:109
template<typename T , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::Callback ( const Callback< T, TReturn, TRecord, TDecorator > &  )
privatedelete

Member Function Documentation

template<typename T , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
template<class DataT >
void edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::holdOntoPointer ( DataT *  iData)
inline

Definition at line 80 of file Callback.h.

80  {
82  }
std::array< void *, produce::size< TReturn >::value > proxyData_
Definition: Callback.h:108
template<typename T , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
void edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::newRecordComing ( )
inline

Definition at line 99 of file Callback.h.

99  {
100  wasCalledForThisRecord_ = false;
101  }
template<typename T , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
void edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::operator() ( const TRecord &  iRecord)
inline

Definition at line 70 of file Callback.h.

70  {
72  decorator_.pre(iRecord);
73  storeReturnedValues((producer_->*method_)(iRecord));
75  decorator_.post(iRecord);
76  }
77  }
void storeReturnedValues(TReturn iReturn)
Definition: Callback.h:84
edm::propagate_const< T * > producer_
Definition: Callback.h:109
template<typename T , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
const Callback& edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::operator= ( const Callback< T, TReturn, TRecord, TDecorator > &  )
privatedelete
template<typename T , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
template<class RemainingContainerT , class DataT , class ProductsT >
void edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::setData ( ProductsT &  iProducts)
inline

Definition at line 91 of file Callback.h.

References constexpr, edm::eventsetup::moveFromTo(), and groupFilesInBlocks::temp.

91  {
92  DataT* temp = reinterpret_cast< DataT*>(proxyData_[produce::find_index<TReturn,DataT>::value]) ;
93  if(nullptr != temp) { moveFromTo(iProducts, *temp); }
94  if constexpr( not std::is_same_v<produce::Null,RemainingContainerT> ) {
95  setData<typename RemainingContainerT::head_type,
96  typename RemainingContainerT::tail_type>(iProducts);
97  }
98  }
#define constexpr
std::array< void *, produce::size< TReturn >::value > proxyData_
Definition: Callback.h:108
void moveFromTo(FromT &iFrom, ToT &iTo)
void setData(ProductsT &iProducts)
Definition: Callback.h:91
template<typename T , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
void edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::storeReturnedValues ( TReturn  iReturn)
inline

Definition at line 84 of file Callback.h.

84  {
85  //std::cout <<" storeReturnedValues "<< iReturn <<" " <<iReturn->value_ <<std::endl;
87  setData<typename type::head_type, typename type::tail_type>(iReturn);
88  }
type
Definition: HCALResponse.h:21

Member Data Documentation

template<typename T , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
TDecorator edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::decorator_
private

Definition at line 112 of file Callback.h.

template<typename T , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
method_type edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::method_
private

Definition at line 110 of file Callback.h.

template<typename T , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
edm::propagate_const<T*> edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::producer_
private

Definition at line 109 of file Callback.h.

template<typename T , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
std::array<void*, produce::size< TReturn >::value> edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::proxyData_
private

Definition at line 108 of file Callback.h.

template<typename T , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
bool edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::wasCalledForThisRecord_
private

Definition at line 111 of file Callback.h.