proj home

Files   Classes   Functions   Hierarchy  

fnobjT.h

Go to the documentation of this file.
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 

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