Files Classes Functions Hierarchy
00001 #ifndef FNOBJT_H 00002 #define FNOBJT_H 00003 00004 #include <fnobj.h> 00005 00006 /* 00007 These objects hide their type when using with a 00008 reference to their base class. 00009 00010 Different objects with the same funcional object signature 00011 can be grouped together. 00012 */ 00013 00014 00018 template< class T, class A0 > 00019 class fnobj0T : public fnobj0<A0> 00020 { 00021 public: 00022 00023 T obj; 00024 00025 fnobj0T(T obj_) : obj(obj_) {} 00026 00027 A0 operator () () { obj(); } 00028 }; 00029 00033 template< class T, class A0 > 00034 class fnobj0constT : public fnobj0const<A0> 00035 { 00036 public: 00037 00038 T obj; 00039 00040 fnobj0constT(T obj_) : obj(obj_) {} 00041 00042 A0 operator () () const { obj(); } 00043 }; 00044 00045 00049 template< class T, class A0, class A1 > 00050 class fnobj1T : public fnobj1<A0,A1> 00051 { 00052 public: 00053 00054 T obj; 00055 00056 fnobj1T(T obj_) : obj(obj_) {} 00057 00058 A0 operator () (A1 a1) { obj(a1); } 00059 }; 00060 00064 template< class T, class A0, class A1 > 00065 class fnobj1constT : public fnobj1const<A0,A1> 00066 { 00067 public: 00068 00069 T obj; 00070 00071 fnobj1constT(T obj_) : obj(obj_) {} 00072 00073 A0 operator () (A1 a1) const { obj(a1); } 00074 }; 00075 00076 00080 template< class T, class A0, class A1, class A2 > 00081 class fnobj2T : public fnobj2<A0,A1,A2> 00082 { 00083 public: 00084 00085 T obj; 00086 00087 fnobj2T(T obj_) : obj(obj_) {} 00088 00089 A0 operator () (A1 a1, A2 a2) { obj(a1,a2); } 00090 }; 00091 00095 template< class T, class A0, class A1, class A2 > 00096 class fnobj2constT : public fnobj2const<A0,A1,A2> 00097 { 00098 public: 00099 00100 T obj; 00101 00102 fnobj2constT(T obj_) : obj(obj_) {} 00103 00104 A0 operator () (A1 a1, A2 a2) const { obj(a1,a2); } 00105 }; 00106 00107 00111 template< class T, class A0, class A1, class A2, class A3 > 00112 class fnobj3T : public fnobj3<A0,A1,A2,A3> 00113 { 00114 public: 00115 00116 T obj; 00117 00118 fnobj3T(T obj_) : obj(obj_) {} 00119 00120 A0 operator () (A1 a1, A2 a2, A3 a3) { obj(a1,a2,a3); } 00121 }; 00122 00126 template< class T, class A0, class A1, class A2, class A3 > 00127 class fnobj3constT : public fnobj3const<A0,A1,A2,A3> 00128 { 00129 public: 00130 00131 T obj; 00132 00133 fnobj3constT(T obj_) : obj(obj_) {} 00134 00135 A0 operator () (A1 a1, A2 a2, A3 a3) const { obj(a1,a2,a3); } 00136 }; 00137 00138 00139 00140 #endif 00141 00142
1.5.8