GCC Middle and Back End API Reference
diagnostic_graph Struct Reference
Inheritance diagram for diagnostic_graph:
Collaboration diagram for diagnostic_graph:

Public Member Functions

 diagnostic_graph (diagnostic_manager &)
diagnostic_nodeadd_node_with_id (std::string node_id, diagnostic_node *parent_node)
diagnostic_edgeadd_edge_with_label (const char *edge_id, diagnostic_node &src_node, diagnostic_node &dst_node, const char *label)
const char * get_description () const
void set_description (const char *desc)
void set_description (std::string desc)
nodeget_node_by_id (const char *id) const
edgeget_edge_by_id (const char *id) const
size_t get_num_nodes () const
nodeget_node (size_t idx) const
size_t get_num_edges () const
edgeget_edge (size_t idx) const
void dump () const
std::unique_ptr< json::objectmake_json_sarif_graph () const
std::unique_ptr< dot::graphmake_dot_graph () const
void add_node (std::unique_ptr< node > n)
void add_edge (std::unique_ptr< edge > e)
void add_edge (const char *id, node &src_node, node &dst_node, const char *label=nullptr)
std::unique_ptr< digraphclone () const
const char * get_graph_kind () const
void set_graph_kind (const char *)
const char * get_property (const json::string_property &property) const
json::arrayget_property (const json::array_of_string_property &property) const
template<typename EnumType>
EnumType get_property (const json::enum_property< EnumType > &property) const
const json::valueget_property (const json::json_property &property) const
void set_property (const json::string_property &property, const char *utf8_value)
void set_property (const json::integer_property &property, long value)
void set_property (const json::bool_property &property, bool value)
template<typename EnumType>
void set_property (const json::enum_property< EnumType > &property, EnumType value)
void set_property (const json::json_property &property, std::unique_ptr< json::value > value)
bool maybe_get_property (const json::integer_property &property, long &out) const
tristate get_property_as_tristate (const json::bool_property &property) const
json::objectget_property_bag () const
json::objectensure_property_bag ()
void set_property_bag (std::unique_ptr< json::object > property_bag)

Private Member Functions

void add_node_id (std::string node_id, node &new_node)
void add_edge_id (std::string edge_id, edge &new_edge)
std::string make_edge_id (const char *edge_id)

Private Attributes

std::unique_ptr< std::string > m_description
std::map< std::string, node * > m_id_to_node_map
std::map< std::string, edge * > m_id_to_edge_map
std::vector< std::unique_ptr< node > > m_nodes
std::vector< std::unique_ptr< edge > > m_edges
size_t m_next_edge_id_index
std::unique_ptr< json::objectm_property_bag

Constructor & Destructor Documentation

◆ diagnostic_graph()

diagnostic_graph::diagnostic_graph ( diagnostic_manager & )
inline

Member Function Documentation

◆ add_edge() [1/2]

void digraph< GraphTraits >::add_edge ( const char * id,
node & src_node,
node & dst_node,
const char * label = nullptr )
inherited

References add_edge().

◆ add_edge() [2/2]

void diagnostics::digraphs::digraph::add_edge ( std::unique_ptr< edge > e)
inlineinherited

◆ add_edge_id()

void diagnostics::digraphs::digraph::add_edge_id ( std::string edge_id,
edge & new_edge )
inlineprivateinherited

References edge, and m_id_to_edge_map.

◆ add_edge_with_label()

diagnostic_edge * diagnostic_graph::add_edge_with_label ( const char * edge_id,
diagnostic_node & src_node,
diagnostic_node & dst_node,
const char * label )

◆ add_node()

void diagnostics::digraphs::digraph::add_node ( std::unique_ptr< node > n)
inlineinherited

References gcc_assert, and m_nodes.

Referenced by diagnostic_graph::add_node_with_id().

◆ add_node_id()

void diagnostics::digraphs::digraph::add_node_id ( std::string node_id,
node & new_node )
inlineprivateinherited

References m_id_to_node_map.

◆ add_node_with_id()

diagnostic_node * diagnostic_graph::add_node_with_id ( std::string node_id,
diagnostic_node * parent_node )

◆ clone()

std::unique_ptr< digraph > digraph< GraphTraits >::clone ( ) const
inherited

◆ dump()

DEBUG_FUNCTION void digraph< GraphTraits >::dump ( ) const
inherited

◆ ensure_property_bag()

json::object & digraph_object::ensure_property_bag ( )
inherited

◆ get_description()

const char * diagnostics::digraphs::digraph::get_description ( ) const
inlineinherited

◆ get_edge()

edge & diagnostics::digraphs::digraph::get_edge ( size_t idx) const
inlineinherited

References m_edges.

Referenced by state_diagram::state_diagram().

◆ get_edge_by_id()

edge * diagnostics::digraphs::digraph::get_edge_by_id ( const char * id) const
inlineinherited

References m_id_to_edge_map.

◆ get_graph_kind()

const char * digraph< GraphTraits >::get_graph_kind ( ) const
inherited

◆ get_node()

node & diagnostics::digraphs::digraph::get_node ( size_t idx) const
inlineinherited

References m_nodes.

Referenced by state_diagram::state_diagram().

◆ get_node_by_id()

node * diagnostics::digraphs::digraph::get_node_by_id ( const char * id) const
inlineinherited

References m_id_to_node_map.

◆ get_num_edges()

size_t diagnostics::digraphs::digraph::get_num_edges ( ) const
inlineinherited

References m_edges.

Referenced by state_diagram::state_diagram().

◆ get_num_nodes()

size_t diagnostics::digraphs::digraph::get_num_nodes ( ) const
inlineinherited

References m_nodes.

Referenced by state_diagram::state_diagram().

◆ get_property() [1/4]

json::array * digraph_object::get_property ( const json::array_of_string_property & property) const
inherited
Array-of-string properties.

References json::array::dyn_cast_array(), and m_property_bag.

◆ get_property() [2/4]

template<typename EnumType>
EnumType diagnostics::digraphs::object::get_property ( const json::enum_property< EnumType > & property) const
inlineinherited

◆ get_property() [3/4]

const json::value * digraph_object::get_property ( const json::json_property & property) const
inherited
json::value properties.

References m_property_bag.

◆ get_property() [4/4]

const char * digraph_object::get_property ( const json::string_property & property) const
inherited

◆ get_property_as_tristate()

tristate digraph_object::get_property_as_tristate ( const json::bool_property & property) const
inherited

◆ get_property_bag()

json::object * diagnostics::digraphs::object::get_property_bag ( ) const
inlineinherited

◆ make_dot_graph()

std::unique_ptr< dot::graph > digraph< GraphTraits >::make_dot_graph ( ) const
inherited

◆ make_edge_id()

std::string digraph< GraphTraits >::make_edge_id ( const char * edge_id)
privateinherited
Utility function for edge ids: either use EDGE_ID, or generate a unique one for when we don't care about the name. Edges in SARIF "SHALL" have an id that's unique within the graph (SARIF 2.1.0 §3.41.2). This is so that graph traversals can refer to edges by id (SARIF 2.1.0's §3.43.2 edgeId property).

References candidate(), m_id_to_edge_map, and m_next_edge_id_index.

◆ make_json_sarif_graph()

std::unique_ptr< json::object > digraph< GraphTraits >::make_json_sarif_graph ( ) const
inherited

◆ maybe_get_property()

bool digraph_object::maybe_get_property ( const json::integer_property & property,
long & out_value ) const
inherited

◆ set_description() [1/2]

void diagnostics::digraphs::digraph::set_description ( const char * desc)
inlineinherited

References m_description.

◆ set_description() [2/2]

void diagnostics::digraphs::digraph::set_description ( std::string desc)
inlineinherited

References m_description.

◆ set_graph_kind()

void digraph< GraphTraits >::set_graph_kind ( const char * kind)
inherited

◆ set_property() [1/5]

void digraph_object::set_property ( const json::bool_property & property,
bool value )
inherited
Bool properties.

References ensure_property_bag().

◆ set_property() [2/5]

template<typename EnumType>
void diagnostics::digraphs::object::set_property ( const json::enum_property< EnumType > & property,
EnumType value )
inlineinherited

References ensure_property_bag().

◆ set_property() [3/5]

void digraph_object::set_property ( const json::integer_property & property,
long value )
inherited

References ensure_property_bag().

◆ set_property() [4/5]

void digraph_object::set_property ( const json::json_property & property,
std::unique_ptr< json::value > value )
inherited

References ensure_property_bag().

◆ set_property() [5/5]

void digraph_object::set_property ( const json::string_property & property,
const char * utf8_value )
inherited

◆ set_property_bag()

void diagnostics::digraphs::object::set_property_bag ( std::unique_ptr< json::object > property_bag)
inlineinherited

References m_property_bag.

Field Documentation

◆ m_description

std::unique_ptr<std::string> diagnostics::digraphs::digraph::m_description
privateinherited

◆ m_edges

std::vector<std::unique_ptr<edge> > diagnostics::digraphs::digraph::m_edges
privateinherited

◆ m_id_to_edge_map

std::map<std::string, edge *> diagnostics::digraphs::digraph::m_id_to_edge_map
privateinherited

◆ m_id_to_node_map

std::map<std::string, node *> diagnostics::digraphs::digraph::m_id_to_node_map
privateinherited

Referenced by add_node_id(), and get_node_by_id().

◆ m_next_edge_id_index

size_t diagnostics::digraphs::digraph::m_next_edge_id_index
privateinherited

Referenced by digraph(), and make_edge_id().

◆ m_nodes

std::vector<std::unique_ptr<node> > diagnostics::digraphs::digraph::m_nodes
privateinherited

◆ m_property_bag

std::unique_ptr<json::object> diagnostics::digraphs::object::m_property_bag
privateinherited

The documentation for this struct was generated from the following file: