1 #ifndef MSP_GL_SL_EVALUATE_H_
2 #define MSP_GL_SL_EVALUATE_H_
10 /** Evaluates an expression. Only expressions consisting entirely of compile-
11 time constants can be evaluated. */
12 class ExpressionEvaluator: public NodeVisitor
15 typedef std::map<VariableDeclaration *, Expression *> ValueMap;
18 const ValueMap *variable_values;
23 ExpressionEvaluator();
24 ExpressionEvaluator(const ValueMap &);
26 float get_result() const { return result; }
27 bool is_result_valid() const { return result_valid; }
29 using NodeVisitor::visit;
30 virtual void visit(Literal &);
31 virtual void visit(ParenthesizedExpression &);
32 virtual void visit(VariableReference &);
33 virtual void visit(UnaryExpression &);
34 virtual void visit(BinaryExpression &);