git-svn-id: svn://anubis/fart/branches/scene-file-scripting@336 7f9b0f55-74a9-4bce-be96-3c2cd072584d
73 lines
1.2 KiB
C++
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;
|
|
}
|