00001 #ifndef LOGICALEXPR_H 00002 #define LOGICALEXPR_H 00003 00004 #include "SundanceDefs.h" 00005 00006 #include "LogicalExprBase.h" 00007 #include "DenseSerialVector.h" 00008 00009 00010 namespace Sundance 00011 { 00012 00013 using namespace TSF; 00014 using std::string; 00015 00016 using std::ostream; 00017 00018 00019 /** 00020 * \ingroup LowLevelSymbolics 00021 */ 00022 00023 class LogicalExpr 00024 { 00025 public: 00026 LogicalExpr(LogicalExprBase* ptr); 00027 00028 LogicalExpr operator&&(const LogicalExpr& other) const ; 00029 00030 LogicalExpr operator||(const LogicalExpr& other) const ; 00031 00032 LogicalExpr operator!() const ; 00033 00034 bool operator==(const LogicalExpr& other) const ; 00035 00036 /** */ 00037 bool evaluate(const Cell& cell) const ; 00038 00039 /** write to XML form */ 00040 XMLObject toXML() const ; 00041 00042 const LogicalExprBase* ptr() const {return &(*ptr_);} 00043 00044 /** */ 00045 bool lessThan(const LogicalExpr& other) const ; 00046 private: 00047 TSFSmartPtr<LogicalExprBase> ptr_; 00048 }; 00049 00050 00051 00052 00053 00054 } 00055 #endif 00056 00057 00058 00059 00060

