From 04939ee6fd997de2278445a5092f5e1fd20dc486 Mon Sep 17 00:00:00 2001 From: Bin Cheng Date: Wed, 7 Jun 2017 11:29:37 +0000 Subject: graphds.c (add_edge): Intitialize edge's attached data. * graphds.c (add_edge): Intitialize edge's attached data. (foll_in_subgraph, dfs_fst_edge, dfs_next_edge): New function pointer parameter. Call pointed function on each edge during graph traversing. Skip traversing the edge when the function returns true. (graphds_dfs, graphds_scc): Ditto. (for_each_edge): New parameter. Pass the new parameter to callback function. * graphds.h (skip_edge_callback): New function pointer type. (graphds_dfs, graphds_scc): New function pointer parameter. (graphds_edge_callback, for_each_edge): New parameter. From-SVN: r248964 --- gcc/graphds.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'gcc/graphds.h') diff --git a/gcc/graphds.h b/gcc/graphds.h index 500ea70..9f9fc10 100644 --- a/gcc/graphds.h +++ b/gcc/graphds.h @@ -55,12 +55,14 @@ struct graph *new_graph (int); void dump_graph (FILE *, struct graph *); struct graph_edge *add_edge (struct graph *, int, int); void identify_vertices (struct graph *, int, int); +typedef bool (*skip_edge_callback) (struct graph_edge *); int graphds_dfs (struct graph *, int *, int, - vec *, bool, bitmap); -int graphds_scc (struct graph *, bitmap); + vec *, bool, bitmap, skip_edge_callback = NULL); +int graphds_scc (struct graph *, bitmap, skip_edge_callback = NULL); void graphds_domtree (struct graph *, int, int *, int *, int *); -typedef void (*graphds_edge_callback) (struct graph *, struct graph_edge *); -void for_each_edge (struct graph *, graphds_edge_callback); +typedef void (*graphds_edge_callback) (struct graph *, + struct graph_edge *, void *); +void for_each_edge (struct graph *, graphds_edge_callback, void *); void free_graph (struct graph *g); #endif /* GCC_GRAPHDS_H */ -- cgit v1.1