public IEnumerable <Arc> Arcs(Node u, ArcFilter filter = ArcFilter.All) { DisjointSetSet <Node> x = nodeGroups.WhereIs(u); foreach (var node in nodeGroups.Elements(x)) { foreach (var arc in graph.Arcs(node, filter)) { bool loop = (U(arc) == V(arc)); // we should avoid outputting an arc twice if (!loop || !(filter == ArcFilter.All || IsEdge(arc)) || graph.U(arc) == node) { yield return(arc); } } } }
public IEnumerable <Arc> Arcs(Node u, ArcFilter filter = ArcFilter.All) { DisjointSetSet <Node> x = nodeGroups.WhereIs(u); foreach (Node item in nodeGroups.Elements(x)) { foreach (Arc item2 in graph.Arcs(item, filter)) { if (!(U(item2) == V(item2)) || (filter != 0 && !IsEdge(item2)) || graph.U(item2) == item) { yield return(item2); /*Error: Unable to find new state assignment for yield return*/; } } } yield break; IL_01db: /*Error near IL_01dc: Unexpected return in MoveNext()*/; }
/// Gets the nodes which are contracted with the given node. /// \param n A node of the original graph (this includes nodes of the adaptor). /// \return The nodes in the same equivalence class (at least 1). public IEnumerable <Node> GetChildren(Node n) { return(nodeGroups.Elements(nodeGroups.WhereIs(n))); }