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_attr (const char *key_prefix, const char *key) const
void set_attr (const char *key_prefix, const char *key, const char *value)
void set_json_attr (const char *key_prefix, const char *key, std::unique_ptr< json::value > value)
json::objectget_property_bag () const
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(), and node.

◆ 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, and node.

◆ add_node_with_id()

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

◆ clone()

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

◆ dump()

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

◆ get_attr()

const char * diagnostics::digraphs::object::get_attr ( const char * key_prefix,
const char * key ) const
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_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_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

References diagnostics::make_sarif_graph().

Referenced by dump().

◆ set_attr()

void diagnostics::digraphs::object::set_attr ( const char * key_prefix,
const char * key,
const char * value )
inherited

References set_json_attr().

◆ 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_json_attr()

void diagnostics::digraphs::object::set_json_attr ( const char * key_prefix,
const char * key,
std::unique_ptr< json::value > value )
inherited

References m_property_bag.

Referenced by set_attr().

◆ set_property_bag()

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

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: