82 ResourceMap *resourceMap;
85 explicit BuildResourceMap(ResourceMap *resourceMap) : resourceMap(resourceMap) {
86 CHECK_NULL(resourceMap);
89 bool preorder(
const IR::ControlBlock *control)
override {
90 resourceMap->emplace(control->container, control);
91 for (
auto cv : control->constantValue) {
92 resourceMap->emplace(cv.first, cv.second);
95 for (
const auto *c : control->container->controlLocals) {
96 if (c->is<IR::InstantiatedBlock>()) {
97 resourceMap->emplace(c, control->getValue(c));
103 bool preorder(
const IR::ParserBlock *parser)
override {
104 resourceMap->emplace(parser->container, parser);
105 for (
auto cv : parser->constantValue) {
106 resourceMap->emplace(cv.first, cv.second);
107 if (cv.second->is<IR::Block>()) {
108 visit(cv.second->getNode());
112 for (
const auto *c : parser->container->parserLocals) {
113 if (c->is<IR::InstantiatedBlock>()) {
114 resourceMap->emplace(c, parser->getValue(c));
120 bool preorder(
const IR::TableBlock *table)
override {
121 resourceMap->emplace(table->container, table);
122 for (
auto cv : table->constantValue) {
123 resourceMap->emplace(cv.first, cv.second);
124 if (cv.second->is<IR::Block>()) {
125 visit(cv.second->getNode());
131 bool preorder(
const IR::PackageBlock *package)
override {
132 for (
auto cv : package->constantValue) {
133 if (cv.second->is<IR::Block>()) {
134 visit(cv.second->getNode());
140 bool preorder(
const IR::ToplevelBlock *tlb)
override {
141 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:50
DirectMeterMap directMeterMap
All the direct meters. (TODO: This should be PSA-specific or V1MODEL-specific.)
Definition backends/common/programStructure.h:48
ordered_map< const IR::P4Action *, const IR::P4Control * > actions
Map action to parent control.
Definition backends/common/programStructure.h:35
ordered_map< const IR::P4Action *, unsigned > ids
For each action its json id.
Definition backends/common/programStructure.h:42
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24