1#pragma once
2#include "taichi/ir/ir.h"
3
4namespace taichi::lang {
5
6// Visits all non-containing statements
7class 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