14 #ifndef CPROVER_GOTO_PROGRAMS_CLASS_HIERARCHY_H 15 #define CPROVER_GOTO_PROGRAMS_CLASS_HIERARCHY_H 19 #include <unordered_map> 26 #define OPT_SHOW_CLASS_HIERARCHY \ 27 "(show-class-hierarchy)" 29 #define HELP_SHOW_CLASS_HIERARCHY \ 30 " --show-class-hierarchy show the class hierarchy\n" 46 typedef std::vector<irep_idt>
idst;
76 void output(std::ostream &,
bool children_only)
const;
98 typedef std::vector<irep_idt>
idst;
136 bool children_only =
false);
138 #endif // CPROVER_GOTO_PROGRAMS_CLASS_HIERARCHY_H
A generic directed graph with a parametric node type.
idst ids_from_indices(const std::vector< node_indext > &nodes) const
Helper function that converts a vector of node_indext to a vector of ids that are stored in the corre...
void get_children_trans_rec(const irep_idt &, idst &) const
void operator()(const symbol_tablet &)
Looks for all the struct types in the symbol table and construct a map from class names to a data str...
std::unordered_map< irep_idt, node_indext > nodes_by_namet
Maps class identifiers onto node indices.
void output(std::ostream &, bool children_only) const
Output the class hierarchy in plain text.
Non-graph-based representation of the class hierarchy.
void show_class_hierarchy(const class_hierarchyt &hierarchy, message_handlert &message_handler, ui_message_handlert::uit ui, bool children_only=false)
Output the class hierarchy.
void populate(const symbol_tablet &)
Populate the class hierarchy graph, such that there is a node for every struct type in the symbol tab...
nodes_by_namet nodes_by_name
Maps class identifiers onto node indices.
void get_parents_trans_rec(const irep_idt &, idst &) const
Get all the classes that class c inherits from (directly or indirectly).
idst get_children_trans(const irep_idt &c) const
Get all the classes that inherit (directly or indirectly) from class c.
idst get_direct_children(const irep_idt &c) const
Get all the classes that directly (i.e.
irep_idt class_identifier
Class ID for this node.
Class hierarchy, represented using grapht and therefore suitable for use with generic graph algorithm...
Provides methods for streaming JSON arrays.
const nodes_by_namet & get_nodes_by_class_identifier() const
Get map from class identifier to node index.
dstringt has one field, an unsigned integer no which is an index into a static table of strings...
std::vector< irep_idt > idst
A Template Class for Graphs.
std::vector< irep_idt > idst
std::map< irep_idt, entryt > class_mapt
idst get_other_reachable_ids(const irep_idt &c, bool forwards) const
Helper function for get_children_trans and get_parents_trans
idst get_parents_trans(const irep_idt &c) const
Get all the classes that class c inherits from (directly or indirectly).
Class hierarchy graph node: simply contains a class identifier.
goto_programt coverage_criteriont message_handlert & message_handler
void output_dot(std::ostream &) const
Output class hierarchy in Graphviz DOT format.
idst get_children_trans(const irep_idt &id) const
This class represents a node in a directed graph.
idst get_parents_trans(const irep_idt &id) const