public void PushBefore(ViRefNode2 <T> after, ViRefNode2 <T> node) { node.Detach(); ++_cnt; node._list = this; _PushBefore(after, node); }
public void PushBefore(ViRefNode2 <T> after, ViRefList2 <T> list) { if (list.Size == 0) { return; } if (after.IsAttach(list)) { return; } if (after.IsAttach() == false) { return; } ViDebuger.AssertError(after._list); ViRefList2 <T> receiveList = after._list; ViRefNode2 <T> iter = list._root._next; while (iter != list._root) { iter._list = receiveList; iter = iter._next; } ViDebuger.AssertError(receiveList != list); ViRefNode2 <T> first = list._root._next; ViRefNode2 <T> back = list._root._pre; ViRefNode2 <T> pre = after._pre; _Link(pre, first); _Link(back, after); receiveList._cnt += list.Size; list._Init(); }
public void PushAfter(ViRefNode2 <T> before, ViRefNode2 <T> node) { node.Detach(); ++_cnt; node._list = this; _PushAfter(before, node); }
public void PushFront(ViRefNode2 <T> node) { node.Detach(); ++_cnt; node._list = this; _PushAfter(_root, node); }
public void PushBack(ViRefNode2 <T> node) { node.Detach(); ++_cnt; node._list = this; _PushBefore(_root, node); }
static void _PushBefore(ViRefNode2 <T> after, ViRefNode2 <T> node) { ViRefNode2 <T> pre = after._pre; ViDebuger.AssertError(pre); _Link(pre, node); _Link(node, after); }
//+-------------------------------------------------------------------------------------------------------------- static void _PushAfter(ViRefNode2 <T> before, ViRefNode2 <T> node) { ViRefNode2 <T> next = before._next; ViDebuger.AssertError(next); _Link(before, node); _Link(node, next); }
public void SetValue(T value) { ViRefNode2 <T> next = _root._next; while (next != _root) { next.Data = value; next = next._next; } }
internal void _Detach(ViRefNode2 <T> node) { ViDebuger.AssertError(node._list == this); if (node == _next) //! 如果是正在迭代的点, 则自动将Next移到下个点 { Next(ref _next); } _Link(node._pre, node._next); node._pre = null; node._next = null; --_cnt; }
public static void UpdateList() { _list.BeginIterator(); while (!_list.IsEnd()) { ViRefNode2 <ViDistInNotifier> iter = _list.CurrentNode; _list.Next(); ViDistInNotifier notifier = iter.Data; ViDebuger.AssertError(notifier); notifier._Update(); } }
public static void ClearAll() { _list.BeginIterator(); while (!_list.IsEnd()) { ViRefNode2 <ViAsynLoader> node = _list.CurrentNode; ViAsynLoader loader = node.Data; ViDebuger.AssertError <ViAsynLoader>(loader, "ViAsynLoader.ClearAll() loader is null"); _list.Next(); loader.Detach(); } _list.Clear(); }
public void Clear() { ViRefNode2 <T> next = _root._next; while (next != _root) { ViRefNode2 <T> nextCopy = next._next; next._pre = null; next._next = null; next._list = null; next = nextCopy; } _Init(); }
public void ClearAndClearContent() { ViRefNode2 <T> next = _root._next; while (next != _root) { ViRefNode2 <T> nextCopy = next._next; next._pre = null; next._next = null; next._list = null; next.Data = default(T); next = nextCopy; } _Init(); }
#pragma warning disable 0219 public static void Test() { ViRefList2 <int> list = new ViRefList2 <int>(); ViRefNode2 <int> node0 = new ViRefNode2 <int>(); node0.Data = 0; ViRefNode2 <int> node1 = new ViRefNode2 <int>(); node1.Data = 1; ViRefNode2 <int> node2 = new ViRefNode2 <int>(); node2.Data = 2; list.PushBack(node0); list.PushBack(node1); list.PushBack(node2); list.BeginIterator(); while (!list.IsEnd()) { ViRefNode2 <int> node = list.CurrentNode; list.Next(); ///<使用> ///</使用> } list.Clear(); }
//+------------------------------------------------------------------------------------------------------------------------------------------------------------- public static void UpdateAll() { _list.BeginIterator(); while (!_list.IsEnd()) { ViRefNode2 <ViAsynLoader> node = _list.CurrentNode; ViAsynLoader loader = node.Data; ViDebuger.AssertError <ViAsynLoader>(loader, "ViAsynLoader.UpdateAll() loader is null"); _list.Next(); loader.TryLoad(); if (loader.IsLoaded) { OnCompleted dele = loader.DeleOnCompleted; loader.Detach(); loader.OnLoaded(); if (dele != null) { dele(loader); } } } }
public static void UpdateList() { _listInner.BeginIterator(); while (!_listInner.IsEnd()) { ViRefNode2 <ViDistNotifier> iter = _listInner.CurrentNode; _listInner.Next(); ViDistNotifier notifier = iter.Data; ViDebuger.AssertError(notifier); notifier._UpdateInside(); } _listOutor.BeginIterator(); while (!_listOutor.IsEnd()) { ViRefNode2 <ViDistNotifier> iter = _listOutor.CurrentNode; _listOutor.Next(); ViDistNotifier _this = iter.Data; ViDebuger.AssertError(_this); _this._UpdateOutside(); } _listInner.PushBack(_listWaitingInner); _listOutor.PushBack(_listWaitingOutor); }
public bool IsEnd(ViRefNode2 <T> node) { return(node == _root); }
static void _Link(ViRefNode2 <T> pre, ViRefNode2 <T> next) { pre._next = next; next._pre = pre; }
public static void Next(ref ViRefNode2 <T> node) { ViDebuger.AssertError(node != null && node._next != null); node = node._next; }