| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

PropertyCallbackFunctor.h

Go to the documentation of this file.
00001 /**********************************************************
00002  * $Workfile: $
00003  * $Revision: 1.2 $
00004  * $Date: 2006/06/06 16:16:23 $
00005  * $Author: hmd $
00006  * $Archive: $
00007  *
00008  * Component Comment
00009  * Copyright Notice
00010  **********************************************************/
00011 
00012 #ifndef INCLUDED_PROPERTYCALLBACKFUNCTOR_H
00013 #define INCLUDED_PROPERTYCALLBACKFUNCTOR_H
00014 
00015 /****************************
00016  * C++ DECLARATION SECTION
00017  *   Base Classes Sub-section
00018  ****************************/
00019 
00020 /* Standard C++ Class Headers */
00021 
00022 /* Application C++ Class Headers */
00023 
00024 /*************************************
00025  * C++ DECLARATION SECTION
00026  *   Collaborating Classes Sub-section
00027  *************************************/
00028 
00029 /* Standard C++ Class Declarations */
00030 
00031 /* Application C++ Class Declarations */
00032 class Property;
00033 
00034 
00035 /*******************************
00036  * CLASS DECLARATION SECTION
00037  *   Class Interface Sub-section
00038  *******************************/
00039  
00040 class PropertyCallbackFunctor {
00041 
00043 /* Static Members */
00045 
00046 public:
00047 // Data and Function Members for Collaborators.
00048     // Data members
00049     static const PropertyCallbackFunctor* const nullPropertyCallbackFunctorPointer;
00051 /* Instance Members */
00053 
00054 public:
00055 
00056   // Data and Function Members for Collaborators.
00057   
00058   // Constructors - None, abstract base class
00059   // Destructor
00060   virtual ~PropertyCallbackFunctor() {}
00061   
00062   // Operators
00063   virtual void operator() ( Property& ) const = 0;
00064   
00065   virtual PropertyCallbackFunctor* clone() const = 0 ;
00066   
00067 };
00068 
00069 class PropertyCallbackPointerFunctor : public PropertyCallbackFunctor {
00070 
00072 /* Static Members */
00074 
00075 public:
00076 // Data and Function Members for Collaborators.
00077 
00078     // Typedefs, consts, and enums
00079     typedef void ( * PtrToCallbackFunction ) ( Property& );
00080 
00082 /* Instance Members */
00084 
00085 public:
00086   // Data and Function Members for Collaborators.
00087   
00088   // Constructors
00089   explicit PropertyCallbackPointerFunctor( PtrToCallbackFunction pCF )
00090     : m_pCF( pCF ) { }
00091   // Destructor - Compiler generated version will be Ok
00092   
00093   // Operators
00094   virtual void operator() ( Property& prop ) const
00095   { m_pCF( prop ); }
00096   
00097   virtual PropertyCallbackPointerFunctor* clone() const 
00098   { return new PropertyCallbackPointerFunctor(*this); } ;
00099   
00100 private:
00101 // Data and Function Members for This Class Implementation.
00102 
00103     // Data members
00104     PtrToCallbackFunction       m_pCF;
00105 
00106 };
00107 
00108 
00109 template< class T >
00110 class PropertyCallbackMemberFunctor : public PropertyCallbackFunctor {
00111 
00113 /* Static Members */
00115 
00116 public:
00117 // Data and Function Members for Collaborators.
00118 
00119     // Typedefs, consts, and enums
00120     typedef void ( T::* PtrToCallbackMember ) ( Property& );
00121 
00123 /* Instance Members */
00125 
00126 public:
00127   // Data and Function Members for Collaborators.
00128   
00129   // Constructors
00130   explicit PropertyCallbackMemberFunctor( PtrToCallbackMember pCM, T* instance )
00131     : m_pCM( pCM ), m_instance( instance ) { }
00132   // Destructor - Compiler generated version will be Ok
00133   
00134   // Operators
00135   virtual void operator() ( Property& prop ) const
00136   { ( m_instance->*m_pCM )( prop ); }
00137   
00138   virtual  PropertyCallbackMemberFunctor* clone() const 
00139   { return new PropertyCallbackMemberFunctor(*this); }
00140   
00141 private:
00142 // Data and Function Members for This Class Implementation.
00143 
00144     // Data members
00145     PtrToCallbackMember m_pCM;
00146     T*                  m_instance;
00147 
00148 };
00149 
00150 #endif  // INCLUDED_PROPERTYCALLBACKFUNCTOR_H
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 19:56:58 2011 for GaudiKernel by doxygen 1.4.7