52 std::map<cstring, std::map<cstring, cstring>> replacementMap;
54 std::map<IR::Declaration_Variable *, IR::IndexedVector<IR::Declaration>> replaceDVMap;
58 : refMap(refMap), typeMap(typeMap) {}
59 const IR::Node *postorder(IR::Type_Struct *sf)
override;
60 const IR::Node *postorder(IR::Declaration_Variable *dv)
override;
61 const IR::Node *postorder(IR::Member *m)
override;
62 const IR::Node *postorder(IR::P4Parser *parser)
override;
63 const IR::Node *postorder(IR::P4Control *control)
override;
64 const IR::Node *postorder(IR::P4Action *action)
override;
65 bool hasHeaderUnionField(IR::Type_Struct *s);
143 IR::IndexedVector<IR::Declaration> toInsert;
147 : refMap(refMap), typeMap(typeMap) {
148 setName(
"HandleValidityHeaderUnion");
150 const IR::Node *postorder(IR::AssignmentStatement *assn)
override;
151 const IR::Node *postorder(IR::IfStatement *a)
override;
152 const IR::Node *postorder(IR::SwitchStatement *a)
override;
153 const IR::Node *postorder(IR::MethodCallStatement *mcs)
override;
154 const IR::Node *postorder(IR::P4Parser *parser)
override;
155 const IR::Node *postorder(IR::P4Control *control)
override;
156 const IR::Node *postorder(IR::P4Action *action)
override;
157 const IR::MethodCallStatement *processValidityForStr(
const IR::Statement *s,
158 const IR::Member *m,
cstring headerElement,
160 const IR::Node *setInvalidforRest(
const IR::Statement *s,
const IR::Member *m,
161 const IR::Type_HeaderUnion *hu,
cstring exclude,
162 bool setValidforCurrMem);
163 const IR::Node *expandIsValid(
const IR::Statement *a,
const IR::MethodCallExpression *mce,
164 IR::IndexedVector<IR::StatOrDecl> &code_block);