P4C
The P4 Compiler
Loading...
Searching...
No Matches
defaultValues.h
1/*
2 * Copyright 2023 VMWare, Inc.
3 * SPDX-FileCopyrightText: 2023 VMWare, Inc.
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
8#ifndef FRONTENDS_P4_DEFAULTVALUES_H_
9#define FRONTENDS_P4_DEFAULTVALUES_H_
10
11#include "frontends/common/resolveReferences/referenceMap.h"
12#include "frontends/p4/typeChecking/typeChecker.h"
13#include "frontends/p4/typeMap.h"
14#include "ir/ir.h"
15
16namespace P4 {
17
21class DoDefaultValues final : public Transform {
22 TypeMap *typeMap;
23
24 const IR::Expression *defaultValue(const IR::Expression *expression, const IR::Type *type);
25
26 public:
27 explicit DoDefaultValues(TypeMap *typeMap) : typeMap(typeMap) { CHECK_NULL(typeMap); }
28 const IR::Node *postorder(IR::Dots *dots) override;
29 const IR::Node *postorder(IR::StructExpression *expression) override;
30 const IR::Node *postorder(IR::ListExpression *expression) override;
31 const IR::Node *postorder(IR::ArrayExpression *expression) override;
32};
33
34class DefaultValues : public PassManager {
35 public:
36 explicit DefaultValues(TypeMap *typeMap, TypeChecking *typeChecking = nullptr) {
37 if (typeMap != nullptr) {
38 if (!typeChecking) typeChecking = new TypeChecking(nullptr, typeMap, true);
39 passes.push_back(typeChecking);
40 }
41 passes.push_back(new DoDefaultValues(typeMap));
42 }
43};
44
45} // namespace P4
46
47#endif /* FRONTENDS_P4_DEFAULTVALUES_H_ */
Definition defaultValues.h:21
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