00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _FRAMETL_FUNCTIONAL_H
00011 #define _FRAMETL_FUNCTIONAL_H
00012
00013 #include <utils/function.h>
00014 #include <aggregated_frame.h>
00015
00016 using MathTL::Function;
00017
00018
00019 namespace FrameTL
00020 {
00029 template<class IBASIS, unsigned int DIM_d, unsigned int DIM_m = DIM_d>
00030 class Functional
00031 {
00032 public:
00036 Functional(const Function<DIM_d>* g, const AggregatedFrame<IBASIS, DIM_d, DIM_m>* frame)
00037 : g_(g), frame_(frame)
00038 { }
00039
00040
00041
00042
00043 virtual ~Functional()
00044 { }
00045
00051 virtual double evaluate(const typename AggregatedFrame<IBASIS, DIM_d, DIM_m>::Index& lambda) const;
00052
00054 const AggregatedFrame<IBASIS, DIM_d, DIM_m>* frame() const { return frame_; }
00055
00057 const Function<DIM_d>* g() const { return g_; }
00058
00059
00060 protected:
00062 const Function<DIM_d>* g_;
00063
00065 const AggregatedFrame<IBASIS, DIM_d, DIM_m>* frame_;
00066 };
00067 }
00068
00069 #include <functional.cpp>
00070
00071 #endif // _FRAMETL_FUNCTIONAL_H