CMS 3D CMS Logo

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

List of all members.

Public Types

typedef TReturn(T::* method_type )(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, const RemainingContainerT *, const DataT *)
template<class DataT , class ProductsT >
void setData (ProductsT &iProducts, const produce::Null *, const DataT *)
void storeReturnedValues (TReturn iReturn)

Private Member Functions

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

Private Attributes

TDecorator decorator_
method_type method_
Tproducer_
std::vector< void * > 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 47 of file Callback.h.


Member Typedef Documentation

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

Definition at line 49 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 51 of file Callback.h.

                                                          :
            proxyData_(produce::size< TReturn >::value, static_cast<void*>(nullptr)),
            producer_(iProd), 
            method_(iMethod),
            wasCalledForThisRecord_(false),
            decorator_(iDec) {}
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 > &  ) [private]

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]
template<typename T , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
void edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::newRecordComing ( ) [inline]
template<typename T , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
void edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::operator() ( const TRecord &  iRecord) [inline]
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 > &  ) [private]
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,
const RemainingContainerT *  ,
const DataT *   
) [inline]

Definition at line 89 of file Callback.h.

References edm::eventsetup::copyFromTo(), edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::proxyData_, and groupFilesInBlocks::temp.

Referenced by edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::storeReturnedValues().

                                                                                         {
               DataT* temp = reinterpret_cast< DataT*>(proxyData_[produce::find_index<TReturn,DataT>::value]) ;
               if(0 != temp) { copyFromTo(iProducts, *temp); }
               setData(iProducts, static_cast< const typename RemainingContainerT::head_type *>(nullptr),
                       static_cast< const typename RemainingContainerT::tail_type *>(nullptr));
            }
template<typename T , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
template<class DataT , class ProductsT >
void edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::setData ( ProductsT &  iProducts,
const produce::Null ,
const DataT *   
) [inline]

Definition at line 96 of file Callback.h.

References edm::eventsetup::copyFromTo(), edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::proxyData_, and groupFilesInBlocks::temp.

                                                                                 {
               
               DataT* temp = reinterpret_cast< DataT*>(proxyData_[produce::find_index<TReturn,DataT>::value]) ;
               //std::cout <<" setData["<< produce::find_index<TReturn,DataT>::value<<"] "<< temp <<std::endl;
               if(0 != temp) { copyFromTo(iProducts, *temp); } 
            }
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 82 of file Callback.h.

References edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::setData().

Referenced by edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::operator()().

                                                   {
            //std::cout <<" storeReturnedValues "<< iReturn <<" " <<iReturn->value_ <<std::endl;
            typedef typename produce::product_traits<TReturn>::type type;
            setData(iReturn, static_cast<typename  type::head_type*>(nullptr), static_cast<const typename type::tail_type *>(nullptr));
         }

Member Data Documentation

template<typename T , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
TDecorator edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::decorator_ [private]
template<typename T , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
method_type edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::method_ [private]
template<typename T , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
T* edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::producer_ [private]
template<typename T , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
std::vector<void*> edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::proxyData_ [private]
template<typename T , typename TReturn , typename TRecord , typename TDecorator = CallbackSimpleDecorator<TRecord>>
bool edm::eventsetup::Callback< T, TReturn, TRecord, TDecorator >::wasCalledForThisRecord_ [private]