P4C
The P4 Compiler
Loading...
Searching...
No Matches
defaultArguments.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_DEFAULTARGUMENTS_H_
9#define FRONTENDS_P4_DEFAULTARGUMENTS_H_
10
11#include "frontends/common/resolveReferences/resolveReferences.h"
12#include "frontends/p4/typeChecking/typeChecker.h"
13#include "frontends/p4/typeMap.h"
14#include "ir/ir.h"
15
16namespace P4 {
17
27class DoDefaultArguments : public Transform, public ResolutionContext {
28 TypeMap *typeMap;
29
30 public:
31 explicit DoDefaultArguments(TypeMap *typeMap) : typeMap(typeMap) {
32 setName("DoDefaultArguments");
33 CHECK_NULL(typeMap);
34 }
35 const IR::Node *postorder(IR::MethodCallExpression *expression) override;
36 const IR::Node *postorder(IR::Declaration_Instance *inst) override;
37 const IR::Node *postorder(IR::ConstructorCallExpression *ccc) override;
38 const IR::Node *preorder(IR::ActionList *al) override {
39 // don't modify the action lists in tables
40 prune();
41 return al;
42 }
43};
44
45class DefaultArguments : public PassManager {
46 public:
47 explicit DefaultArguments(TypeMap *typeMap) {
48 setName("DefaultArguments");
49 passes.push_back(new TypeChecking(nullptr, typeMap));
50 passes.push_back(new DoDefaultArguments(typeMap));
51 passes.push_back(new ClearTypeMap(typeMap));
52 // this may insert casts into the new arguments
53 passes.push_back(new TypeInference(typeMap, false));
54 }
55};
56
57} // namespace P4
58
59#endif /* FRONTENDS_P4_DEFAULTARGUMENTS_H_ */
Definition typeChecker.h:32
Definition defaultArguments.h:27
Definition node.h:53
Definition visitor.h:442
Definition typeChecker.h:55
Definition typeChecker.h:491
Definition typeMap.h:32
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:13