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
15namespace P4 {
39class 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
54class 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_ */
Definition setHeaders.h:39
Definition node.h:53
Definition ir/vector.h:59
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