Index: llvm/trunk/include/llvm/ADT/GraphTraits.h =================================================================== --- llvm/trunk/include/llvm/ADT/GraphTraits.h +++ llvm/trunk/include/llvm/ADT/GraphTraits.h @@ -47,6 +47,19 @@ // static nodes_iterator nodes_end (GraphType *G) // nodes_iterator/begin/end - Allow iteration over all nodes in the graph + // typedef EdgeRef - Type of Edge token in the graph, which should + // be cheap to copy. + // typedef ChildEdgeIteratorType - Type used to iterate over children edges in + // graph, dereference to a EdgeRef. + + // static ChildEdgeIteratorType child_edge_begin(NodeRef) + // static ChildEdgeIteratorType child_edge_end(NodeRef) + // Return iterators that point to the beginning and ending of the + // edge list for the given callgraph node. + // + // static NodeRef edge_dest(EdgeRef) + // Return the destination node of an edge. + // static unsigned size (GraphType *G) // Return total number of nodes in the graph @@ -111,6 +124,13 @@ GraphTraits>::child_end(G)); } +template +iterator_range::ChildEdgeIteratorType> +children_edges(const typename GraphTraits::NodeRef &G) { + return make_range(GraphTraits::child_edge_begin(G), + GraphTraits::child_edge_end(G)); +} + } // end namespace llvm #endif // LLVM_ADT_GRAPHTRAITS_H