00001 #ifndef _CTBcallbackB_HXX
00002 #define _CTBcallbackB_HXX 1
00003
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "CTBvector.hxx"
00020 #include "CTBcallbackBase.hxx"
00021
00022 class CTBcallbackArgBBase {
00023 public:
00024 CTBcallbackArgBBase();
00025 operator int () const;
00026 public:
00027 CTBint mi_ntrue;
00028 CTBint mi_nfalse;
00029 };
00030
00031
00032
00033 class CTBcallbackSource0B : public CTBcallbackSourceBase {
00034 public:
00035 int operator()();
00036 };
00037
00038 template <class T>
00039 class CTBcallbackTarget0B : public CTBcallbackTargetBase {
00040 public:
00041 CTBcallbackTarget0B();
00042 CTBcallbackTarget0B(const CTBcallbackTarget0B<T>& rhs);
00043
00044 CTBcallbackTarget0B(T* p_this, bool (T::* o_func)());
00045 CTBcallbackTarget0B(const CTBcallbackTarget0B<T>& rhs,
00046 T* p_this, bool (T::* o_func)());
00047
00048 void Configure(T* p_this, bool (T::* o_func)());
00049 void Connect(CTBcallbackSource0B& source);
00050 void Disconnect(CTBcallbackSource0B& source);
00051
00052 private:
00053 virtual void Execute(void* p_arg) const;
00054
00055 private:
00056 T* mp_this;
00057 bool (T::* mo_func)();
00058 };
00059
00060 class CTBcallbackArg0B : public CTBcallbackArgBBase {
00061 public:
00062 CTBcallbackArg0B();
00063 };
00064
00065
00066 template <class T1>
00067 class CTBcallbackSource1B : public CTBcallbackSourceBase {
00068 public:
00069 void operator()(T1 p1);
00070 };
00071
00072 template <class T, class T1>
00073 class CTBcallbackTarget1B : public CTBcallbackTargetBase {
00074 public:
00075 CTBcallbackTarget1B();
00076 CTBcallbackTarget1B(
00077 const CTBcallbackTarget1B<T,T1>& rhs);
00078
00079 CTBcallbackTarget1B(T* p_this, bool (T::* o_func)(T1));
00080 CTBcallbackTarget1B(
00081 const CTBcallbackTarget1B<T,T1>& rhs,
00082 T* p_this, bool (T::* o_func)(T1));
00083
00084 void Configure(T* p_this, bool (T::* o_func)(T1));
00085 void Connect(CTBcallbackSource1B<T1>& source);
00086 void Disconnect(CTBcallbackSource1B<T1>& source);
00087
00088 private:
00089 virtual void Execute(void* p_arg) const;
00090
00091 private:
00092 T* mp_this;
00093 bool (T::* mo_func)(T1);
00094 };
00095
00096 template <class T1>
00097 class CTBcallbackArg1B : public CTBcallbackArgBBase {
00098 public:
00099 CTBcallbackArg1B(T1 p1);
00100 public:
00101 T1 m_p1;
00102 };
00103
00104
00105 #include "CTBcallbackB.icc"
00106
00107 #endif
00108
00109
00110
00111
00112
00113