1
#include "MathMLSolverStableHeaders.h"
2
#include "MathMLASTLogicExpression.h"
9
//---------------------------------------------------------------------------------
10
LogicExpression::LogicExpression()
14
//---------------------------------------------------------------------------------
15
LogicExpression::~LogicExpression()
17
for (size_t i=0; i<mOperands.size(); ++i)
19
delete mOperands.at( i );
23
//---------------------------------------------------------------------------------
24
void LogicExpression::accept( IVisitor* visitor ) const
26
visitor->visit( this );
29
//---------------------------------------------------------------------------------
30
LogicExpression::Operator LogicExpression::getOperator() const
35
//---------------------------------------------------------------------------------
36
void LogicExpression::setOperator( Operator op )
41
//---------------------------------------------------------------------------------
42
String LogicExpression::getOperatorString() const
44
return operatorString( mOperator );
47
//---------------------------------------------------------------------------------
48
String LogicExpression::operatorString( Operator op )
54
return OPERATOR_LOGIC_AND;
57
return OPERATOR_LOGIC_OR;
60
return OPERATOR_LOGIC_XOR;
63
return OPERATOR_LOGIC_ILLEGAL;
66
//---------------------------------------------------------------------------------
67
void LogicExpression::setOperator( const String& op )
69
if ( op == OPERATOR_LOGIC_AND )
74
else if ( op == OPERATOR_LOGIC_OR )
79
else if ( op == OPERATOR_LOGIC_XOR )
85
//---------------------------------------------------------------------------------
86
const NodeList& LogicExpression::getOperands() const
91
//---------------------------------------------------------------------------------
92
NodeList& LogicExpression::getOperands()
97
//---------------------------------------------------------------------------------
98
void LogicExpression::addOperand( INode* operand )
100
mOperands.push_back( operand );
103
//-----------------------------------------------------------------
104
INode* LogicExpression::clone(CloneFlags cloneFlags) const
106
LogicExpression* copy = new LogicExpression();
107
copy->mOperator = mOperator;
108
for (size_t i=0; i<mOperands.size(); ++i)
110
copy->mOperands.push_back( mOperands.at( i )->clone(cloneFlags) );