]> git.tdb.fi Git - libs/gl.git/blobdiff - source/glsl/output.cpp
Rearrange operator metadata
[libs/gl.git] / source / glsl / output.cpp
index 43f337cabc3e6296e9afdc1f91130e3d8bd7b56f..35c52fec51fc109ada7ad10f7e73b48836955cd2 100644 (file)
@@ -13,12 +13,14 @@ Formatter::Formatter():
        source_index(0),
        source_line(1),
        indent(0),
-       parameter_list(false)
+       parameter_list(false),
+       omit_builtin(false)
 { }
 
 const string &Formatter::apply(Stage &s)
 {
        stage = &s;
+       omit_builtin = true;
 
        const Version &ver = s.required_features.glsl_version;
 
@@ -92,7 +94,7 @@ void Formatter::visit(Block &block)
        bool first = true;
        for(NodeList<Statement>::iterator i=block.body.begin(); i!=block.body.end(); ++i)
        {
-               if((*i)->source<=BUILTIN_SOURCE)
+               if(omit_builtin && (*i)->source<=BUILTIN_SOURCE)
                        continue;
                if(!first)
                        append('\n');
@@ -154,8 +156,8 @@ void Formatter::visit(BinaryExpression &binary)
        binary.left->visit(*this);
        append(binary.oper->token);
        binary.right->visit(*this);
-       if(binary.oper->token[0]=='[')
-               append(']');
+       if(binary.oper->token2[0])
+               append(binary.oper->token2);
 }
 
 void Formatter::visit(Assignment &assign)
@@ -165,6 +167,16 @@ void Formatter::visit(Assignment &assign)
        assign.right->visit(*this);
 }
 
+void Formatter::visit(TernaryExpression &ternary)
+{
+       ternary.condition->visit(*this);
+       append(ternary.oper->token);
+       ternary.true_expr->visit(*this);
+       if(ternary.oper->token2)
+               append(ternary.oper->token2);
+       ternary.false_expr->visit(*this);
+}
+
 void Formatter::visit(FunctionCall &call)
 {
        append(format("%s(", call.name));