]> git.tdb.fi Git - libs/gl.git/blob - source/glsl/evaluate.h
Fix the declaration of the builtin textureLod function
[libs/gl.git] / source / glsl / evaluate.h
1 #ifndef MSP_GL_SL_EVALUATE_H_
2 #define MSP_GL_SL_EVALUATE_H_
3
4 #include "visitor.h"
5
6 namespace Msp {
7 namespace GL {
8 namespace SL {
9
10 /** Evaluates an expression.  Only expressions consisting entirely of compile-
11 time constants can be evaluated. */
12 class ExpressionEvaluator: public NodeVisitor
13 {
14 public:
15         typedef std::map<VariableDeclaration *, Expression *> ValueMap;
16
17 private:
18         const ValueMap *variable_values;
19         float r_result;
20         bool r_result_valid;
21
22 public:
23         ExpressionEvaluator();
24         ExpressionEvaluator(const ValueMap &);
25
26         float get_result() const { return r_result; }
27         bool is_result_valid() const { return r_result_valid; }
28
29         using NodeVisitor::visit;
30         virtual void visit(Literal &);
31         virtual void visit(VariableReference &);
32         virtual void visit(UnaryExpression &);
33         virtual void visit(BinaryExpression &);
34 };
35
36 } // namespace SL
37 } // namespace GL
38 } // namespace Msp
39
40 #endif