26 using System.Collections.Generic;
41 private bool defaultNodeEnabled;
42 private HashSet<Node> nodeExceptions =
new HashSet<Node>();
43 private bool defaultArcEnabled;
44 private HashSet<Arc> arcExceptions =
new HashSet<Arc>();
58 defaultNodeEnabled = enabled;
59 nodeExceptions.Clear();
66 defaultArcEnabled = enabled;
67 arcExceptions.Clear();
74 bool exception = (defaultNodeEnabled != enabled);
76 nodeExceptions.Add(node);
77 else nodeExceptions.Remove(node);
84 bool exception = (defaultArcEnabled != enabled);
86 arcExceptions.Add(arc);
87 else arcExceptions.Remove(arc);
93 return defaultNodeEnabled ^ nodeExceptions.Contains(node);
99 return defaultArcEnabled ^ arcExceptions.Contains(arc);
117 private IEnumerable<Node> NodesInternal()
119 foreach (var node
in graph.
Nodes())
125 if (nodeExceptions.Count == 0)
127 if (defaultNodeEnabled)
return graph.
Nodes();
128 return Enumerable.Empty<
Node>();
130 return NodesInternal();
135 foreach (var arc
in graph.
Arcs(filter))
142 foreach (var arc
in graph.
Arcs(u, filter))
149 foreach (var arc
in graph.
Arcs(u, v, filter))
155 return defaultNodeEnabled ? graph.
NodeCount() - nodeExceptions.Count : nodeExceptions.Count;
160 if (nodeExceptions.Count == 0 && filter ==
ArcFilter.All)
161 return defaultNodeEnabled ?
162 (defaultArcEnabled ? graph.
ArcCount() - arcExceptions.Count : arcExceptions.Count)
165 return Arcs(filter).Count();
170 return Arcs(u, filter).Count();
175 return Arcs(u, v, filter).Count();