8#ifndef SKSL_TERNARYEXPRESSION
9#define SKSL_TERNARYEXPRESSION
35 std::unique_ptr<Expression>
ifTrue, std::unique_ptr<Expression>
ifFalse)
47 std::unique_ptr<Expression>
test,
48 std::unique_ptr<Expression>
ifTrue,
49 std::unique_ptr<Expression>
ifFalse);
52 static std::unique_ptr<Expression>
Make(
const Context& context,
54 std::unique_ptr<Expression>
test,
55 std::unique_ptr<Expression>
ifTrue,
56 std::unique_ptr<Expression>
ifFalse);
58 std::unique_ptr<Expression>&
test() {
62 const std::unique_ptr<Expression>&
test()
const {
66 std::unique_ptr<Expression>&
ifTrue() {
70 const std::unique_ptr<Expression>&
ifTrue()
const {
78 const std::unique_ptr<Expression>&
ifFalse()
const {
83 return std::make_unique<TernaryExpression>(
pos, this->
test()->
clone(),
91 std::unique_ptr<Expression> fTest;
92 std::unique_ptr<Expression> fIfTrue;
93 std::unique_ptr<Expression> fIfFalse;
std::unique_ptr< Expression > clone() const
Expression(Position pos, Kind kind, const Type *type)
const Type & type() const
std::string description() const final
const std::unique_ptr< Expression > & test() const
std::unique_ptr< Expression > clone(Position pos) const override
const std::unique_ptr< Expression > & ifTrue() const
const std::unique_ptr< Expression > & ifFalse() const
static std::unique_ptr< Expression > Make(const Context &context, Position pos, std::unique_ptr< Expression > test, std::unique_ptr< Expression > ifTrue, std::unique_ptr< Expression > ifFalse)
std::unique_ptr< Expression > & ifTrue()
std::unique_ptr< Expression > & test()
TernaryExpression(Position pos, std::unique_ptr< Expression > test, std::unique_ptr< Expression > ifTrue, std::unique_ptr< Expression > ifFalse)
static std::unique_ptr< Expression > Convert(const Context &context, Position pos, std::unique_ptr< Expression > test, std::unique_ptr< Expression > ifTrue, std::unique_ptr< Expression > ifFalse)
std::unique_ptr< Expression > & ifFalse()
static constexpr Kind kIRNodeKind