2 #ifndef Framework_eventsetup_dependsOn_h
3 #define Framework_eventsetup_dependsOn_h
59 namespace eventsetup {
64 template<
class T,
class TRecord,
class TDependsOnRecord,
class TCallerChain >
67 DependsOnCaller(
T* iCallee,
void(
T::* iMethod)(
const TDependsOnRecord&) ,
const TCallerChain& iChain) :
71 const TDependsOnRecord&
record = iRecord.template getRecord<TDependsOnRecord>();
72 if(record.cacheIdentifier() !=
cacheID_) {
87 template<
class T,
class TRecord,
class TDependsOnRecord,
class TCallerChain >
95 template<
class TRecord>
99 namespace depends_on {
101 template <
class T,
class TDependsOnRecord>
112 template <
class T,
class U>
122 template<
class T,
class U>
129 template<
class TRecord,
class THolder>
132 template<
class TRecord,
class T,
class TDependsOnRecord >
136 template<
class TRecord,
class T,
class T1,
class T2>
142 template<
class T,
class TDependsOnRecord,
class TRecord>
148 template<
class T,
class T1,
class T2,
class TRecord>
156 template<
typename T,
typename TRecord,
typename TArg>
159 template<
typename T,
typename TRecord,
typename TDependsOnRecord>
165 template<
typename T,
typename TRecord,
typename TDependsOnRecord >
174 template<
typename T,
typename TRecord,
typename T1,
typename T2>
179 template<
typename T,
typename TRecord,
typename T1,
typename T2>
188 template <
typename T,
typename TDependsOnRecord>
189 depends_on::OneHolder<T,TDependsOnRecord>
190 dependsOn(
void(
T::*iT)(
const TDependsOnRecord&)) {
return iT ; }
192 template<
typename T,
typename T1,
typename T2>
193 depends_on::TwoHolder<depends_on::OneHolder<T,T1>, T2>
196 template<
typename T,
typename T1,
typename T2,
typename T3>
197 depends_on::TwoHolder< depends_on::TwoHolder<depends_on::OneHolder<T,T1>, T2>, T3>
void(T::* holdee_)(const TDependsOnRecord &)
depends_on::OneHolder< T, TDependsOnRecord > dependsOn(void(T::*iT)(const TDependsOnRecord &))
DependsOnCaller< T, TRecord, TDependsOnRecord, DependsOnDoNothingCaller< TRecord > > Caller_t
unsigned long long cacheID_
ESPreFunctorDecorator< TRecord, DependsOnCaller< T, TRecord, TDependsOnRecord, DependsOnDoNothingCaller< TRecord > > > Decorator_t
void operator()(const TRecord &)
DependsOnCaller(T *iCallee, void(T::*iMethod)(const TDependsOnRecord &), const TCallerChain &iChain)
void(T::* method_)(const TDependsOnRecord &)
const TDecorator & createDecoratorFrom(T *, const TRecord *, const TDecorator &iDec)
DependsOnCaller< T, TRecord, TDependsOnRecord, DependsOnDoNothingCaller< TRecord > > makeCaller(T *iT, const TRecord *iRec, const OneHolder< T, TDependsOnRecord > &iHolder)
TDependsOnRecord DependsOnRecord_t
DependsOnCaller< T, TRecord, TDependsOnRecord, TCallerChain > createDependsOnCaller(T *iCallee, const TRecord *, void(T::*iMethod)(const TDependsOnRecord &), const TCallerChain &iChain)
ESPreFunctorDecorator< TRecord, typename depends_on::HolderToCaller< TRecord, depends_on::TwoHolder< T1, T2 > >::Caller_t > Decorator_t
DependsOnCaller< T, TRecord, T2, typename HolderToCaller< TRecord, T1 >::Caller_t > Caller_t
OneHolder(void(T::*iHoldee)(const TDependsOnRecord &))
TwoHolder< T, U > operator&(const T &iT, const U &iU)
TwoHolder(const T &i1, const U &i2)
void operator()(const TRecord &iRecord)