00001 #ifndef LISTBATCHBASE_H
00002 #define LISTBATCHBASE_H
00003
00004 #include "SundanceDefs.h"
00005
00006 #include "TSFArray.h"
00007 #include "DenseSerialVector.h"
00008 #include "TSFSmartPtr.h"
00009 #include "ExprValue.h"
00010
00011
00012 namespace Sundance
00013 {
00014
00015 using namespace TSF;
00016 using std::string;
00017
00018 using std::ostream;
00019
00020 class ListBatch;
00021
00022
00023
00024
00025 class ListBatchBase
00026 {
00027 public:
00028
00029
00030
00031 ListBatchBase() {;}
00032
00033 virtual ~ListBatchBase(){;}
00034
00035
00036 virtual int listLength() const = 0 ;
00037
00038 virtual int nPoints() const = 0 ;
00039
00040 virtual int listSize() const = 0 ;
00041
00042
00043 virtual const ListBatch& listElement(int i) const = 0 ;
00044
00045 virtual ListBatch& listElement(int i) = 0 ;
00046
00047
00048 virtual const DenseSerialVector& value() const ;
00049
00050 virtual void setValue(const DenseSerialVector& v);
00051
00052 virtual ExprValue sliceAt(int i) const = 0 ;
00053
00054 virtual ExprValue sum(const DenseSerialVector& weights) const = 0 ;
00055
00056
00057 virtual bool isFlat() const {return false;}
00058
00059 virtual bool isScalar() const {return false;}
00060
00061
00062 private:
00063 static DenseSerialVector dummyVector_;
00064 };
00065
00066 }
00067 #endif