Exemple #1
0
        public ICollection <TItem> Collapse(IEnumerable <TItem> elements)
        {
            var worker = new WalkerWorker1 <TItem, TEdge> (this.Sink);

            NeverRemove(worker, elements);


            foreach (var item in elements)
            {
                worker.RemoveCollapsed(item, this.Sink);
            }

            RevoveEdgesOfChanged(worker);

            CommitRemove(worker);
            var result = worker.Affected;

            if (RemoveOrphans)
            {
                var changes = new List <TItem> (worker.Affected);
                worker.ChangesClear();
                worker.RemoveOrphans(this.Sink);
                CommitRemove(worker);
                changes.AddRange(worker.Affected);
                worker.ChangesClear();
                result = changes;
            }

            return(result);
        }
Exemple #2
0
        public virtual ICollection <TItem> CollapseToFocused(IEnumerable <TItem> elements)
        {
            var worker = new WalkerWorker1 <TItem, TEdge> (this.Sink);

            NeverRemove(worker, elements);

            foreach (TItem item in Sink)
            {
                worker.RemoveCollapsed(item, Sink);
                worker.Remove(item);
            }

            CommitRemove(worker);

            return(worker.Affected);
        }