3 * Public header for the automatically updating outs.
4 * @author Sebastian Hack
14 * Get the first edge pointing to some node.
15 * @note There is no order on out edges. First in this context only
16 * means, that you get some starting point into the list of edges.
17 * @param irn The node.
18 * @return The first out edge that points to this node.
20 const struct _ir_edge_t *(get_irn_out_edge_first)(const ir_node *irn);
23 * Get the next edge in the out list of some node.
24 * @param irn The node.
25 * @param last The last out edge you have seen.
26 * @return The next out edge in @p irn 's out list after @p last.
28 const struct _ir_edge_t *(get_irn_out_edge_next)(const ir_node *irn,
29 const struct _ir_edge_t *last);
32 * A convenience iteration macro over all out edges of a node.
33 * @param irn The node.
34 * @param edge An @c ir_edge_t pointer which shall be set to the current
37 #define foreach_out_edge(irn,edge) \
38 for(edge = get_irn_out_edge_first(irn); edge; edge = get_irn_out_edge_next(irn, edge))
41 * Get the source node of an edge.
42 * @param edge The edge.
43 * @return The source node of that edge.
45 ir_node *(get_edge_src_irn)(const struct _ir_edge_t *edge);
48 * Get the position of an edge.
50 * @return The position in the in array of that edges source.
52 extern int (get_edge_src_pos)(const struct _ir_edge_t *edge);
54 extern int (edges_activated)(const ir_graph *irg);
56 extern void (edges_activate)(ir_graph *irg);
58 extern void (edges_deactivate)(ir_graph *irg);
61 #endif /* _FIRM_EDGES_H */