예제 #1
0
            private void ReplaceNode(DivisionNode src, DivisionNode dest)
            {
                Debug.Assert(src.ParentList == this);
                dest.SetParentList(this);

                if (_first == src)
                {
                    _first = dest;
                }
                else
                {
                    DivisionNode n = _first;
                    while (n.Next != src)
                    {
                        n = n.Next;
                        Debug.Assert(n != null);
                    }
                    n.Next = dest;
                }
            }
예제 #2
0
            //srcの位置を、listの中身で置き換える。ratio調整に注意
            public void ReplaceNodeByList(DivisionNode src, DivisionList list)
            {
                Debug.Assert(src.ParentList == this);
                int    oldcount   = this.NodeCount;
                int    addedcount = list.NodeCount;
                double r          = src.Ratio;

                DivisionNode t    = list.FirstNode;
                DivisionNode last = null;

                while (t != null)
                {
                    t.Ratio *= r;
                    t.SetParentList(this);
                    last = t;
                    t    = t.Next;
                }
                Debug.Assert(last.Next == null); //これを見つけた
                ReplaceNode(src, list.FirstNode);
                last.Next = src.Next;

                Debug.Assert(oldcount + addedcount - 1 == this.NodeCount);
            }
예제 #3
0
            private void ReplaceNode(DivisionNode src, DivisionNode dest)
            {
                Debug.Assert(src.ParentList == this);
                dest.SetParentList(this);

                if (_first == src) {
                    _first = dest;
                }
                else {
                    DivisionNode n = _first;
                    while (n.Next != src) {
                        n = n.Next;
                        Debug.Assert(n != null);
                    }
                    n.Next = dest;
                }
            }