00001 #ifndef _CTBfunc_HXX
00002 #define _CTBfunc_HXX 1
00003
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "CTBvector.hxx"
00017 #include "CTBmatrix.hxx"
00018
00019 class CTBfuncBase {
00020 public:
00021 virtual ~CTBfuncBase() {}
00022 };
00023
00024
00025 template <class T>
00026 class CTBfunc1f1v : public CTBfuncBase {
00027 public:
00028 virtual T operator()(T x) = 0;
00029 };
00030
00031
00032 template <class T>
00033 class CTBfunc1f1df1v : public CTBfuncBase {
00034 public:
00035 virtual T operator()(T& df, T x) = 0;
00036 };
00037
00038
00039 template <class T>
00040 class CTBfunc1fNv : public CTBfuncBase {
00041 public:
00042 virtual T operator()(const CTBvector<T>& x) = 0;
00043 };
00044
00045
00046 template <class T>
00047 class CTBfunc1fNdfNv : public CTBfuncBase {
00048 public:
00049 virtual T operator()(CTBvector<T>& df,
00050 const CTBvector<T>& x) = 0;
00051 };
00052
00053
00054 template <class T>
00055 class CTBfuncNfNv : public CTBfuncBase {
00056 public:
00057 virtual void operator()(CTBvector<T>& f, const CTBvector<T>& x) = 0;
00058 };
00059
00060
00061 template <class T>
00062 class CTBfuncNfNdfNv : public CTBfuncBase {
00063 public:
00064 virtual void operator()(CTBvector<T>& f, CTBmatrix<T>& df,
00065 const CTBvector<T>& x) = 0;
00066 };
00067
00068
00069 template <class T>
00070 class CTBfuncNf1vNv : public CTBfuncBase {
00071 public:
00072 virtual void operator()(CTBvector<T>& f, T t, const CTBvector<T>& x) = 0;
00073 };
00074
00075
00076 template <class T>
00077 class CTBfuncNfNvNv : public CTBfuncBase {
00078 public:
00079 virtual void operator()(CTBvector<T>& f, const CTBvector<T>& x1,
00080 const CTBvector<T>& x2) = 0;
00081 };
00082
00083
00084 template <class TR, class T1>
00085 class CTBfunc1Arg : public CTBfuncBase {
00086 public:
00087 virtual TR operator()(T1 p1) = 0;
00088 };
00089
00090
00091 template <class TR, class T1, class T2>
00092 class CTBfunc2Arg : public CTBfuncBase {
00093 public:
00094 virtual TR operator()(T1 p1, T2 p2) = 0;
00095 };
00096
00097
00098 template <class TR, class T1, class T2, class T3>
00099 class CTBfunc3Arg : public CTBfuncBase {
00100 public:
00101 virtual TR operator()(T1 p1, T2 p2, T3 p3) = 0;
00102 };
00103
00104
00105 template <class TR, class T1, class T2, class T3, class T4>
00106 class CTBfunc4Arg : public CTBfuncBase {
00107 public:
00108 virtual TR operator()(T1 p1, T2 p2, T3 p3, T4 p4) = 0;
00109 };
00110
00111
00112 template <class TR, class T1, class T2, class T3, class T4, class T5>
00113 class CTBfunc5Arg : public CTBfuncBase {
00114 public:
00115 virtual TR operator()(T1 p1, T2 p2, T3 p3, T4 p4, T5 p5) = 0;
00116 };
00117
00118
00119 template <class TR, class T1, class T2, class T3, class T4, class T5, class T6>
00120 class CTBfunc6Arg : public CTBfuncBase {
00121 public:
00122 virtual TR operator()(T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, T6 p6) = 0;
00123 };
00124
00125 #endif