17    unsigned scalars_width = 0;
 
   19    std::map<const IR::StructField *, cstring> scalarMetadataFields;
 
   47    std::map<const cstring, IR::IndexedVector<IR::Parameter> *> args_struct_map;
 
   48    std::map<const IR::Declaration_Instance *, cstring> csum_map;
 
   49    std::map<cstring, int> error_map;
 
   50    std::vector<const IR::Declaration_Instance *> externDecls;
 
   51    std::map<cstring, std::vector<std::pair<cstring, cstring>>> key_map;
 
   52    std::map<cstring, const IR::P4Table *> group_tables;
 
   53    std::map<cstring, const IR::P4Table *> member_tables;
 
   55    std::set<cstring> pipeline_controls;
 
   56    std::set<cstring> non_pipeline_controls;
 
   58    IR::Type_Struct *metadataStruct;
 
   59    IR::Expression *ipsec_header;
 
   60    cstring local_metadata_type = cstring::empty;
 
   61    cstring header_type = cstring::empty;
 
   68    void push_variable(
const IR::DpdkDeclaration *d) { variables.push_back(d); }
 
   71    bool hasVisited(
const IR::Type_StructLike *st) {
 
   72        if (
auto h = st->to<IR::Type_Header>())
 
   73            return header_types.count(h->getName());
 
   74        else if (
auto s = st->to<IR::Type_Struct>())
 
   75            return metadata_types.count(s->getName());
 
   76        else if (
auto u = st->to<IR::Type_HeaderUnion>())
 
   77            return header_union_types.count(u->getName());
 
   87    bool isPSA(
void) { 
return (p4arch == 
"psa") ? true : 
false; }
 
   95    bool isPNA(
void) { 
return (p4arch == 
"pna") ? true : 
false; }
 
 
  122        CHECK_NULL(structure);
 
  125    bool preorder(
const IR::ToplevelBlock *block) 
override;
 
  126    bool preorder(
const IR::PackageBlock *block) 
override;
 
  127    void parse_psa_block(
const IR::PackageBlock *);
 
  128    void parse_pna_block(
const IR::PackageBlock *);
 
  131        structure->variables.clear();
 
  132        structure->header_types.clear();
 
  133        structure->metadata_types.clear();
 
  134        structure->parsers.clear();
 
  135        structure->deparsers.clear();
 
  136        structure->pipelines.clear();
 
  137        structure->actions.clear();
 
  138        return Inspector::init_apply(root);
 
 
  150        : refMap(refMap), typeMap(typeMap), structure(structure) {
 
  151        CHECK_NULL(structure);
 
  154    bool isHeaders(
const IR::Type_StructLike *st);
 
  155    void addTypesAndInstances(
const IR::Type_StructLike *type, 
bool meta);
 
  156    void addHeaderType(
const IR::Type_StructLike *st);
 
  157    void addHeaderInstance(
const IR::Type_StructLike *st, 
cstring name);
 
  158    bool preorder(
const IR::Declaration_Variable *dv) 
override;
 
  159    bool preorder(
const IR::Parameter *parameter) 
override;
 
  160    bool preorder(
const IR::P4Action *) 
override;
 
  161    bool isStandardMetadata(
cstring);