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

CTBcallbackB.hxx

Go to the documentation of this file.
00001 #ifndef _CTBcallbackB_HXX
00002 #define _CTBcallbackB_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 "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 // the implementation is fully inlined and always included here
00105 #include "CTBcallbackB.icc"
00106 
00107 #endif
00108 
00109 
00110 
00111 
00112 
00113 

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