]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/evaluate.cpp
Store a pointer to operator info rather than the token in expressions
[libs/gl.git] / source / glsl / evaluate.cpp
index 4bbdb2f60f436528b733905d604bad4100780497..915b2a6fe2cce1a6f8dcc4cd275029f1225ba6a2 100644 (file)
@@ -55,7 +55,7 @@ void ExpressionEvaluator::visit(UnaryExpression &unary)
        if(!result_valid)
                return;
 
-       if(unary.oper=="!")
+       if(unary.oper->token[0]=='!')
                result = !result;
        else
                result_valid = false;
@@ -74,21 +74,22 @@ void ExpressionEvaluator::visit(BinaryExpression &binary)
        if(!result_valid)
                return;
 
-       if(binary.oper=="<")
+       std::string oper = binary.oper->token;
+       if(oper=="<")
                result = (left_result<result);
-       else if(binary.oper=="<=")
+       else if(oper=="<=")
                result = (left_result<=result);
-       else if(binary.oper==">")
+       else if(oper==">")
                result = (left_result>result);
-       else if(binary.oper==">=")
+       else if(oper==">=")
                result = (left_result>=result);
-       else if(binary.oper=="==")
+       else if(oper=="==")
                result = (left_result==result);
-       else if(binary.oper=="!=")
+       else if(oper=="!=")
                result = (left_result!=result);
-       else if(binary.oper=="&&")
+       else if(oper=="&&")
                result = (left_result && result);
-       else if(binary.oper=="||")
+       else if(oper=="||")
                result = (left_result || result);
        else
                result_valid = false;