P4C
The P4 Compiler
Loading...
Searching...
No Matches
P4::ProgramStructure Class Reference

#include <programStructure.h>

Inheritance diagram for P4::ProgramStructure:
[legend]

Public Attributes

ordered_map< const IR::P4Action *, const IR::P4Control * > actions
 Map action to parent control.
 
ordered_map< cstring, const IR::P4Table * > directCounterMap
 All the direct counters. (TODO: This should be PSA-specific or V1MODEL-specific.)
 
DirectMeterMap directMeterMap
 All the direct meters. (TODO: This should be PSA-specific or V1MODEL-specific.)
 
ordered_map< const IR::IDeclaration *, unsigned int > errorCodesMap
 All error codes.
 
ordered_map< const IR::P4Action *, unsigned > ids
 For each action its json id.
 
ordered_map< const IR::Parameter *, unsigned > index
 
std::set< cstringmatch_kinds
 All match kinds.
 
ordered_set< const IR::Parameter * > nonActionParameters
 Parameters of controls/parsers.
 
ResourceMap resourceMap
 map IR node to compile-time allocated resource blocks.
 
std::map< const IR::StructField *, cstringscalarMetadataFields
 
std::vector< const IR::Declaration_Variable * > variables
 All local variables.
 

Detailed Description

Represents all the compile-time information about a P4-16 program that is common to all P4 targets (in particular simple switch and psa switch).

Member Data Documentation

◆ index

ordered_map<const IR::Parameter *, unsigned> P4::ProgramStructure::index

Maps each Parameter of an action to its positional index. Needed to generate code for actions.

◆ scalarMetadataFields

std::map<const IR::StructField *, cstring> P4::ProgramStructure::scalarMetadataFields

We place scalar user metadata fields (i.e., bit<>, bool) in the scalarsName metadata object, so we may need to rename these fields. This map holds the new names.