X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglsl%2Foutput.cpp;h=35c52fec51fc109ada7ad10f7e73b48836955cd2;hb=911c6c4acc8218bc40d93917207f9dc32e9f2596;hp=43f337cabc3e6296e9afdc1f91130e3d8bd7b56f;hpb=cfee1ea700d860db170fd1621f3716bc47b677f8;p=libs%2Fgl.git diff --git a/source/glsl/output.cpp b/source/glsl/output.cpp index 43f337ca..35c52fec 100644 --- a/source/glsl/output.cpp +++ b/source/glsl/output.cpp @@ -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::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));