00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef _eoSTLFunctor_H
00028 #define _eoSTLFunctor_H
00029
00030 #include "eoFunctor.h"
00031
00040 template <class R>
00041 class eoSTLF
00042 {
00043 public:
00044
00045 typedef R result_type;
00046
00047 eoSTLF(eoF<R>& _f) : f(_f) {}
00048
00049 R operator()(void)
00050 {
00051 return f();
00052 }
00053
00054 private :
00055
00056 eoF<R>& f;
00057 };
00058
00059 #ifdef _MSVC
00062 template <>
00063 void eoSTLF<void>::operator()(void)
00064 {
00065 f();
00066 }
00067 #endif
00068
00077 template <class A1, class R>
00078 class eoSTLUF : public std::unary_function<A1, R>
00079 {
00080 public:
00081 eoSTLUF(eoUF<A1,R>& _f) : f(_f) {}
00082
00083 R operator()(A1 a)
00084 {
00085 return f(a);
00086 }
00087
00088 private:
00089 eoUF<A1, R>& f;
00090 };
00091
00100 template <class A1, class A2, class R>
00101 class eoSTLBF : public std::binary_function<A1, A2, R>
00102 {
00103 public:
00104 eoSTLBF(eoUF<A1,R>& _f) : f(_f) {}
00105
00106 R operator()(A1 a1, A2 a2)
00107 {
00108 return f(a1, a2);
00109 }
00110
00111 private:
00112
00113 eoBF<A1, A2, R>& f;
00114 };
00115
00116
00117
00118 #endif