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