73 ResourceMap *resourceMap;
76 explicit BuildResourceMap(ResourceMap *resourceMap) : resourceMap(resourceMap) {
77 CHECK_NULL(resourceMap);
80 bool preorder(
const IR::ControlBlock *control)
override {
81 resourceMap->emplace(control->container, control);
82 for (
auto cv : control->constantValue) {
83 resourceMap->emplace(cv.first, cv.second);
86 for (
const auto *c : control->container->controlLocals) {
87 if (c->is<IR::InstantiatedBlock>()) {
88 resourceMap->emplace(c, control->getValue(c));
94 bool preorder(
const IR::ParserBlock *parser)
override {
95 resourceMap->emplace(parser->container, parser);
96 for (
auto cv : parser->constantValue) {
97 resourceMap->emplace(cv.first, cv.second);
98 if (cv.second->is<IR::Block>()) {
99 visit(cv.second->getNode());
103 for (
const auto *c : parser->container->parserLocals) {
104 if (c->is<IR::InstantiatedBlock>()) {
105 resourceMap->emplace(c, parser->getValue(c));
111 bool preorder(
const IR::TableBlock *table)
override {
112 resourceMap->emplace(table->container, table);
113 for (
auto cv : table->constantValue) {
114 resourceMap->emplace(cv.first, cv.second);
115 if (cv.second->is<IR::Block>()) {
116 visit(cv.second->getNode());
122 bool preorder(
const IR::PackageBlock *package)
override {
123 for (
auto cv : package->constantValue) {
124 if (cv.second->is<IR::Block>()) {
125 visit(cv.second->getNode());
131 bool preorder(
const IR::ToplevelBlock *tlb)
override {
132 const auto *
package = tlb->getMain();
ordered_map< cstring, const IR::P4Table * > directCounterMap
All the direct counters. (TODO: This should be PSA-specific or V1MODEL-specific.)
Definition backends/common/programStructure.h:41
DirectMeterMap directMeterMap
All the direct meters. (TODO: This should be PSA-specific or V1MODEL-specific.)
Definition backends/common/programStructure.h:39
ordered_map< const IR::P4Action *, const IR::P4Control * > actions
Map action to parent control.
Definition backends/common/programStructure.h:26
ordered_map< const IR::P4Action *, unsigned > ids
For each action its json id.
Definition backends/common/programStructure.h:33
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:13