8#ifndef SKSL_FORSTATEMENT
9#define SKSL_FORSTATEMENT
46 std::unique_ptr<Expression>
test,
47 std::unique_ptr<Expression>
next,
50 std::unique_ptr<SymbolTable>
symbols)
65 std::unique_ptr<Expression>
test,
66 std::unique_ptr<Expression>
next,
68 std::unique_ptr<SymbolTable> symbolTable);
73 std::unique_ptr<Expression>
test,
77 static std::unique_ptr<Statement>
Make(
const Context& context,
81 std::unique_ptr<Expression>
test,
82 std::unique_ptr<Expression>
next,
85 std::unique_ptr<SymbolTable> symbolTable);
88 return fForLoopPositions;
99 std::unique_ptr<Expression>&
test() {
103 const std::unique_ptr<Expression>&
test()
const {
107 std::unique_ptr<Expression>&
next() {
111 const std::unique_ptr<Expression>&
next()
const {
124 return fSymbolTable.get();
129 return fUnrollInfo.get();
136 std::unique_ptr<SymbolTable> fSymbolTable;
137 std::unique_ptr<Statement> fInitializer;
138 std::unique_ptr<Expression> fTest;
139 std::unique_ptr<Expression> fNext;
140 std::unique_ptr<Statement> fStatement;
141 std::unique_ptr<LoopUnrollInfo> fUnrollInfo;
static std::unique_ptr< Statement > ConvertWhile(const Context &context, Position pos, std::unique_ptr< Expression > test, std::unique_ptr< Statement > statement)
const std::unique_ptr< Expression > & test() const
static std::unique_ptr< Statement > Convert(const Context &context, Position pos, ForLoopPositions forLoopPositions, std::unique_ptr< Statement > initializer, std::unique_ptr< Expression > test, std::unique_ptr< Expression > next, std::unique_ptr< Statement > statement, std::unique_ptr< SymbolTable > symbolTable)
std::unique_ptr< Statement > & statement()
const std::unique_ptr< Statement > & initializer() const
const std::unique_ptr< Statement > & statement() const
std::unique_ptr< Expression > & next()
std::string description() const override
const std::unique_ptr< Expression > & next() const
static constexpr Kind kIRNodeKind
std::unique_ptr< Expression > & test()
ForStatement(Position pos, ForLoopPositions forLoopPositions, std::unique_ptr< Statement > initializer, std::unique_ptr< Expression > test, std::unique_ptr< Expression > next, std::unique_ptr< Statement > statement, std::unique_ptr< LoopUnrollInfo > unrollInfo, std::unique_ptr< SymbolTable > symbols)
static std::unique_ptr< Statement > Make(const Context &context, Position pos, ForLoopPositions forLoopPositions, std::unique_ptr< Statement > initializer, std::unique_ptr< Expression > test, std::unique_ptr< Expression > next, std::unique_ptr< Statement > statement, std::unique_ptr< LoopUnrollInfo > unrollInfo, std::unique_ptr< SymbolTable > symbolTable)
std::unique_ptr< Statement > & initializer()
SymbolTable * symbols() const
const LoopUnrollInfo * unrollInfo() const
ForLoopPositions forLoopPositions() const
Statement(Position pos, Kind kind)