P4C
The P4 Compiler
|
#include <unique_id.h>
Public Types | |
enum | pre_placed_type_t { NO_PP , TIND_PP , ADATA_PP } |
enum | type_t { INVALID , TERNARY_INDIRECT , IDLETIME , COUNTER , METER , SELECTOR , STATEFUL_ALU , ACTION_DATA } |
Public Member Functions | |
UniqueAttachedId (cstring n, bool direct, type_t t) | |
UniqueAttachedId (pre_placed_type_t ppt) | |
std::string | build_name () const |
bool | has_meter_type () const |
bool | name_valid () const |
operator bool () const | |
bool | operator!= (const UniqueAttachedId &uai) const |
bool | operator< (const UniqueAttachedId &uai) const |
bool | operator== (const UniqueAttachedId &uai) const |
void | toJSON (P4::JSONGenerator &json) const |
Static Public Member Functions | |
static UniqueAttachedId | fromJSON (P4::JSONLoader &json) |
Public Attributes | |
cstring | name |
enum P4::UniqueAttachedId::type_t | type = INVALID |
The purpose of this class is to provide a unique identification of an BackendAttached table per IR::MAU::Table object. The only way to guarantee to uniqueness is both by name and by an associated type. For example, a P4 object could in theory have multiple counters, but these counters would have to have separate names. Also, let's say a selector and and action profile have the same name (which they do in P4-16). The types of these BackendAttached tables would be different.
This id can be generated by any IR::MAU::AttachedMemory object. Furthermore, it is used to associate per flow enable bits and meter types.