1 /* 2 * Copyright 2016 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef SKSL_ASTTERNARYEXPRESSION 9 #define SKSL_ASTTERNARYEXPRESSION 10 11 #include "SkSLASTExpression.h" 12 13 namespace SkSL { 14 15 /** 16 * A ternary expression (test ? ifTrue : ifFalse). 17 */ 18 struct ASTTernaryExpression : public ASTExpression { ASTTernaryExpressionASTTernaryExpression19 ASTTernaryExpression(std::unique_ptr<ASTExpression> test, 20 std::unique_ptr<ASTExpression> ifTrue, 21 std::unique_ptr<ASTExpression> ifFalse) 22 : INHERITED(test->fOffset, kTernary_Kind) 23 , fTest(std::move(test)) 24 , fIfTrue(std::move(ifTrue)) 25 , fIfFalse(std::move(ifFalse)) {} 26 descriptionASTTernaryExpression27 String description() const override { 28 return "(" + fTest->description() + " ? " + fIfTrue->description() + " : " + 29 fIfFalse->description() + ")"; 30 } 31 32 const std::unique_ptr<ASTExpression> fTest; 33 const std::unique_ptr<ASTExpression> fIfTrue; 34 const std::unique_ptr<ASTExpression> fIfFalse; 35 36 typedef ASTExpression INHERITED; 37 }; 38 39 } // namespace 40 41 #endif 42