예제 #1
0
    public void PushBefore(ViRefNode1 <T> after, ViRefList1 <T> list)
    {
        if (list.Size == 0)
        {
            return;
        }
        if (after.IsAttach(list))
        {
            return;
        }
        if (after.IsAttach() == false)
        {
            return;
        }
        ViDebuger.AssertError(after._list);
        ViRefList1 <T> receiveList = after._list;
        ViRefNode1 <T> iter        = list._root._next;

        while (iter != list._root)
        {
            iter._list = receiveList;
            iter       = iter._next;
        }
        ViDebuger.AssertError(receiveList != list);
        ViRefNode1 <T> first = list._root._next;
        ViRefNode1 <T> back  = list._root._pre;
        ViRefNode1 <T> pre   = after._pre;

        _Link(pre, first);
        _Link(back, after);
        receiveList._cnt += list.Size;
        list._Init();
    }