From ba4ce7aed135ee577e0204556579057392243489 Mon Sep 17 00:00:00 2001 From: neuecc Date: Wed, 1 Sep 2021 19:58:08 +0900 Subject: [PATCH] remove ObservableLinkedList --- .../ObservableLinkedList.Views.cs | 151 ----------------- .../ObservableLinkedList.cs | 156 ------------------ 2 files changed, 307 deletions(-) delete mode 100644 src/ObservableCollections/ObservableLinkedList.Views.cs delete mode 100644 src/ObservableCollections/ObservableLinkedList.cs diff --git a/src/ObservableCollections/ObservableLinkedList.Views.cs b/src/ObservableCollections/ObservableLinkedList.Views.cs deleted file mode 100644 index 1c8cb20..0000000 --- a/src/ObservableCollections/ObservableLinkedList.Views.cs +++ /dev/null @@ -1,151 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using System.Collections.Specialized; - -namespace ObservableCollections -{ - public sealed partial class ObservableLinkedList - { - public ISynchronizedView, TView> CreateView(Func, TView> transform, bool reverse = false) - { - throw new NotImplementedException(); - } - - sealed class View : ISynchronizedView, TView> - { - readonly ObservableLinkedList source; - readonly Dictionary, LinkedListNode<(LinkedListNode, TView)>> nodeMap; - readonly LinkedList<(LinkedListNode, TView)> list; - readonly Func, TView> selector; - - public View(ObservableLinkedList source) - { - this.source = source; - - lock (source.SyncRoot) - { - // TODO:get map - source.CollectionChanged += SourceCollectionChanged; - } - } - - - public object SyncRoot => throw new NotImplementedException(); - public event NotifyCollectionChangedEventHandler>? RoutingCollectionChanged; - public event Action? CollectionStateChanged; - - - public int Count => throw new NotImplementedException(); - - - public void AttachFilter(ISynchronizedViewFilter, TView> filter) - { - throw new NotImplementedException(); - } - - public void Dispose() - { - throw new NotImplementedException(); - } - - public IEnumerator<(LinkedListNode Value, TView View)> GetEnumerator() - { - throw new NotImplementedException(); - } - - public void ResetFilter(Action, TView>? resetAction) - { - throw new NotImplementedException(); - } - - public INotifyCollectionChangedSynchronizedView, TView> WithINotifyCollectionChanged() - { - throw new NotImplementedException(); - } - - IEnumerator IEnumerable.GetEnumerator() - { - throw new NotImplementedException(); - } - - - private void SourceCollectionChanged(in NotifyCollectionChangedEventArgs> e) - { - lock (SyncRoot) - { - // Range operations is not supported. - switch (e.Action) - { - case NotifyCollectionChangedAction.Add: - { - var view = selector(e.NewItem); - var value = (e.NewItem, view); - LinkedListNode<(LinkedListNode, TView)>? addNode = null; - - if (e.OldItem == null) - { - // AddFirst - if (e.NewStartingIndex == 0) - { - addNode = list.AddFirst(value); - } - // AddLast - else - { - addNode = list.AddLast(value); - } - } - else - { - // AddBefore - if (e.NewStartingIndex == -1) - { - if (nodeMap.TryGetValue(e.OldItem, out var node)) - { - addNode = list.AddBefore(node, value); - } - } - // AddAfter - else - { - if (nodeMap.TryGetValue(e.OldItem, out var node)) - { - addNode = list.AddAfter(node, value); - } - } - } - - if (addNode != null) - { - nodeMap.Add(e.NewItem, addNode); - // TODO: filter invoke. - } - } - break; - case NotifyCollectionChangedAction.Remove: - { - if (nodeMap.Remove(e.OldItem, out var node)) - { - list.Remove(node); - // TODO:filter invoke - } - } - break; - case NotifyCollectionChangedAction.Reset: - { - nodeMap.Clear(); - list.Clear(); - - // TODO:filter invoke - } - break; - case NotifyCollectionChangedAction.Replace: - case NotifyCollectionChangedAction.Move: - default: - break; - } - } - } - } - } -} \ No newline at end of file diff --git a/src/ObservableCollections/ObservableLinkedList.cs b/src/ObservableCollections/ObservableLinkedList.cs deleted file mode 100644 index 799990f..0000000 --- a/src/ObservableCollections/ObservableLinkedList.cs +++ /dev/null @@ -1,156 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using System.Collections.Specialized; - -namespace ObservableCollections -{ - // TODO:Remove this??? - public sealed partial class ObservableLinkedList : IReadOnlyCollection, IObservableCollection> - { - readonly LinkedList list; - public object SyncRoot { get; } = new object(); - - public event NotifyCollectionChangedEventHandler>? CollectionChanged; - - public ObservableLinkedList() - { - this.list = new LinkedList(); - } - - public ObservableLinkedList(IEnumerable collection) - { - this.list = new LinkedList(collection); - } - - // TODO: First, Last - // Find, FindLast - - public int Count - { - get - { - lock (SyncRoot) - { - return list.Count; - } - } - } - - public LinkedListNode AddFirst(T item) - { - lock (SyncRoot) - { - var node = list.AddFirst(item); - CollectionChanged?.Invoke(NotifyCollectionChangedEventArgs>.Add(node, 0)); - return node; - } - } - - public LinkedListNode AddLast(T item) - { - lock (SyncRoot) - { - var index = list.Count; - var node = list.AddLast(item); - CollectionChanged?.Invoke(NotifyCollectionChangedEventArgs>.Add(node, index)); - return node; - } - } - - public LinkedListNode AddBefore(LinkedListNode node, T value) - { - lock (SyncRoot) - { - var newNode = list.AddBefore(node, value); - - // special event, oldItem is target, newStartingIndex:-1 = before - var ev = new NotifyCollectionChangedEventArgs>( - NotifyCollectionChangedAction.Add, isSingleItem: true, - newItem: newNode, oldItem: node, newStartingIndex: -1); - - CollectionChanged?.Invoke(ev); - return newNode; - } - } - - public LinkedListNode AddAfter(LinkedListNode node, T value) - { - lock (SyncRoot) - { - var newNode = list.AddAfter(node, value); - - // special event, oldItem is target, newStartingIndex:1 = after - var ev = new NotifyCollectionChangedEventArgs>( - NotifyCollectionChangedAction.Add, isSingleItem: true, - newItem: newNode, oldItem: node, newStartingIndex: 1); - - CollectionChanged?.Invoke(ev); - return newNode; - } - } - - public void RemoveLast() - { - lock (SyncRoot) - { - var last = list.Last; - list.RemoveLast(); - if (last != null) - { - CollectionChanged?.Invoke(NotifyCollectionChangedEventArgs>.Remove(last, -1)); - } - } - } - - public void RemoveFirst() - { - lock (SyncRoot) - { - var first = list.First; - list.RemoveFirst(); - if (first != null) - { - CollectionChanged?.Invoke(NotifyCollectionChangedEventArgs>.Remove(first, -1)); - } - } - } - - public void Remove(LinkedListNode item) - { - lock (SyncRoot) - { - list.Remove(item); - CollectionChanged?.Invoke(NotifyCollectionChangedEventArgs>.Remove(item, -1)); - } - } - - public void Clear() - { - lock (SyncRoot) - { - list.Clear(); - CollectionChanged?.Invoke(NotifyCollectionChangedEventArgs>.Reset()); - } - } - - public IEnumerator> GetEnumerator() - { - throw new NotImplementedException(); - } - - IEnumerator IEnumerable.GetEnumerator() - { - throw new NotImplementedException(); - } - - IEnumerator IEnumerable.GetEnumerator() - { - throw new NotImplementedException(); - } - - - - // TODO: GetEnumerator - - } -}