P4C
The P4 Compiler
Loading...
Searching...
No Matches
setHeaders.h
1
/*
2
* Copyright 2017 VMware, Inc.
3
* SPDX-FileCopyrightText: 2017 VMware, Inc.
4
*
5
* SPDX-License-Identifier: Apache-2.0
6
*/
7
8
#ifndef FRONTENDS_P4_SETHEADERS_H_
9
#define FRONTENDS_P4_SETHEADERS_H_
10
11
#include "frontends/common/resolveReferences/resolveReferences.h"
12
#include "frontends/p4/typeChecking/typeChecker.h"
13
#include "ir/ir.h"
14
15
namespace
P4
{
39
class
DoSetHeaders final :
public
Transform
{
40
TypeMap
*typeMap;
41
42
bool
containsHeaderType(
const
IR::Type *type);
43
void
generateSetValid(
const
IR::Expression *dest,
const
IR::Expression *src,
44
const
IR::Type *destType,
IR::Vector<IR::StatOrDecl>
&insert);
45
46
public
:
47
explicit
DoSetHeaders(
TypeMap
*typeMap) : typeMap(typeMap) {
48
CHECK_NULL(typeMap);
49
setName(
"DoSetHeaders"
);
50
}
51
const
IR::Node
*postorder(IR::AssignmentStatement *assign)
override
;
52
};
53
54
class
SetHeaders final :
public
PassManager {
55
public
:
56
explicit
SetHeaders(
TypeMap
*typeMap) {
57
passes.push_back(
new
P4::TypeChecking
(
nullptr
, typeMap));
58
passes.push_back(
new
P4::DoSetHeaders
(typeMap));
59
setName(
"SetHeaders"
);
60
}
61
};
62
63
}
// namespace P4
64
65
#endif
/* FRONTENDS_P4_SETHEADERS_H_ */
P4::DoSetHeaders
Definition
setHeaders.h:39
P4::IR::Node
Definition
node.h:53
P4::IR::Vector
Definition
ir/vector.h:59
P4::Transform
Definition
visitor.h:442
P4::TypeChecking
Definition
typeChecker.h:55
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
setHeaders.h
Generated by
1.13.2