00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00033
00034 #ifndef esve_components_dimn_Make_Update_Receiver_hxx
00035 #define esve_components_dimn_Make_Update_Receiver_hxx
00036
00037 #include <esve/message/impl/Update_Receiver.hxx>
00038
00039 namespace esve { namespace components { namespace dimn {
00040
00052
00053 template< typename T_Target >
00054 class Make_Update_Receiver
00055 : virtual public message::impl::Update_Receiver,
00056 public T_Target
00057 {
00058 private:
00059 #if !defined(NDEBUG)
00060 template< class U > static void m_unused( const U & ) { }
00061
00062 void m_requirements_1()
00063 {
00064 T_Target::update() ;
00065 T_Target::update(double(1.0)) ;
00066 }
00067
00068 struct m_Requirements
00069 {
00070 m_Requirements()
00071 {
00072 typedef void (Make_Update_Receiver::*R)() ;
00073 R r = &Make_Update_Receiver::m_requirements_1 ;
00074 m_unused(r) ;
00075 }
00076 } m_requirements ;
00077 #endif // !defined(NDEBUG)
00078
00079 Make_Update_Receiver( const Make_Update_Receiver & ) ;
00080 Make_Update_Receiver & operator=( const Make_Update_Receiver & ) ;
00081
00082 public:
00084 Make_Update_Receiver() ;
00085
00087 template< typename T_Arg >
00088 Make_Update_Receiver( T_Arg & arg ) ;
00089
00091 template< typename T_Arg >
00092 Make_Update_Receiver( const T_Arg & arg ) ;
00093
00094 ~Make_Update_Receiver() ;
00095
00096 protected:
00097 void update() ;
00098 void update( double dt ) ;
00099 } ;
00100
00101 }}}
00102
00103 #include <esve/components/dimn/Make_Update_Receiver.template.cxx>
00104
00105 #endif
00106