00001 /* @HEADER@ */ 00002 // 00003 /* @HEADER@ */ 00004 00005 #ifndef PLAYA_LINEAROPWITHSPACES_DECL_HPP 00006 #define PLAYA_LINEAROPWITHSPACES_DECL_HPP 00007 00008 #include "PlayaDefs.hpp" 00009 #include "PlayaLinearOperatorBaseDecl.hpp" 00010 00011 namespace Playa 00012 { 00013 00014 /** 00015 * LinearOpWithSpaces provides a simple implementation of the domain() 00016 * and range() methods of LinearOperatorBase. 00017 */ 00018 template <class Scalar> 00019 class LinearOpWithSpaces : public LinearOperatorBase<Scalar> 00020 { 00021 public: 00022 /** */ 00023 LinearOpWithSpaces(const VectorSpace<Scalar>& domain, 00024 const VectorSpace<Scalar>& range) 00025 : domain_(domain.ptr()), range_(range.ptr()) {} 00026 00027 /** Virtual dtor */ 00028 ~LinearOpWithSpaces(){} 00029 00030 /** Return the domain */ 00031 const RCP<const VectorSpaceBase<Scalar> > domain() const 00032 {return domain_;} 00033 00034 /** Return the range */ 00035 const RCP<const VectorSpaceBase<Scalar> > range() const 00036 {return range_;} 00037 00038 private: 00039 RCP<const VectorSpaceBase<Scalar> > domain_; 00040 RCP<const VectorSpaceBase<Scalar> > range_; 00041 }; 00042 00043 00044 00045 00046 } 00047 00048 00049 #endif