#include "Singleton.hxx"
#include <algorithm>
-#include <functional>
#include <map>
#include <utility>
#include <string>
SG_LOG(SG_IO, SG_ALERT, "Cannot read \"" << name << "\" expression: no input found");
return 0;
}
-
+
SGSharedPtr<SGExpression<T> > inputExpression;
inputExpression = SGReadExpression<T>(inputRoot, inputNode);
if (!inputExpression) {
ExpParserRegistrar andRegistrar("and", logicopParser<AndExpression>);
ExpParserRegistrar orRegistrar("or", logicopParser<OrExpression>);
-Expression* notLogicopParser(const SGPropertyNode* exp, Parser* parser)
-{
- using namespace boost;
- vector<Expression*> children;
- parser->readChildren(exp, children);
- vector<Expression*>::iterator notBool =
- find_if(children.begin(), children.end(),
- boost::bind(&Expression::getType, _1) != BOOL);
- if (notBool != children.end() || children.size() != 1)
- throw("non boolean operand to not expression");
- NotExpression *expr = new NotExpression;
- expr->setOperand(static_cast< ::SGExpression<bool>*>(children[0]));
- return expr;
-}
-
-ExpParserRegistrar notRegistrar("not", notLogicopParser);
-
-int BindingLayout::addBinding(const string& name, Type type)
+size_t BindingLayout::addBinding(const string& name, Type type)
{
//XXX error checkint
vector<VariableBinding>::iterator itr
boost::bind(&VariableBinding::name, _1) == name);
if (itr != bindings.end())
return itr->location;
- int result = bindings.size();
+ size_t result = bindings.size();
bindings.push_back(VariableBinding(name, type, bindings.size()));
return result;
}