/// <summary> /// Returns true and adds the edge iff the specified directed edge does not lead to a cycle. /// </summary> public bool AddEdge(Node.Output source, Node.Input sink) { IEnumerable <Node> nodeList = DepthFirstSearch(source.Node); // if sink can be reached after starting dfs at the source the new edge would create a cycle if (nodeList.Any(node => node.Inputs.Contains(sink))) { return(false); } else { sink.Source = source; return(true); } }
/// <summary> /// Gets the frame rendered for the given output or null if the output hasn't been rendered. /// </summary> public Frame this[Node.Output output] { get { return(dic.ContainsKey(output) ? dic[output] : null); } }