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::JsonArrayappend_array (Util::JsonArray *parent)
 Append a json array to a parent json array.
 
Util::JsonArraycreate_parameters (Util::JsonObject *object)
 Insert a json array named 'parameters' in a parent json object.
 
Util::JsonObjectcreate_primitive (Util::JsonArray *parent, cstring name)
 
Util::JsonArrayget_field_list_contents (unsigned id) const
 
Util::JsonArrayinsert_array_field (Util::JsonObject *parent, cstring name)
 Insert a json array to a parent object under key 'name'.
 

Static Public Member Functions

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

Public Attributes

Util::JsonArrayactions
 
Util::JsonArraycalculations
 
Util::JsonArraychecksums
 
Util::JsonArraycounters
 
Util::JsonArraydeparsers
 
Util::JsonArrayenums
 
Util::JsonArrayerrors
 
Util::JsonArrayexterns
 
Util::JsonArrayfield_aliases
 
Util::JsonArrayfield_lists
 
Util::JsonArrayforce_arith
 
Util::JsonArrayheader_stacks
 
ordered_map< std::string, unsigned > header_type_id
 
Util::JsonArrayheader_types
 
Util::JsonArrayheader_union_stacks
 
Util::JsonArrayheader_union_types
 
Util::JsonArrayheader_unions
 
Util::JsonArrayheaders
 
Util::JsonArraylearn_lists
 
std::map< unsigned, Util::JsonObject * > map_parser
 
std::map< unsigned, Util::JsonObject * > map_parser_state
 
Util::JsonObjectmeta
 
Util::JsonArraymeter_arrays
 
Util::JsonArrayparse_vsets
 
Util::JsonArrayparsers
 
Util::JsonArraypipelines
 
Util::JsonArrayregister_arrays
 
Util::JsonObjecttoplevel
 
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