Axiom.Runtime.AMHeap.Push C# (CSharp) Method

Push() public method

public Push ( HeapNode newItem ) : void
newItem HeapNode
return void
        public void Push(HeapNode newItem)
        {
            if (newItem is AbstractTerm)
            {
                AbstractTerm at = newItem as AbstractTerm;
                if (at.IsReference)
                {
                    if (at.Name == null || at.Name == "")
                    {
                        at.Name = "__" + _variableIndex.ToString();
                        _variableIndex++;
                    }
                }
            }
            bool changeS = (_state.S == _extraItem);
            if (_h == null)
            {
                _heap = newItem;
                _extraItem = new HeapNode();
                newItem.Next = _extraItem;
                _extraItem.Previous = newItem;
                _h = newItem;
                return;
            }

            _extraItem = newItem;
            _extraItem.Previous = _h;
            _h.Next = _extraItem;
            _h = _h.Next;
            if (changeS)
            {
                _state.S = _h;
            }

            HeapNode e = new HeapNode();
            _extraItem.Next = e;
            e.Previous = _extraItem;
            _extraItem = _extraItem.Next;
        }

Usage Example

Ejemplo n.º 1
0
        public void Pop_two_items()
        {
            AMHeap heap = new AMHeap();

            ConstantTerm con = new ConstantTerm("ali");
            ConstantTerm first = new ConstantTerm("foo");

            heap.Push(first);
            heap.Push(con);

            heap.Pop();

            Assert.AreSame(first, heap.Top());
        }
All Usage Examples Of Axiom.Runtime.AMHeap::Push