1 | #pragma once |
2 | #include "taichi/ir/ir.h" |
3 | |
4 | namespace taichi::lang { |
5 | |
6 | // Visits all non-containing statements |
7 | class BasicStmtVisitor : public IRVisitor { |
8 | public: |
9 | BasicStmtVisitor(); |
10 | |
11 | virtual void preprocess_container_stmt(Stmt *stmt) { |
12 | } |
13 | |
14 | void visit(Block *stmt_list) override; |
15 | |
16 | void visit(IfStmt *if_stmt) override; |
17 | |
18 | void visit(WhileStmt *stmt) override; |
19 | |
20 | void visit(RangeForStmt *for_stmt) override; |
21 | |
22 | void visit(StructForStmt *for_stmt) override; |
23 | |
24 | void visit(MeshForStmt *for_stmt) override; |
25 | |
26 | void visit(OffloadedStmt *stmt) override; |
27 | |
28 | void visit(FrontendWhileStmt *stmt) override; |
29 | |
30 | void visit(FrontendForStmt *stmt) override; |
31 | |
32 | void visit(FrontendIfStmt *stmt) override; |
33 | }; |
34 | |
35 | } // namespace taichi::lang |
36 | |