00001 #ifndef EXPRVALUELIST_H 00002 #define EXPRVALUELIST_H 00003 00004 #include "SundanceDefs.h" 00005 00006 #include "ExprValue.h" 00007 00008 00009 namespace Sundance 00010 { 00011 00012 using namespace TSF; 00013 using std::string; 00014 00015 using std::ostream; 00016 00017 /** \ingroup LowLevelSymbolics 00018 * ExprValue that is a list of ExprValues 00019 */ 00020 00021 class ExprValueList : public ExprValueBase 00022 { 00023 public: 00024 /** \name Developer-only methods */ 00025 //@{ 00026 /** ctor */ 00027 ExprValueList(const ExprValue& v1); 00028 /** */ 00029 ExprValueList(const ExprValue& v1, const ExprValue& v2); 00030 /** */ 00031 ExprValueList(const ExprValue& v1, const ExprValue& v2, const ExprValue& v3); 00032 /** */ 00033 ExprValueList(const ExprValue& v1, const ExprValue& v2, const ExprValue& v3, 00034 const ExprValue& v4); 00035 /** */ 00036 ExprValueList(const TSFArray<ExprValue>& lists); 00037 00038 /** */ 00039 virtual ~ExprValueList(); 00040 00041 /** */ 00042 virtual int listLength() const {return data_.length();} 00043 /** */ 00044 virtual int listSize() const ; 00045 00046 /** */ 00047 virtual const ExprValue& listElement(int i) const {return data_[i];} 00048 /** */ 00049 virtual ExprValue& listElement(int i) {return data_[i];} 00050 //@} 00051 private: 00052 TSFArray<ExprValue> data_; 00053 }; 00054 00055 00056 00057 00058 } 00059 #endif