public VisualNode(string id, string displayText, params ICausalityNode[] nodes) { Contract.Requires(nodes.Length != 0, "nodes.Length != 0"); Id = id; DisplayText = displayText; _lastOrSingleCausalityNode = nodes.Last(); CausalityNodes = new HashSet <ICausalityNode>(nodes); }
static bool shouldCollapse(ICausalityNode?previousNode, ICausalityNode node) { if (!isCollapseable(previousNode, node)) { // If the current node is not collapseable, then the we should collapse the currenttly accumulated items. return(true); } var shouldCollapse = node.Dependencies.Count > 1 || node.Dependents.Count > 1 || previousNode != null && !previousNode.Dependencies.Contains(node); return(shouldCollapse); }
public static bool IsRoot(this ICausalityNode node) { if (node.Dependents.Count == 0) { return(true); } //if (node is ThreadNode) { return true; } //if (node is AsyncStateMachineNode stateMachine && stateMachine.Dependents.Count != 0) { return true; } //if (Dependents.Count == 0) return true; return(false); }
static bool isCollapseable(ICausalityNode?previousNode, ICausalityNode node) { var isCollapsable = node.Dependencies.Count <= 1 && node.Kind != NodeKind.Thread; return(isCollapsable); }
public static IEnumerable <ICausalityNode> EnumerateNeighborsAndSelfDepthFirst(this ICausalityNode current) { return(EnumerateNeighborsAndSelfDepthFirst(current, n => n.Dependencies.Concat(n.Dependents))); }
public static bool IsLeaf(this ICausalityNode node) => node.Dependencies.Count == 0;
private static bool IsVisible(ICausalityNode node) => true;