/* * Copyright 2016 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SKSL_ASTTERNARYEXPRESSION #define SKSL_ASTTERNARYEXPRESSION #include "SkSLASTExpression.h" namespace SkSL { /** * A ternary expression (test ? ifTrue : ifFalse). */ struct ASTTernaryExpression : public ASTExpression { ASTTernaryExpression(std::unique_ptr<ASTExpression> test, std::unique_ptr<ASTExpression> ifTrue, std::unique_ptr<ASTExpression> ifFalse) : INHERITED(test->fOffset, kTernary_Kind) , fTest(std::move(test)) , fIfTrue(std::move(ifTrue)) , fIfFalse(std::move(ifFalse)) {} String description() const override { return "(" + fTest->description() + " ? " + fIfTrue->description() + " : " + fIfFalse->description() + ")"; } const std::unique_ptr<ASTExpression> fTest; const std::unique_ptr<ASTExpression> fIfTrue; const std::unique_ptr<ASTExpression> fIfFalse; typedef ASTExpression INHERITED; }; } // namespace #endif