8#ifndef SKSL_SWITCHSTATEMENT
9#define SKSL_SWITCHSTATEMENT
35 std::unique_ptr<Expression>
value,
46 std::unique_ptr<Expression>
value,
49 std::unique_ptr<SymbolTable> symbolTable);
53 static std::unique_ptr<Statement>
Make(
const Context& context,
55 std::unique_ptr<Expression>
value,
58 std::unique_ptr<Expression>&
value() {
62 const std::unique_ptr<Expression>&
value()
const {
70 const std::unique_ptr<Statement>&
caseBlock()
const {
75 return fCaseBlock->as<
Block>().children();
79 return fCaseBlock->as<
Block>().children();
85 std::unique_ptr<Expression> fValue;
86 std::unique_ptr<Statement> fCaseBlock;
Statement(Position pos, Kind kind)
std::unique_ptr< Expression > & value()
std::string description() const override
static constexpr Kind kIRNodeKind
std::unique_ptr< Statement > & caseBlock()
SwitchStatement(Position pos, std::unique_ptr< Expression > value, std::unique_ptr< Statement > caseBlock)
const std::unique_ptr< Expression > & value() const
const StatementArray & cases() const
const std::unique_ptr< Statement > & caseBlock() const
static std::unique_ptr< Statement > Make(const Context &context, Position pos, std::unique_ptr< Expression > value, std::unique_ptr< Statement > caseBlock)
static std::unique_ptr< Statement > Convert(const Context &context, Position pos, std::unique_ptr< Expression > value, ExpressionArray caseValues, StatementArray caseStatements, std::unique_ptr< SymbolTable > symbolTable)