text: /*
   * 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 "src/sksl/ast/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
  