fart/parser/nodes.cc
Josh Holtrop 04022756e5 added NodeRef typedef
git-svn-id: svn://anubis/fart/branches/scene-file-scripting@336 7f9b0f55-74a9-4bce-be96-3c2cd072584d
2010-10-06 15:41:47 +00:00

73 lines
1.2 KiB
C++

#include <stdlib.h>
#include <vector>
#include <iostream>
#include "nodes.h"
using namespace std;
void Node::addChildren(NodeRef other)
{
if (other.isNull())
return;
for (vector<NodeRef>::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;
}