P4C
The P4 Compiler
BMV2::JsonObjects Class Reference

Public Member Functions

unsigned add_action (const cstring &name, Util::JsonArray *&params, Util::JsonArray *&body)
 
void add_enum (const cstring &enum_name, const cstring &entry_name, const unsigned entry_value)
 
void add_error (const cstring &name, const unsigned type)
 Add an error to json.
 
void add_extern (const cstring &name, const cstring &type, Util::JsonArray *attributes)
 
void add_extern_attribute (const cstring &name, const cstring &type, const cstring &value, Util::JsonArray *attributes)
 
unsigned add_header (const cstring &type, const cstring &name)
 Create a header instance in json.
 
void add_header_field (const cstring &name, Util::JsonArray *&field)
 
void add_header_stack (const cstring &type, const cstring &name, const unsigned size, const std::vector< unsigned > &header_ids)
 
unsigned add_header_type (const cstring &name)
 Create a header type with empty field list.
 
unsigned add_header_type (const cstring &name, Util::JsonArray *&fields, unsigned max_length)
 
void add_header_union_stack (const cstring &type, const cstring &name, const unsigned size, const std::vector< unsigned > &header_ids)
 
void add_meta_info ()
 
unsigned add_metadata (const cstring &type, const cstring &name)
 
void add_parse_vset (const cstring &name, const unsigned bitwidth, const big_int &size)
 
unsigned add_parser (const cstring &name)
 
void add_parser_op (const unsigned id, Util::IJson *op)
 
unsigned add_parser_state (const unsigned id, const cstring &state_name)
 
void add_parser_transition (const unsigned id, Util::IJson *transition)
 
void add_parser_transition_key (const unsigned id, Util::IJson *key)
 
void add_program_info (const cstring &name)
 
unsigned add_union (const cstring &type, Util::JsonArray *&fields, const cstring &name)
 Create a header_union instance in json.
 
unsigned add_union_type (const cstring &name, Util::JsonArray *&fields)
 
Util::JsonArray * append_array (Util::JsonArray *parent)
 Append a json array to a parent json array.
 
Util::JsonArray * create_parameters (Util::JsonObject *object)
 Insert a json array named 'parameters' in a parent json object.
 
Util::JsonObject * create_primitive (Util::JsonArray *parent, cstring name)
 
Util::JsonArray * get_field_list_contents (unsigned id) const
 
Util::JsonArray * insert_array_field (Util::JsonObject *parent, cstring name)
 Insert a json array to a parent object under key 'name'.
 

Static Public Member Functions

static Util::JsonObject * find_object_by_name (Util::JsonArray *array, const cstring &name)
 

Public Attributes

Util::JsonArray * actions
 
Util::JsonArray * calculations
 
Util::JsonArray * checksums
 
Util::JsonArray * counters
 
Util::JsonArray * deparsers
 
Util::JsonArray * enums
 
Util::JsonArray * errors
 
Util::JsonArray * externs
 
Util::JsonArray * field_aliases
 
Util::JsonArray * field_lists
 
Util::JsonArray * force_arith
 
Util::JsonArray * header_stacks
 
ordered_map< std::string, unsigned > header_type_id
 
Util::JsonArray * header_types
 
Util::JsonArray * header_union_stacks
 
Util::JsonArray * header_union_types
 
Util::JsonArray * header_unions
 
Util::JsonArray * headers
 
Util::JsonArray * learn_lists
 
std::map< unsigned, Util::JsonObject * > map_parser
 
std::map< unsigned, Util::JsonObject * > map_parser_state
 
Util::JsonObject * meta
 
Util::JsonArray * meter_arrays
 
Util::JsonArray * parse_vsets
 
Util::JsonArray * parsers
 
Util::JsonArray * pipelines
 
Util::JsonArray * register_arrays
 
Util::JsonObject * toplevel
 
ordered_map< std::string, unsigned > union_type_id
 

Member Function Documentation

◆ add_enum()

void BMV2::JsonObjects::add_enum ( const cstring &  enum_name,
const cstring &  entry_name,
const unsigned  entry_value 
)

Add a single enum entry to json. A enum entry is identified with { enum_name, entry_name, entry_value }

◆ add_header_field()

void BMV2::JsonObjects::add_header_field ( const cstring &  name,
Util::JsonArray *&  field 
)

Create a set of fields to an existing header type. The header type is decribed by the name.

◆ add_header_type()

unsigned BMV2::JsonObjects::add_header_type ( const cstring &  name,
Util::JsonArray *&  fields,
unsigned  max_length 
)

Create a header type in json.

Parameters
nameheader name
typeheader type
max_lengthmaximum length for a header with varbit fields; if 0 header does not contain varbit fields
fieldsa JsonArray for the fields in the header

◆ add_parser_state()

unsigned BMV2::JsonObjects::add_parser_state ( const unsigned  parser_id,
const cstring &  state_name 
)

insert parser state into a parser identified by parser_id return the id of the parser state