IDA SDK
Public Attributes | Public Member Functions | Protected Member Functions | List of all members
abstract_graph_t Class Referenceabstract

Detailed Description

Abstract graph interface.

Inherits gdl_graph_t.

Inherited by mutable_graph_t.

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
 
hook_cb_tcallback
 user-defined callback
 
void * callback_ud
 user data for callback
 

Public Member Functions

void idaapi clear (void)
 
void idaapi dump_graph (const char *header) const
 
bool idaapi calc_bounds (rect_t *r)
 
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 *buf, int, int) const
 
virtual void idaapi print_graph_attributes (FILE *) const
 
virtual bool idaapi print_node (FILE *, int) const
 
virtual bool idaapi print_edge (FILE *, int, int) const
 
virtual void idaapi print_node_attributes (FILE *, int) const
 
virtual int idaapi size (void) const =0
 
virtual int idaapi node_qty (void) const
 
virtual bool idaapi exists (int) 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) const
 
virtual bgcolor_t idaapi get_edge_color (int, int) 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
 

Protected Member Functions

void idaapi get_connected_components (intseq_t &entries) const
 Returns one entry point for each connected component.
 
int idaapi calc_longest_pathes (const node_set_t &entries, intseq_t &tops, int row_height) const
 Find longest paths from the entries. More...
 
void idaapi move_nodes_down (intseq_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 intseq_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...
 

Member Function Documentation

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

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

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

Visit all possible paths starting from 'node'.

A path can not contain the same node twice.


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