00001 #ifndef _CTBcallback_HXX
00002 #define _CTBcallback_HXX 1
00003
00011
00012
00013
00014
00015
00016
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
00211 #include "CTBcallback.icc"
00212
00213 #endif
00214
00215
00216
00217
00218
00219