00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef _SST_EVENTHANDLER1ARG_H
00014 #define _SST_EVENTHANDLER1ARG_H
00015
00016 #include <sst/core/eventFunctor.h>
00017
00018 namespace SST {
00019
00020 template < typename ConsumerT,
00021 typename ReturnT,
00022 typename EventT,
00023 typename ArgT >
00024 class EventHandler1Arg: public EventHandler< ConsumerT, ReturnT, EventT >
00025 {
00026 private:
00027 typedef ReturnT (ConsumerT::*PtrMember)( EventT, ArgT );
00028
00029 public:
00030 EventHandler1Arg( ConsumerT* const object,
00031 PtrMember member, ArgT arg ) :
00032 m_object( object ),
00033 m_member( member ),
00034 m_arg( arg )
00035 { }
00036
00037 EventHandler1Arg( const EventHandler1Arg< ConsumerT, ReturnT,
00038 EventT, ArgT >& e ) :
00039 m_object(e.m_object),
00040 m_member(e.m_member),
00041 m_arg(e.m_arg)
00042 { }
00043
00044 virtual ReturnT operator()( EventT event ) {
00045 return (const_cast<ConsumerT*>(m_object)->*m_member)(event,m_arg);
00046 }
00047 private:
00048
00049 ConsumerT* const m_object;
00050 const PtrMember m_member;
00051 ArgT m_arg;
00052 };
00053
00054 }
00055
00056 #endif