P4C
The P4 Compiler
Loading...
Searching...
No Matches
structInitializers.h
1/*
2 * Copyright 2018 VMware, Inc.
3 * SPDX-FileCopyrightText: 2018 VMware, Inc.
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
8#ifndef FRONTENDS_P4_STRUCTINITIALIZERS_H_
9#define FRONTENDS_P4_STRUCTINITIALIZERS_H_
10
11#include "frontends/common/resolveReferences/resolveReferences.h"
12#include "frontends/p4/typeChecking/typeChecker.h"
13#include "ir/ir.h"
14
15namespace P4 {
16
18class CreateStructInitializers : public Transform, public ResolutionContext {
19 TypeMap *typeMap;
20
21 public:
22 explicit CreateStructInitializers(TypeMap *typeMap) : typeMap(typeMap) {
23 setName("CreateStructInitializers");
24 CHECK_NULL(typeMap);
25 }
26
27 const IR::Node *postorder(IR::AssignmentStatement *statement) override;
28 const IR::Node *postorder(IR::MethodCallExpression *expression) override;
29 const IR::Node *postorder(IR::Operation_Relation *expression) override;
30 const IR::Node *postorder(IR::Declaration_Variable *statement) override;
31 const IR::Node *postorder(IR::ReturnStatement *statement) override;
32};
33
34class StructInitializers : public PassManager {
35 public:
36 explicit StructInitializers(TypeMap *typeMap) {
37 setName("StructInitializers");
38 passes.push_back(new TypeChecking(nullptr, typeMap));
39 passes.push_back(new CreateStructInitializers(typeMap));
40 passes.push_back(new ClearTypeMap(typeMap));
41 }
42};
43
44} // namespace P4
45
46#endif /* FRONTENDS_P4_STRUCTINITIALIZERS_H_ */
Definition typeChecker.h:32
Converts some list expressions into struct initializers.
Definition structInitializers.h:18
Definition node.h:53
Definition visitor.h:442
Definition typeChecker.h:55
Definition typeMap.h:32
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:13