Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages   Examples  

CTBcallback.hxx

Go to the documentation of this file.
00001 #ifndef _CTBcallback_HXX
00002 #define _CTBcallback_HXX 1
00003 
00011 /*----------------------------------------------------------------------------*/
00012 /* C Tool Box: Designed and implemented by:                                   */
00013 /*    Walter F.J. Mueller   Gesellschaft fuer Schwerionenforschung (GSI)      */
00014 /*                          Planckstrasse 1, D-64291 Darmstadt, Germany       */
00015 /*                  Email:  W.F.J.Mueller@gsi.de                              */
00016 /*                  WWW:    http://www-kp3.gsi.de/www/kp3/people/mueller.html */
00017 /*------------------------------------------+---------------------------------*/
00018  
00019 #include "CTBcallbackBase.hxx"
00020 
00021 class CTBcallbackSource0 : public CTBcallbackSourceBase {
00022   public:
00023     void            operator()();
00024 };
00025 
00026 template <class T>
00027 class CTBcallbackTarget0 : public CTBcallbackTargetBase {
00028   public:
00029                     CTBcallbackTarget0();
00030                     CTBcallbackTarget0(const CTBcallbackTarget0<T>& rhs);
00031 
00032                     CTBcallbackTarget0(T* p_this, void (T::* o_func)());
00033                     CTBcallbackTarget0(const CTBcallbackTarget0<T>& rhs,
00034                                        T* p_this, void (T::* o_func)());
00035 
00036     void            Configure(T* p_this, void (T::* o_func)());
00037     void            Connect(CTBcallbackSource0& source);
00038     void            Disconnect(CTBcallbackSource0& source);
00039   
00040   private:
00041     virtual void    Execute(void* p_arg) const;
00042 
00043   private:
00044     T*              mp_this;
00045     void            (T::* mo_func)();
00046 };
00047 
00048 //##############################################################################
00049 
00050 template <class T1>
00051 class CTBcallbackSource1 : public CTBcallbackSourceBase {
00052   public:
00053     void            operator()(T1 p1);
00054 };
00055 
00056 template <class T, class T1>
00057 class CTBcallbackTarget1 : public CTBcallbackTargetBase {
00058   public:
00059                     CTBcallbackTarget1();
00060                     CTBcallbackTarget1(const CTBcallbackTarget1<T,T1>& rhs);
00061 
00062                     CTBcallbackTarget1(T* p_this, void (T::* o_func)(T1));
00063                     CTBcallbackTarget1(const CTBcallbackTarget1<T,T1>& rhs,
00064                                        T* p_this, void (T::* o_func)(T1));
00065 
00066     void            Configure(T* p_this, void (T::* o_func)(T1));
00067     void            Connect(CTBcallbackSource1<T1>& source);
00068     void            Disconnect(CTBcallbackSource1<T1>& source);
00069   
00070   private:
00071     virtual void    Execute(void* p_arg) const;
00072 
00073   private:
00074     T*              mp_this;
00075     void            (T::* mo_func)(T1);
00076 };
00077 
00078 template <class T1>
00079 class CTBcallbackArg1 {
00080   public:
00081                     CTBcallbackArg1(T1 p1);
00082   public:
00083     T1              m_p1;
00084 };
00085 
00086 //##############################################################################
00087 
00088 template <class T1, class T2>
00089 class CTBcallbackSource2 : public CTBcallbackSourceBase {
00090   public:
00091     void            operator()(T1 p1, T2 p2);
00092 };
00093 
00094 template <class T, class T1, class T2>
00095 class CTBcallbackTarget2 : public CTBcallbackTargetBase {
00096   public:
00097                     CTBcallbackTarget2();
00098                     CTBcallbackTarget2(const CTBcallbackTarget2<T,T1,T2>& rhs);
00099 
00100                     CTBcallbackTarget2(T* p_this, void (T::* o_func)(T1,T2));
00101                     CTBcallbackTarget2(const CTBcallbackTarget2<T,T1,T2>& rhs,
00102                                        T* p_this, void (T::* o_func)(T1,T2));
00103 
00104     void            Configure(T* p_this, void (T::* o_func)(T1,T2));
00105     void            Connect(CTBcallbackSource2<T1,T2>& source);
00106     void            Disconnect(CTBcallbackSource2<T1,T2>& source);
00107   
00108   private:
00109     virtual void    Execute(void* p_arg) const;
00110 
00111   private:
00112     T*              mp_this;
00113     void            (T::* mo_func)(T1,T2);
00114 };
00115 
00116 template <class T1, class T2>
00117 class CTBcallbackArg2 {
00118   public:
00119                     CTBcallbackArg2(T1 p1, T2 p2);
00120   public:
00121     T1              m_p1;
00122     T2              m_p2;
00123 };
00124 
00125 //##############################################################################
00126 
00127 template <class T1, class T2, class T3>
00128 class CTBcallbackSource3 : public CTBcallbackSourceBase {
00129   public:
00130     void            operator()(T1 p1, T2 p2, T3 p3);
00131 };
00132 
00133 template <class T, class T1, class T2, class T3>
00134 class CTBcallbackTarget3 : public CTBcallbackTargetBase {
00135   public:
00136                     CTBcallbackTarget3();
00137                     CTBcallbackTarget3(
00138                       const CTBcallbackTarget3<T,T1,T2,T3>& rhs);
00139 
00140                     CTBcallbackTarget3(T* p_this, void (T::* o_func)(T1,T2,T3));
00141                     CTBcallbackTarget3(
00142                       const CTBcallbackTarget3<T,T1,T2,T3>& rhs,
00143                       T* p_this, void (T::* o_func)(T1,T2,T3));
00144 
00145     void            Configure(T* p_this, void (T::* o_func)(T1,T2,T3));
00146     void            Connect(CTBcallbackSource3<T1,T2,T3>& source);
00147     void            Disconnect(CTBcallbackSource3<T1,T2,T3>& source);
00148   
00149   private:
00150     virtual void    Execute(void* p_arg) const;
00151 
00152   private:
00153     T*              mp_this;
00154     void            (T::* mo_func)(T1,T2,T3);
00155 };
00156 
00157 template <class T1, class T2, class T3>
00158 class CTBcallbackArg3 {
00159   public:
00160                     CTBcallbackArg3(T1 p1, T2 p2, T3 p3);
00161   public:
00162     T1              m_p1;
00163     T2              m_p2;
00164     T3              m_p3;
00165 };
00166 
00167 //##############################################################################
00168 
00169 template <class T1, class T2, class T3, class T4>
00170 class CTBcallbackSource4 : public CTBcallbackSourceBase {
00171   public:
00172     void            operator()(T1 p1, T2 p2, T3 p3, T4 p4);
00173 };
00174 
00175 template <class T, class T1, class T2, class T3, class T4>
00176 class CTBcallbackTarget4 : public CTBcallbackTargetBase {
00177   public:
00178                     CTBcallbackTarget4();
00179                     CTBcallbackTarget4(
00180                       const CTBcallbackTarget4<T,T1,T2,T3,T4>& rhs);
00181                     CTBcallbackTarget4(
00182                       T* p_this, void (T::* o_func)(T1,T2,T3,T4));
00183                     CTBcallbackTarget4(
00184                       const CTBcallbackTarget4<T,T1,T2,T3,T4>& rhs,
00185                       T* p_this, void (T::* o_func)(T1,T2,T3,T4));
00186 
00187     void            Configure(T* p_this, void (T::* o_func)(T1,T2,T3,T4));
00188     void            Connect(CTBcallbackSource4<T1,T2,T3,T4>& source);
00189     void            Disconnect(CTBcallbackSource4<T1,T2,T3,T4>& source);
00190   
00191   private:
00192     virtual void    Execute(void* p_arg) const;
00193 
00194   private:
00195     T*              mp_this;
00196     void            (T::* mo_func)(T1,T2,T3,T4);
00197 };
00198 
00199 template <class T1, class T2, class T3, class T4>
00200 class CTBcallbackArg4 {
00201   public:
00202                     CTBcallbackArg4(T1 p1, T2 p2, T3 p3, T4 p4);
00203   public:
00204     T1              m_p1;
00205     T2              m_p2;
00206     T3              m_p3;
00207     T4              m_p4;
00208 };
00209 
00210 // the implementation is fully inlined and always included here
00211 #include "CTBcallback.icc"
00212 
00213 #endif
00214 
00215 
00216 
00217 
00218 
00219 

Generated at Fri Oct 24 18:11:27 2003 for CTBbase by doxygen1.2.9-20010812 written by Dimitri van Heesch, © 1997-2001