GCC Middle and Back End API Reference
sarif_object Class Reference

#include <diagnostic-format-sarif.h>

Inheritance diagram for sarif_object:
Collaboration diagram for sarif_object:

Public Member Functions

sarif_property_bagget_or_create_properties ()
 
enum kind get_kind () const final override
 
void print (pretty_printer *pp, bool formatted) const final override
 
void set (const char *key, value *v)
 
valueget (const char *key) const
 
void set_string (const char *key, const char *utf8_value)
 
void set_integer (const char *key, long v)
 
void set_float (const char *key, double v)
 
void set_bool (const char *key, bool v)
 
void dump (FILE *, bool formatted) const
 

Private Types

typedef hash_map< char *, value *, simple_hashmap_traits< nofree_string_hash, value * > > map_t
 

Private Attributes

map_t m_map
 
auto_vec< const char * > m_keys
 

Detailed Description

Concrete subclass of json::object for SARIF objects that can
contain property bags (as per SARIF v2.1.0 section 3.8.1, which has:
"In addition to those properties that are explicitly documented, every
object defined in this document MAY contain a property named properties
whose value is a property bag.")   

Member Typedef Documentation

◆ map_t

typedef hash_map<char *, value *, simple_hashmap_traits<nofree_string_hash, value *> > json::object::map_t
privateinherited

Member Function Documentation

◆ dump()

void value::dump ( FILE * outf,
bool formatted ) const
inherited
class json::value.   
Dump this json::value tree to OUTF.

The key/value pairs of json::objects are printed in the order
in which the keys were originally inserted.   

References pp_buffer(), pp_flush(), json::value::print(), and output_buffer::stream.

Referenced by json_output_format::flush_to_file(), sarif_builder::flush_to_file(), and generate_results().

◆ get()

value * object::get ( const char * key) const
inherited
Get the json::value * for KEY.

The object retains ownership of the value.   

References gcc_assert, json::object::get(), json::object::m_map, and NULL.

Referenced by json::object::get(), and get_or_create_properties().

◆ get_kind()

enum kind json::object::get_kind ( ) const
inlinefinaloverridevirtualinherited

Implements json::value.

References json::JSON_OBJECT.

◆ get_or_create_properties()

sarif_property_bag & sarif_object::get_or_create_properties ( )
class sarif_object : public json::object.   

References json::object::get(), json::value::get_kind(), json::JSON_OBJECT, and json::object::set().

◆ print()

void object::print ( pretty_printer * pp,
bool formatted ) const
finaloverridevirtualinherited

◆ set()

void object::set ( const char * key,
value * v )
inherited
Set the json::value * for KEY, taking ownership of V
(and taking a copy of KEY if necessary).   

References gcc_assert, hash_map< KeyId, Value, Traits >::get(), json::object::m_keys, json::object::m_map, and hash_map< KeyId, Value, Traits >::put().

Referenced by optrecord_json_writer::add_pass_list(), optrecord_json_writer::add_record(), sarif_result::add_related_location(), compiler_data_hooks::add_sarif_invocation_properties(), generate_results(), sarif_builder::get_or_create_artifact(), get_or_create_properties(), optrecord_json_writer::inlining_chain_to_json(), json_from_fixit_hint(), json_from_location_range(), sarif_builder::make_artifact_change_object(), sarif_builder::make_code_flow_object(), sarif_builder::make_driver_tool_component_object(), sarif_builder::make_fix_object(), timer::make_json(), timer::timevar_def::make_json(), make_json_for_path(), sarif_builder::make_location_object(), sarif_builder::make_location_object(), sarif_builder::make_replacement_object(), sarif_builder::make_reporting_descriptor_reference_object_for_cwe_id(), sarif_builder::make_result_object(), sarif_builder::make_run_object(), sarif_builder::make_thread_flow_location_object(), sarif_builder::make_tool_object(), sarif_builder::make_top_level_object(), infinite_loop_diagnostic::maybe_add_sarif_properties(), sarif_builder::maybe_make_artifact_content_object(), sarif_builder::maybe_make_cwe_taxonomy_object(), sarif_builder::maybe_make_physical_location_object(), sarif_builder::maybe_make_region_object_for_context(), sarif_result::on_diagram(), json_output_format::on_end_diagnostic(), sarif_result::on_nested_diagnostic(), optrecord_json_writer::optinfo_to_json(), optrecord_json_writer::optrecord_json_writer(), output_intermediate_json_line(), output_json_intermediate_file(), optrecord_json_writer::pass_to_json(), sarif_artifact::populate_contents(), sarif_artifact::populate_roles(), sarif_invocation::prepare_to_flush(), sarif_ice_notification::sarif_ice_notification(), sarif_thread_flow::sarif_thread_flow(), sarif_builder::set_any_logical_locs_arr(), json::object::set_bool(), json::object::set_float(), json::object::set_integer(), json::object::set_string(), and infinite_loop::to_json().

◆ set_bool()

void object::set_bool ( const char * key,
bool v )
inherited
Set value of KEY within this object to the JSON
literal true or false, based on V.   

References json::object::set().

Referenced by timer::make_json(), output_intermediate_json_line(), and sarif_invocation::prepare_to_flush().

◆ set_float()

void object::set_float ( const char * key,
double v )
inherited
Set value of KEY within this object to a JSON
floating point value based on V.   

References json::object::set().

Referenced by make_json_for_timevar_time_def().

◆ set_integer()

◆ set_string()

void object::set_string ( const char * key,
const char * utf8_value )
inherited
Set value of KEY within this object to a JSON
string value based on UTF8_VALUE.   

References json::object::set().

Referenced by generate_results(), sarif_builder::get_or_create_artifact(), optrecord_json_writer::impl_location_to_json(), optrecord_json_writer::inlining_chain_to_json(), json_from_expanded_location(), json_from_fixit_hint(), json_from_location_range(), optrecord_json_writer::location_to_json(), sarif_builder::make_artifact_content_object(), sarif_builder::make_artifact_location_object(), sarif_builder::make_artifact_location_object_for_pwd(), sarif_builder::make_driver_tool_component_object(), timer::make_json(), timer::timevar_def::make_json(), make_json_for_path(), sarif_builder::make_message_object(), sarif_builder::make_message_object_for_diagram(), sarif_builder::make_multiformat_message_string(), sarif_builder::make_reporting_descriptor_object_for_cwe_id(), sarif_builder::make_reporting_descriptor_object_for_warning(), sarif_builder::make_reporting_descriptor_reference_object_for_cwe_id(), sarif_builder::make_result_object(), make_sarif_logical_location_object(), sarif_builder::make_tool_component_reference_object_for_cwe(), sarif_builder::make_tool_object(), sarif_builder::make_top_level_object(), sarif_builder::maybe_make_artifact_content_object(), sarif_builder::maybe_make_cwe_taxonomy_object(), json_output_format::on_end_diagnostic(), optrecord_json_writer::optinfo_to_json(), optrecord_json_writer::optrecord_json_writer(), output_intermediate_json_line(), output_json_intermediate_file(), optrecord_json_writer::pass_to_json(), optrecord_json_writer::profile_count_to_json(), sarif_ice_notification::sarif_ice_notification(), and sarif_thread_flow::sarif_thread_flow().

Field Documentation

◆ m_keys

auto_vec<const char *> json::object::m_keys
privateinherited

◆ m_map

map_t json::object::m_map
privateinherited

The documentation for this class was generated from the following files: