![]()  | 
  
    P4C
    
   The P4 Compiler 
   | 
 
Public Member Functions | |
| JsonObjects () | |
| Constructs a new JsonObjects instance. Initializes the top-level JsonObject and other member arrays.  | |
| unsigned | add_action (const cstring &name, Util::JsonArray *¶ms, Util::JsonArray *&body) | 
| Adds an action to the JSON representation.   | |
| void | add_enum (const cstring &enum_name, const cstring &entry_name, const unsigned entry_value) | 
| Adds a single enum entry to the JSON representation.   | |
| void | add_error (const cstring &name, const unsigned type) | 
| Adds an error to the JSON representation.   | |
| void | add_extern (const cstring &name, const cstring &type, Util::JsonArray *attributes) | 
| Adds an extern instance to the JSON representation.   | |
| void | add_extern_attribute (const cstring &name, const cstring &type, const cstring &value, Util::JsonArray *attributes) | 
| Adds an extern attribute to the JSON representation.   | |
| unsigned | add_header (const cstring &type, const cstring &name) | 
| Creates a header instance in JSON.   | |
| void | add_header_field (const cstring &name, Util::JsonArray *&field) | 
| Adds a set of fields to an existing header type.   | |
| void | add_header_stack (const cstring &type, const cstring &name, const unsigned size, const std::vector< unsigned > &header_ids) | 
| Adds a header stack to the JSON representation.   | |
| 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) | 
| Create a header type in json.   | |
| void | add_header_union_stack (const cstring &type, const cstring &name, const unsigned size, const std::vector< unsigned > &header_ids) | 
| Adds a header union stack to the JSON representation.   | |
| void | add_meta_info () | 
| Adds meta information to the JsonObject.  | |
| unsigned | add_metadata (const cstring &type, const cstring &name) | 
| Creates a metadata header instance in JSON.   | |
| void | add_parse_vset (const cstring &name, const unsigned bitwidth, const big_int &size) | 
| Adds a parse vset to the JSON representation.   | |
| unsigned | add_parser (const cstring &name) | 
| Adds a parser to the JSON representation.   | |
| void | add_parser_op (const unsigned id, Util::IJson *op) | 
| Adds a parser operation to an existing parser state in the JSON representation.   | |
| unsigned | add_parser_state (const unsigned id, const cstring &state_name) | 
| Adds a parser state to an existing parser in the JSON representation.   | |
| void | add_parser_transition (const unsigned id, Util::IJson *transition) | 
| Adds a parser transition to an existing parser state in the JSON representation.   | |
| void | add_parser_transition_key (const unsigned id, Util::IJson *key) | 
| Adds a parser transition key to an existing parser state in the JSON representation.   | |
| void | add_program_info (const cstring &name) | 
| Adds program information to the top-level JsonObject.   | |
| unsigned | add_union (const cstring &type, Util::JsonArray *&fields, const cstring &name) | 
| Creates a header union instance in JSON.   | |
| unsigned | add_union_type (const cstring &name, Util::JsonArray *&fields) | 
| Creates a union type in JSON.   | |
| Util::JsonArray * | append_array (Util::JsonArray *parent) | 
| Appends a JSON array to a parent JSON array.   | |
| Util::JsonArray * | create_parameters (Util::JsonObject *object) | 
| Creates a JSON array named 'parameters' in a parent JsonObject.   | |
| Util::JsonObject * | create_primitive (Util::JsonArray *parent, cstring name) | 
| Creates a primitive JsonObject in a parent JsonArray with the given name.   | |
| Util::JsonArray * | get_field_list_contents (unsigned id) const | 
| Retrieves the contents of a field list identified by its ID.   | |
| Util::JsonArray * | insert_array_field (Util::JsonObject *parent, cstring name) | 
| Inserts a JSON array into a parent object under a specified key.   | |
Static Public Member Functions | |
| static Util::JsonObject * | find_object_by_name (Util::JsonArray *array, const cstring &name) | 
| Finds an object in a JSON array by its 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 | 
| unsigned BMV2::JsonObjects::add_action | ( | const cstring & | name, | 
| Util::JsonArray *& | params, | ||
| Util::JsonArray *& | body ) | 
Adds an action to the JSON representation.
| name | The name of the action. | 
| params | The runtime data parameters of the action. | 
| body | The primitives body of the action. | 
| void BMV2::JsonObjects::add_enum | ( | const cstring & | enum_name, | 
| const cstring & | entry_name, | ||
| const unsigned | entry_value ) | 
Adds a single enum entry to the JSON representation.
| enum_name | The name of the enum. | 
| entry_name | The name of the enum entry. | 
| entry_value | The value of the enum entry. | 
| void BMV2::JsonObjects::add_error | ( | const cstring & | name, | 
| const unsigned | type ) | 
Adds an error to the JSON representation.
| name | The name of the error. | 
| type | The type of the error. | 
| void BMV2::JsonObjects::add_extern | ( | const cstring & | name, | 
| const cstring & | type, | ||
| Util::JsonArray * | attributes ) | 
Adds an extern instance to the JSON representation.
| name | The name of the extern instance. | 
| type | The type of the extern instance. | 
| attributes | The attributes array of the extern instance. | 
| void BMV2::JsonObjects::add_extern_attribute | ( | const cstring & | name, | 
| const cstring & | type, | ||
| const cstring & | value, | ||
| Util::JsonArray * | attributes ) | 
Adds an extern attribute to the JSON representation.
| name | The name of the attribute. | 
| type | The type of the attribute. | 
| value | The value of the attribute. | 
| attributes | The attributes array to add the new attribute to. | 
Creates a header instance in JSON.
| type | The type of the header. | 
| name | The name of the header instance. | 
| void BMV2::JsonObjects::add_header_field | ( | const cstring & | name, | 
| Util::JsonArray *& | field ) | 
Adds a set of fields to an existing header type.
| name | The name of the header type. | 
| field | The JsonArray containing the fields to add. | 
| void BMV2::JsonObjects::add_header_stack | ( | const cstring & | type, | 
| const cstring & | name, | ||
| const unsigned | size, | ||
| const std::vector< unsigned > & | header_ids ) | 
Adds a header stack to the JSON representation.
| type | The type of the headers in the stack. | 
| name | The name of the header stack. | 
| size | The size of the header stack. | 
| ids | The vector of header IDs in the stack. | 
| unsigned BMV2::JsonObjects::add_header_type | ( | const cstring & | name | ) | 
Create a header type with empty field list.
| name | header name | 
| type | header type | 
| fields | a JsonArray for the fields in the header | 
| max_length | maximum length for a header with varbit fields; if 0 header does not | 
| unsigned BMV2::JsonObjects::add_header_type | ( | const cstring & | name, | 
| Util::JsonArray *& | fields, | ||
| unsigned | max_length ) | 
Create a header type in json.
| name | header name | 
| type | header type | 
| fields | a JsonArray for the fields in the header | 
| max_length | maximum length for a header with varbit fields; if 0 header does not | 
Create a header type in json.
| name | header name | 
| type | header type | 
| max_length | maximum length for a header with varbit fields; if 0 header does not contain varbit fields | 
| fields | a JsonArray for the fields in the header | 
| void BMV2::JsonObjects::add_header_union_stack | ( | const cstring & | type, | 
| const cstring & | name, | ||
| const unsigned | size, | ||
| const std::vector< unsigned > & | header_ids ) | 
Adds a header union stack to the JSON representation.
| type | The type of the header unions in the stack. | 
| name | The name of the header union stack. | 
| size | The size of the header union stack. | 
| ids | The vector of header union IDs in the stack. | 
Creates a metadata header instance in JSON.
| type | The type of the metadata. | 
| name | The name of the metadata header instance. | 
| void BMV2::JsonObjects::add_parse_vset | ( | const cstring & | name, | 
| const unsigned | bitwidth, | ||
| const big_int & | size ) | 
Adds a parse vset to the JSON representation.
| name | The name of the parse vset. | 
| bitwidth | The compressed bit width of the parse vset. | 
| size | The maximum size of the parse vset. | 
| unsigned BMV2::JsonObjects::add_parser | ( | const cstring & | name | ) | 
Adds a parser to the JSON representation.
| name | The name of the parser. | 
| void BMV2::JsonObjects::add_parser_op | ( | const unsigned | id, | 
| Util::IJson * | op ) | 
Adds a parser operation to an existing parser state in the JSON representation.
| state_id | The ID of the parser state. | 
| op | The operation to add. | 
| unsigned BMV2::JsonObjects::add_parser_state | ( | const unsigned | id, | 
| const cstring & | state_name ) | 
Adds a parser state to an existing parser in the JSON representation.
| parser_id | The ID of the parser. | 
| state_name | The name of the parser state. | 
| void BMV2::JsonObjects::add_parser_transition | ( | const unsigned | id, | 
| Util::IJson * | transition ) | 
Adds a parser transition to an existing parser state in the JSON representation.
| state_id | The ID of the parser state. | 
| transition | The transition to add. | 
| void BMV2::JsonObjects::add_parser_transition_key | ( | const unsigned | id, | 
| Util::IJson * | key ) | 
Adds a parser transition key to an existing parser state in the JSON representation.
| state_id | The ID of the parser state. | 
| newKey | The new transition key to add. | 
| void BMV2::JsonObjects::add_program_info | ( | const cstring & | name | ) | 
Adds program information to the top-level JsonObject.
| name | The name of the program. | 
| unsigned BMV2::JsonObjects::add_union | ( | const cstring & | type, | 
| Util::JsonArray *& | fields, | ||
| const cstring & | name ) | 
Creates a header union instance in JSON.
| type | The type of the header union. | 
| fields | A JsonArray containing the header IDs in the union. | 
| name | The name of the header union instance. | 
| unsigned BMV2::JsonObjects::add_union_type | ( | const cstring & | name, | 
| Util::JsonArray *& | fields ) | 
Creates a union type in JSON.
| name | The name of the union type. | 
| fields | A JsonArray containing the headers in the union type. | 
| Util::JsonArray * BMV2::JsonObjects::append_array | ( | Util::JsonArray * | parent | ) | 
Appends a JSON array to a parent JSON array.
| parent | The parent JsonArray to which the array will be appended. | 
| Util::JsonArray * BMV2::JsonObjects::create_parameters | ( | Util::JsonObject * | object | ) | 
Creates a JSON array named 'parameters' in a parent JsonObject.
| object | The parent JsonObject in which the 'parameters' array will be created. | 
| Util::JsonObject * BMV2::JsonObjects::create_primitive | ( | Util::JsonArray * | parent, | 
| cstring | name ) | 
Creates a primitive JsonObject in a parent JsonArray with the given name.
| parent | The parent JsonArray in which the primitive will be created. | 
| name | The name of the primitive. | 
      
  | 
  static | 
Finds an object in a JSON array by its name.
| array | The JSON array to search in. | 
| name | The name of the object to find. | 
| Util::JsonArray * BMV2::JsonObjects::get_field_list_contents | ( | unsigned | id | ) | const | 
Retrieves the contents of a field list identified by its ID.
Given a field list id returns the array of values called "elements".
| id | The ID of the field list. | 
| Util::JsonArray * BMV2::JsonObjects::insert_array_field | ( | Util::JsonObject * | parent, | 
| cstring | name ) | 
Inserts a JSON array into a parent object under a specified key.
| parent | The parent JsonObject to insert the array into. |