17#ifndef MIDEND_COPYSTRUCTURES_H_
18#define MIDEND_COPYSTRUCTURES_H_
20#include "frontends/p4/typeChecking/typeChecker.h"
62 bool errorOnMethodCall;
70 explicit DoCopyStructures(
TypeMap *typeMap,
bool errorOnMethodCall,
bool copyHeaders =
false,
71 bool copyTuples =
true)
73 errorOnMethodCall(errorOnMethodCall),
74 copyHeaders(copyHeaders),
75 copyTuples(copyTuples) {
77 setName(
"DoCopyStructures");
82 const IR::Node *postorder(IR::AssignmentStatement *statement)
override;
111 explicit RemoveAliases(
TypeMap *typeMap) : typeMap(typeMap) {
113 setName(
"RemoveAliases");
116 auto rv = Transform::init_apply(node);
117 node->apply(nameGen);
122 const IR::Node *postorder(IR::AssignmentStatement *statement)
override;
123 const IR::Node *postorder(IR::P4Parser *parser)
override;
124 const IR::Node *postorder(IR::P4Control *control)
override;
127class CopyStructures :
public PassRepeated {
129 explicit CopyStructures(
TypeMap *typeMap,
bool errorOnMethodCall =
true,
130 bool copyHeaders =
false,
bool copyTuples =
false,
133 setName(
"CopyStructures");
134 if (typeChecking ==
nullptr) typeChecking =
new TypeChecking(
nullptr, typeMap);
135 addPasses({typeChecking,
new RemoveAliases(typeMap), typeChecking,
136 new DoCopyStructures(typeMap, errorOnMethodCall, copyHeaders, copyTuples)});
Definition copyStructures.h:56
Definition indexed_vector.h:40
Definition referenceMap.h:36
Definition copyStructures.h:104
Definition typeChecker.h:55
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24