Latest available version: IDA and decompilers v8.4.240527sp2 see all releases
Hex-Rays logo State-of-the-art binary code analysis tools
email icon

Abstract graph interface. More...

#include <graph.hpp>

Inherits gdl_graph_t.

Inherited by mutable_graph_t.

Public Member Functions

void idaapi clear (void)
void idaapi dump_graph (const char *header) const
bool idaapi calc_bounds (rect_t *r)
void idaapi calc_fitting_params (const rect_t &area, const rect_t &r, graph_location_info_t *gli, double max_zoom)
bool idaapi calc_fitting_params (const rect_t &area, graph_location_info_t *gli, double max_zoom)
int idaapi for_all_nodes_edges (graph_visitor_t &nev, bool visit_nodes=true)
const edge_info_t *idaapi get_edge_ports (edge_t e, point_t &s, point_t &d) const
void idaapi add_node_edges (edgevec_t &dlist, int node)
const rect_t &idaapi nrect (int n) const
const edge_info_t *idaapi get_edge (edge_t e) const
virtual rect_t &idaapi nrect (int n)=0
virtual edge_info_t *idaapi get_edge (edge_t e)=0
virtual abstract_graph_t *idaapi clone (void) const =0
bool idaapi create_tree_layout (void)
bool idaapi create_circle_layout (point_t p, int radius)
bool idaapi create_polar_tree_layout (point_t p, int radius)
bool idaapi create_radial_tree_layout (point_t p, int radius)
bool idaapi create_orthogonal_layout (void)
void set_callback (hook_cb_t *_callback, void *_ud)
ssize_t vgrcall (int code, va_list va)
ssize_t grcall (int code,...)
- Public Member Functions inherited from gdl_graph_t
virtual char *idaapi get_node_label (char *iobuf, int iobufsize, int n) const
virtual void idaapi print_graph_attributes (FILE *fp) const
virtual bool idaapi print_node (FILE *fp, int n) const
virtual bool idaapi print_edge (FILE *fp, int i, int j) const
virtual void idaapi print_node_attributes (FILE *fp, int n) const
virtual int idaapi size (void) const =0
virtual int idaapi node_qty (void) const
virtual bool idaapi exists (int node) const
virtual int idaapi entry (void) const
virtual int idaapi exit (void) const
virtual int idaapi nsucc (int node) const =0
virtual int idaapi npred (int node) const =0
virtual int idaapi succ (int node, int i) const =0
virtual int idaapi pred (int node, int i) const =0
virtual bool idaapi empty (void) const
virtual bgcolor_t idaapi get_node_color (int n) const
virtual bgcolor_t idaapi get_edge_color (int i, int j) const
void idaapi gen_gdl (FILE *fp) const
void idaapi gen_gdl (const char *file) const
size_t idaapi nedge (int node, bool ispred) const
int idaapi edge (int node, int i, bool ispred) const
int idaapi front (void)
node_iterator idaapi begin (void) const
node_iterator idaapi end (void) const
bool idaapi path_exists (int m, int n) const
void idaapi gen_dot (FILE *fp) const
void idaapi gen_dot (const char *file) const

Public Attributes

qstring title
 graph title
bool rect_edges_made
 have create rectangular edges?
layout_type_t current_layout
 see Proximity view layouts
point_t circle_center
 for layout_circle
int circle_radius
 for layout_circle
 user-defined callback
void * callback_ud
 user data for callback

Protected Member Functions

void idaapi get_connected_components (intvec_t &entries) const
 Returns one entry point for each connected component.
int idaapi calc_longest_pathes (const node_set_t &entries, intvec_t &tops, int row_height) const
 Find longest paths from the entries. More...
void idaapi move_nodes_down (intvec_t &tops, const node_ordering_t &post, int first_reverser_node, int row_height) const
 Move entry nodes down as much as possible.
void idaapi create_graph_row_info (const intvec_t &tops, graph_row_info_t &gri, int graph_height) const
 Create graph row info from 'tops'.
void idaapi calc_row_heights (graph_row_info_t &gri) const
 Calculate height of each row.
void idaapi minimize_crossings (graph_row_info_t &gri) const
 Minimize crossings.
void idaapi set_x_coords (const graph_row_info_t &gri, const node_set_t &selfrefs, int first_added_node)
 Calculate x coords of all nodes.
void idaapi gather_edge_segments (const graph_row_info_t &gri, edge_segs_vec_t &ges) const
 Gather information about all edge segments.
void idaapi make_rect_edges (graph_row_info_t &gri, const edge_segs_vec_t &ges, int first_reverser_node)
 Make all edges rectangular.
void idaapi assign_edge_ports (const graph_row_info_t &gri, const node_set_t &selfrefs)
 Assign ports to edges.
void idaapi recalc_edge_widths (const edgeset_t &back_edges, const edge_infos_t &self_edges)
 Recalculate width of all edges.
void idaapi clear_layout_info (void)
 Clear layout information in the graph.
void idaapi depth_first (node_ordering_t *pre, node_ordering_t *post, edge_typer_t *et) const
void idaapi create_spanning_tree (edge_typer_t *et, node_set_t *entries, edgeset_t *back_edges, node_ordering_t *pre, node_ordering_t *post) const
void idaapi tree_layout (edge_typer_t &et, const node_set_t &entries)
bool idaapi path_back (const array_of_node_set_t &domin, int m, int n) const
 Is there a path from M to N which terminates with a back edge to N?
bool idaapi path_back (edge_typer_t &et, int m, int n) const
int idaapi visit_nodes (int node, graph_node_visitor_t &gv) const
 Visit nodes starting from 'node', depth first.
int idaapi visit_paths (int node, graph_path_visitor_t &gv) const
 Visit all possible paths starting from 'node'. More...

Detailed Description

Abstract graph interface.

Member Function Documentation

◆ calc_longest_pathes()

int idaapi abstract_graph_t::calc_longest_pathes ( const node_set_t entries,
intvec_t tops,
int  row_height 
) const

Find longest paths from the entries.

take into account node heights. if row_height > 0, then use it instead of real node heights. return max distance found

◆ visit_paths()

int idaapi abstract_graph_t::visit_paths ( int  node,
graph_path_visitor_t gv 
) const

Visit all possible paths starting from 'node'.

A path cannot contain the same node twice.

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