00001 #ifndef BINARYLOGICALEXPR_H 00002 #define BINARYLOGICALEXPR_H 00003 00004 #include "SundanceDefs.h" 00005 #include "LogicalExprBase.h" 00006 #include "LogicalExpr.h" 00007 #include "XMLObject.h" 00008 #include "Cell.h" 00009 00010 namespace Sundance 00011 { 00012 00013 using namespace TSF; 00014 using std::string; 00015 00016 using std::ostream; 00017 00018 /** 00019 * \ingroup LowLevelSymbolics 00020 */ 00021 00022 class BinaryLogicalExpr : public LogicalExprBase 00023 { 00024 public: 00025 /** */ 00026 BinaryLogicalExpr(const LogicalExpr& left, const LogicalExpr& right) 00027 : LogicalExprBase(), left_(left), right_(right) {;} 00028 00029 /** TUVD */ 00030 virtual ~BinaryLogicalExpr(){;} 00031 00032 /** write to XML form */ 00033 virtual XMLObject toXML() const ; 00034 00035 /** test equality between expressions */ 00036 virtual bool equals(const LogicalExpr& other) const ; 00037 00038 /** test ordering between expressions */ 00039 virtual bool lessThan(const LogicalExpr& other) const ; 00040 00041 protected: 00042 /** description of operator, used as tag in toXML() */ 00043 virtual string opType() const = 0 ; 00044 00045 LogicalExpr left_; 00046 LogicalExpr right_; 00047 }; 00048 00049 00050 00051 00052 00053 } 00054 #endif