Go to the documentation of this file.00001 #ifndef blockOperator_hh
00002 #define blockOperator_hh
00003
00004 #include <string>
00005 #include <memory>
00006 #include "basics/typedefs.hh"
00007 #include "operator/compositions.hh"
00008 #include "vectorial/vectorial.hh"
00009
00010 namespace vectorial {
00011
00012
00013
00023 template<class F>
00024 class BlockOperator : public concepts::Operator<F> {
00025 public:
00032 BlockOperator(concepts::Operator<F>* A = 0,
00033 concepts::Operator<F>* B = 0,
00034 concepts::Operator<F>* C = 0,
00035 concepts::Operator<F>* D = 0);
00045 BlockOperator(uint dimX, uint dimY,
00046 concepts::Operator<F>* A = 0,
00047 concepts::Operator<F>* B = 0,
00048 concepts::Operator<F>* C = 0,
00049 concepts::Operator<F>* D = 0);
00050
00052 virtual void operator()(const concepts::Function<F>& fncY,
00053 concepts::Function<F>& fncX);
00055 void operator()(const concepts::Vector<F>& fncY,
00056 concepts::Vector<F>& fncX);
00057 protected:
00058 virtual std::ostream& info(std::ostream& os) const;
00059 private:
00061 uint bdimX_[2], bdimY_[2];
00063 concepts::Operator<F>* A_;
00065 concepts::Operator<F>* B_;
00067 concepts::Operator<F>* C_;
00069 concepts::Operator<F>* D_;
00070 };
00071
00072 }
00073
00074 #endif // blockOperator_hh