proj home

Files   Classes   Functions   Hierarchy  

fnobjTfn.h

Go to the documentation of this file.
00001 #ifndef FNOBJTFN_H
00002 #define FNOBJTFN_H
00003 
00004 #include <fnobj.h>
00005 
00018 template<class T, class A0 >
00019 class fnobj0Tfn : public fnobj0<A0>
00020 {
00021 public:
00022 
00023    T* data;
00024    typedef A0 (T::*Fptr)();
00025    Fptr fn;
00026 
00027    fnobj0Tfn( T & data_, Fptr fn_)
00028      : data(&data_), fn(fn_) {}
00029 
00030    A0 operator () ()
00031      { return (data->*fn)(); }
00032 
00033 };
00034 
00035 template<class T, class A0 >
00036 class fnobj0constTfn : public fnobj0const<A0>
00037 {
00038 public:
00039 
00040    T* data;
00041    typedef A0 (T::*Fptr)() const;
00042    Fptr fn;
00043 
00044    fnobj0constTfn( T & data_, Fptr fn_)
00045      : data(&data_), fn(fn_) {}
00046 
00047    A0 operator () () const
00048      { return (data->*fn)(); }
00049 
00050 };
00051 
00052 
00053 
00061 template<class T, class A0, class A1>
00062 class fnobj1Tfn : public fnobj1<A0,A1>
00063 {
00064 public:
00065 
00066   T* data;
00067   typedef A0 (T::*Fptr)(A1);
00068   Fptr fn;
00069 
00070   fnobj1Tfn( T & data_, Fptr fn_)
00071     : data(&data_), fn(fn_) {}
00072 
00073   A0 operator () (A1 arg1)
00074     { return (data->*fn)(arg1); }
00075 };
00076 
00077 template<class T, class A0, class A1>
00078 class fnobj1constTfn : public fnobj1const<A0,A1>
00079 {
00080 public:
00081 
00082   T* data;
00083   typedef A0 (T::*Fptr)(A1) const;
00084   Fptr fn;
00085 
00086   fnobj1constTfn( T & data_, Fptr fn_)
00087     : data(&data_), fn(fn_) {}
00088 
00089   A0 operator () (A1 arg1) const
00090     { return (data->*fn)(arg1); }
00091 };
00092 
00100 template<class T, class A0, class A1, class A2>
00101 class fnobj2Tfn : public fnobj2<A0,A1,A2>
00102 {
00103 public:
00104 
00105   T* data;
00106   typedef A0 (T::*Fptr)(A1,A2);
00107   Fptr fn;
00108 
00109   fnobj2Tfn( T & data_, Fptr fn_)
00110     : data(&data_), fn(fn_) {}
00111 
00112   A0 operator () (A1 arg1,A2 arg2)
00113     { return (data->*fn)(arg1,arg2); }
00114 };
00115 
00116 template<class T, class A0, class A1, class A2>
00117 class fnobj2constTfn : public fnobj2const<A0,A1,A2>
00118 {
00119 public:
00120 
00121   T* data;
00122   typedef A0 (T::*Fptr)(A1,A2) const;
00123   Fptr fn;
00124 
00125   fnobj2constTfn( T & data_, Fptr fn_)
00126     : data(&data_), fn(fn_) {}
00127 
00128   A0 operator () (A1 arg1,A2 arg2) const
00129     { return (data->*fn)(arg1,arg2); }
00130 };
00131 
00139 template<class T, class A0, class A1, class A2, class A3>
00140 class fnobj3Tfn : public fnobj3<A0,A1,A2,A3>
00141 {
00142 public:
00143 
00144   T* data;
00145   typedef A0 (T::*Fptr)(A1,A2,A3);
00146   Fptr fn;
00147 
00148   fnobj3Tfn( T & data_, Fptr fn_)
00149     : data(&data_), fn(fn_) {}
00150 
00151   A0 operator () (A1 arg1, A2 arg2, A3 arg3)
00152     { return (data->*fn)(arg1,arg2,arg3); }
00153 };
00154 
00155 template<class T, class A0, class A1, class A2, class A3>
00156 class fnobj3constTfn : public fnobj3const<A0,A1,A2,A3>
00157 {
00158 public:
00159 
00160   T* data;
00161   typedef A0 (T::*Fptr)(A1,A2,A3) const;
00162   Fptr fn;
00163 
00164   fnobj3constTfn( T & data_, Fptr fn_)
00165     : data(&data_), fn(fn_) {}
00166 
00167   A0 operator () (A1 arg1, A2 arg2, A3 arg3) const
00168     { return (data->*fn)(arg1,arg2,arg3); }
00169 };
00170 
00171 
00172 
00173 
00174 #endif
00175 
00176 

Generated on Fri Mar 4 00:49:29 2011 for Chelton Evans Source by  doxygen 1.5.8