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
16
namespace
P4
{
17
27
class
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
45
class
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_ */
P4::ClearTypeMap
Definition
typeChecker.h:32
P4::DoDefaultArguments
Definition
defaultArguments.h:27
P4::IR::Node
Definition
node.h:53
P4::Transform
Definition
visitor.h:442
P4::TypeChecking
Definition
typeChecker.h:55
P4::TypeInference
Definition
typeChecker.h:491
P4::TypeMap
Definition
typeMap.h:32
P4
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition
applyOptionsPragmas.cpp:13
frontends
p4
defaultArguments.h
Generated by
1.13.2