#include #include #include #include "nodes.h" using namespace std; void Node::addChildren(NodeRef other) { if (other.isNull()) return; for (vector::const_iterator it = other->m_children.begin(); it != other->m_children.end(); it++) { addChild(*it); } } Node::~Node() { } double BinOpNode::getNumber() { double o = one->getNumber(); double t = two->getNumber(); switch (m_op) { case '*': return o * t; case '/': return o / t; case '+': return o + t; case '-': return o - t; default: cerr << "Error: BinOpNode created with op '" << m_op << "'" << endl; exit(-3); } } int BoolExpressionNode::getInteger() { double o, t; if (m_op != '!') { o = one->getNumber(); t = two->getNumber(); } switch (m_op) { case '<': return o < t; case '>': return o > t; case '=': return o == t; case 'n': return o != t; case '!': return ! one->getInteger(); case 'T': return 1; } return 0; }