P4C
The P4 Compiler
Loading...
Searching...
No Matches
statements.h
1/*
2 * SPDX-FileCopyrightText: 2024 The P4 Language Consortium
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef BACKENDS_P4TOOLS_MODULES_SMITH_COMMON_STATEMENTS_H_
8#define BACKENDS_P4TOOLS_MODULES_SMITH_COMMON_STATEMENTS_H_
9
10#include "backends/p4tools/modules/smith/common/generator.h"
11#include "ir/indexed_vector.h"
12#include "ir/ir.h"
13
14namespace P4::P4Tools::P4Smith {
15
16class StatementGenerator : public Generator {
17 public:
18 explicit StatementGenerator(const SmithTarget &target) : Generator(target) {}
19
20 virtual ~StatementGenerator() = default;
21
22 virtual IR::Statement *genStatement(bool is_in_func);
23
24 IR::IndexedVector<IR::StatOrDecl> genBlockStatementHelper(bool is_in_func);
25
26 virtual IR::BlockStatement *genBlockStatement(bool is_in_func);
27
28 virtual IR::IfStatement *genConditionalStatement(bool is_in_func);
29
30 static void removeLval(const IR::Expression *left, const IR::Type *type);
31
32 virtual IR::Statement *genAssignmentStatement();
33
34 virtual IR::Statement *genMethodCallExpression(const IR::PathExpression *methodName,
35 const IR::ParameterList &params);
36
37 virtual IR::Statement *genMethodCallStatement(bool is_in_func);
38
39 virtual IR::Statement *genAssignmentOrMethodCallStatement(bool is_in_func);
40
41 virtual IR::ExitStatement *genExitStatement();
42
43 virtual IR::SwitchStatement *genSwitchStatement();
44
45 IR::ReturnStatement *genReturnStatement(const IR::Type *tp = nullptr);
46
47 virtual IR::ForStatement *genForLoopStatement(bool is_in_func);
48
49 virtual IR::ForInStatement *genForInLoopStatement(bool is_in_func);
50};
51
52} // namespace P4::P4Tools::P4Smith
53
54#endif /* BACKENDS_P4TOOLS_MODULES_SMITH_COMMON_STATEMENTS_H_ */
Definition indexed_vector.h:31
Definition p4tools/modules/smith/core/target.h:23
virtual IR::ForInStatement * genForInLoopStatement(bool is_in_func)
Generate a for-in-loop statement.
Definition statements.cpp:443
virtual IR::ForStatement * genForLoopStatement(bool is_in_func)
Generate a for-loop statement.
Definition statements.cpp:417