PlayaVectorBaseDecl.hpp

00001 /* @HEADER@ */
00002 //   
00003  /* @HEADER@ */
00004 
00005 #ifndef PLAYA_VECTORBASEDECL_HPP
00006 #define PLAYA_VECTORBASEDECL_HPP
00007 
00008 #include "PlayaDefs.hpp"
00009 #include "PlayaVectorSpaceBaseDecl.hpp"
00010 #include "PlayaDataChunk.hpp"
00011 
00012 namespace Playa
00013 {
00014 template <class Scalar> class Vector;
00015 
00020 template <class Scalar>
00021 class VectorBase
00022 {
00023 public:
00025   virtual ~VectorBase() {;}
00026 
00028   virtual RCP<const VectorSpaceBase<Scalar> > space() const = 0 ;
00029 
00031   virtual ConstDataChunk<Scalar> nextConstChunk() const = 0 ;
00032 
00034   virtual NonConstDataChunk<Scalar> nextChunk() = 0 ;
00035 
00037   virtual bool hasMoreChunks() const = 0 ;
00038 
00040   virtual void rewind() const = 0 ;
00041 
00043   virtual int numBlocks() const {return 1;}
00044 
00048   virtual void update(const Scalar& alpha, const VectorBase<Scalar>* x,
00049     const Scalar& gamma) = 0;
00050 
00054   virtual void update(
00055     const Scalar& alpha, const VectorBase<Scalar>* x,
00056     const Scalar& beta, const VectorBase<Scalar>* y,
00057     const Scalar& gamma) = 0 ;
00058 
00060   virtual void update(
00061     const Scalar& alpha, const VectorBase<Scalar>* x,
00062     const Scalar& beta, const VectorBase<Scalar>* y,
00063     const Scalar& gamma, const VectorBase<Scalar>* z,
00064     const Scalar& delta) = 0 ;
00065 
00067   virtual Scalar dot(const VectorBase<Scalar>* other) const = 0 ;
00068 
00070   virtual Scalar norm2() const = 0 ;
00071 
00072 };
00073 
00074   
00075 }
00076 
00077 #endif

doxygen