/*
* 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