Files Classes Functions Hierarchy
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
1.5.8