8#ifndef BACKENDS_BMV2_PNA_NIC_PNAPROGRAMSTRUCTURE_H_
9#define BACKENDS_BMV2_PNA_NIC_PNAPROGRAMSTRUCTURE_H_
11#include "backends/common/portableProgramStructure.h"
29 : PortableProgramStructure(refMap, typeMap) {}
38 return ptName ==
"pna_main_parser_input_metadata_t" ||
39 ptName ==
"pna_main_input_metadata_t" || ptName ==
"pna_main_output_metadata_t";
48 CHECK_NULL(structure);
51 void modelError(
const char *format,
const IR::INode *node) {
53 (
cstring(format) +
"\nAre you using an up-to-date 'pna.p4'?").c_str(),
57 bool preorder(
const IR::PackageBlock *block)
override;
58 bool preorder(
const IR::ExternBlock *block)
override;
61 structure->block_type.clear();
62 structure->globals.clear();
63 return Inspector::init_apply(root);
72 : InspectPortableProgram(refMap, typeMap), pinfo(pinfo) {
74 setName(
"InspectPnaProgram");
77 void postorder(
const IR::P4Parser *p)
override;
78 void postorder(
const IR::P4Control *c)
override;
79 void postorder(
const IR::Declaration_Instance *di)
override;
81 void addTypesAndInstances(
const IR::Type_StructLike *type,
bool meta);
82 void addHeaderType(
const IR::Type_StructLike *st);
83 void addHeaderInstance(
const IR::Type_StructLike *st,
cstring name);
84 bool preorder(
const IR::Declaration_Variable *dv)
override;
85 bool preorder(
const IR::Parameter *parameter)
override;
Definition bmv2/pna_nic/pnaProgramStructure.h:22
ordered_map< const IR::Node *, pna_block_t > block_type
Architecture related information.
Definition bmv2/pna_nic/pnaProgramStructure.h:25
static bool isStandardMetadata(cstring ptName)
Definition bmv2/pna_nic/pnaProgramStructure.h:37
static bool isCounterMetadata(cstring ptName)
Definition bmv2/pna_nic/pnaProgramStructure.h:33
Definition portableProgramStructure.h:75
Definition portableProgramStructure.h:70
Definition portableProgramStructure.h:20
Class used to encode maps from paths to declarations.
Definition referenceMap.h:67
Definition ordered_map.h:32
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition action.cpp:9
void error(const char *format, Args &&...args)
Report an error with the given message.
Definition lib/error.h:58