Example #1
0
        static uint AddOperationToGraph(IOperation op, DataGraph <IOperation> graph, uint parentID)
        {
            if (op == null)
            {
                return(0);
            }

            // We link this node to parent (and potencially create it if it does not exist).
            uint id;

            if (!graph.Contains(op, out id))
            {
                id = graph.AddNode(op);
            }

            // We add link only if parent exists and the link does not yet exist.
            if (parentID != uint.MaxValue && !graph.LinkExistsDirectional(parentID, id))
            {
                graph.LinkDirectional(parentID, id);
            }

            // We do recursevelly for children.
            foreach (Pin p in op.Inputs)
            {
                AddOperationToGraph(p.Owner, graph, id);
            }

            // We return self id.
            return(id);
        }