8#ifndef MIDEND_COPYSTRUCTURES_H_
9#define MIDEND_COPYSTRUCTURES_H_
11#include "frontends/p4/typeChecking/typeChecker.h"
53 bool errorOnMethodCall;
61 explicit DoCopyStructures(
TypeMap *typeMap,
bool errorOnMethodCall,
bool copyHeaders =
false,
62 bool copyTuples =
true)
64 errorOnMethodCall(errorOnMethodCall),
65 copyHeaders(copyHeaders),
66 copyTuples(copyTuples) {
68 setName(
"DoCopyStructures");
73 const IR::Node *postorder(IR::AssignmentStatement *statement)
override;
102 explicit RemoveAliases(
TypeMap *typeMap) : typeMap(typeMap) {
104 setName(
"RemoveAliases");
107 auto rv = Transform::init_apply(node);
108 node->apply(nameGen);
113 const IR::Node *postorder(IR::AssignmentStatement *statement)
override;
114 const IR::Node *postorder(IR::P4Parser *parser)
override;
115 const IR::Node *postorder(IR::P4Control *control)
override;
118class CopyStructures :
public PassRepeated {
120 explicit CopyStructures(
TypeMap *typeMap,
bool errorOnMethodCall =
true,
121 bool copyHeaders =
false,
bool copyTuples =
false,
124 setName(
"CopyStructures");
125 if (typeChecking ==
nullptr) typeChecking =
new TypeChecking(
nullptr, typeMap);
126 addPasses({typeChecking,
new RemoveAliases(typeMap), typeChecking,
127 new DoCopyStructures(typeMap, errorOnMethodCall, copyHeaders, copyTuples)});
Definition copyStructures.h:47
Definition indexed_vector.h:31
Definition referenceMap.h:36
Definition copyStructures.h:95
Definition typeChecker.h:55
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:13