/*
- * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
*/
ir_node *get_edge_src_irn(const ir_edge_t *edge);
-/**
- * Get the number of edges pointing to a node.
- * @param irn The node.
- * @return The number of edges pointing to this node.
- */
-int get_irn_n_edges(const ir_node *irn);
-
/**
* Get the position of an edge.
* @param edge The edge.
* @return The position in the in array of that edges source.
*/
-extern int get_edge_src_pos(const ir_edge_t *edge);
+int get_edge_src_pos(const ir_edge_t *edge);
/**
* Get the edge object of an outgoing edge at a node.
* @param irn The node.
* @param kind The kind.
*/
-extern int get_irn_n_edges_kind(const ir_node *irn, ir_edge_kind_t kind);
-
+int get_irn_n_edges_kind(const ir_node *irn, ir_edge_kind_t kind);
/**
* Check, if the out edges are activated.
- * @param irg The graph.
- * @param kind The edge kind.
+ *
+ * @param irg The graph.
+ * @param kind The edge kind.
+ *
* @return 1, if the edges are present for the given irg, 0 if not.
*/
-extern int edges_activated_kind(const ir_graph *irg, ir_edge_kind_t kind);
+int edges_activated_kind(const ir_graph *irg, ir_edge_kind_t kind);
/**
* Activate the edges for an irg.
- * @param irg The graph to activate the edges for.
- * @param kind The edge kind.
+ *
+ * @param irg The graph to activate the edges for.
+ * @param kind The edge kind.
*/
-extern void edges_activate_kind(ir_graph *irg, ir_edge_kind_t kind);
+void edges_activate_kind(ir_graph *irg, ir_edge_kind_t kind);
/**
* Deactivate the edges for an irg.
- * @param irg The graph.
- * @param kind The edge kind.
+ *
+ * @param irg The graph.
+ * @param kind The edge kind.
*/
-extern void edges_deactivate_kind(ir_graph *irg, ir_edge_kind_t kind);
+void edges_deactivate_kind(ir_graph *irg, ir_edge_kind_t kind);
-extern void edges_reroute_kind(ir_node *old, ir_node *nw, ir_edge_kind_t kind, ir_graph *irg);
+/**
+ * Reroute edges of a specified kind from an old node to
+ * a new one.
+ *
+ * @param old the old node
+ * @param nw the new node
+ * @param kind the edge kind
+ * @param irg the graph on which the rerouting occurs
+ */
+void edges_reroute_kind(ir_node *old, ir_node *nw, ir_edge_kind_t kind, ir_graph *irg);
/**
* Verifies the out edges of graph @p irg.
int edges_verify(ir_graph *irg);
/**
-
* Set edge verification flag.
-
*/
void edges_init_dbg(int do_dbg);
#endif
/**
-* Activate all the edges for an irg.
-* @param irg The graph to activate the edges for.
-*/
-extern void edges_activate(ir_graph *irg);
+ * Activates data and block edges for an irg.
+ * If the irg phase is phase_backend, Dependence edges are
+ * additionally activated.
+ *
+ * @param irg The graph to activate the edges for.
+ */
+void edges_activate(ir_graph *irg);
+
+/**
+ * Deactivate data and block edges for an irg.
+ * If the irg phase is phase_backend, Dependence edges are
+ * additionally deactivated.
+ * @param irg The graph.
+ */
+void edges_deactivate(ir_graph *irg);
/**
-* Deactivate all the edges for an irg.
-* @param irg The graph.
-*/
-extern void edges_deactivate(ir_graph *irg);
+ * Ensure that edges are activated.
+ *
+ * @param irg the IR graph
+ *
+ * @return 0 if edges was deactivated before the call, 1 else
+ */
+int edges_assure(ir_graph *irg);
-extern int edges_assure(ir_graph *irg);
+/**
+ * Ensure that edges of a given kind are activated.
+ *
+ * @param irg the IR graph
+ * @param kind the edge kind
+ *
+ * @return 0 if edges was deactivated before the call, 1 else
+ */
+int edges_assure_kind(ir_graph *irg, ir_edge_kind_t kind);
-extern void edges_node_deleted(ir_node *irn, ir_graph *irg);
+void edges_node_deleted(ir_node *irn, ir_graph *irg);
/**
-* Notify normal and block edges.
-*/
-extern void edges_notify_edge(ir_node *src, int pos, ir_node *tgt, ir_node *old_tgt, ir_graph *irg);
+ * Notify normal and block edges.
+ */
+void edges_notify_edge(ir_node *src, int pos, ir_node *tgt, ir_node *old_tgt, ir_graph *irg);
+
+/**
+ * Walks only over Block nodes in the graph. Uses the block visited
+ * flag, so that it can be interleaved with another walker.
+ *
+ * @param block the start block
+ * @param pre the pre visit function
+ * @param post the post visit function
+ * @param env the environment for the walker
+ */
+void irg_block_edges_walk(ir_node *block, irg_walk_func *pre, irg_walk_func *post, void *env);
-void edges_reset_private_data(ir_graph *irg, int offset, size_t size);
+/**
+ * Reset the user's private data at offset 'offset'
+ * The user has to remember his offset and the size of his data!
+ * Caution: Using wrong values here can destroy other users private data!
+ *
+ * @param irg the IR graph to operate on
+ * @param offset offset of the private data inside the edge
+ * @param size length of the private data inside the edge
+ */
+void edges_reset_private_data(ir_graph *irg, int offset, unsigned size);
/************************************************************************/
/* End Old Interface */