internal static Tree RemoveGreaterOrEqual(Db4objects.Db4o.Internal.Freespace.FreeSlotNode
                                                  a_in, TreeIntObject a_finder)
        {
            if (a_in == null)
            {
                return(null);
            }
            int cmp = a_in._key - a_finder._key;

            if (cmp == 0)
            {
                a_finder._object = a_in;
                // the highest node in the hierarchy !!!
                return(a_in.Remove());
            }
            if (cmp > 0)
            {
                a_in._preceding = RemoveGreaterOrEqual((Db4objects.Db4o.Internal.Freespace.FreeSlotNode
                                                        )((Tree)a_in._preceding), a_finder);
                if (a_finder._object != null)
                {
                    a_in._size--;
                    return(a_in);
                }
                a_finder._object = a_in;
                return(a_in.Remove());
            }
            a_in._subsequent = RemoveGreaterOrEqual((Db4objects.Db4o.Internal.Freespace.FreeSlotNode
                                                     )((Tree)a_in._subsequent), a_finder);
            if (a_finder._object != null)
            {
                a_in._size--;
            }
            return(a_in);
        }
Example #2
0
        private SlotDetail ByAddress(int address)
        {
            TreeIntObject tree = (TreeIntObject)TreeIntObject.Find(_slots, new TreeIntObject(
                                                                       address, null));

            return(tree == null ? null : (SlotDetail)tree._object);
        }
Example #3
0
 internal static Tree RemoveGreaterOrEqual(FreeSlotNode
     a_in, TreeIntObject a_finder)
 {
     if (a_in == null)
     {
         return null;
     }
     var cmp = a_in._key - a_finder._key;
     if (cmp == 0)
     {
         a_finder._object = a_in;
         // the highest node in the hierarchy !!!
         return a_in.Remove();
     }
     if (cmp > 0)
     {
         a_in._preceding = RemoveGreaterOrEqual((FreeSlotNode
             ) a_in._preceding, a_finder);
         if (a_finder._object != null)
         {
             a_in._size--;
             return a_in;
         }
         a_finder._object = a_in;
         return a_in.Remove();
     }
     a_in._subsequent = RemoveGreaterOrEqual((FreeSlotNode
         ) a_in._subsequent, a_finder);
     if (a_finder._object != null)
     {
         a_in._size--;
     }
     return a_in;
 }
Example #4
0
        public virtual Sharpen.Util.ISet Overlaps()
        {
            Sharpen.Util.ISet overlaps = new HashSet();
            ByRef             prevSlot = ByRef.NewInstance();

            TreeIntObject.Traverse(_slots, new _IVisitor4_29(this, prevSlot, overlaps));
            return(overlaps);
        }
Example #5
0
 public virtual void Add(SlotDetail slot)
 {
     if (Tree.Find(_slots, new TreeIntObject(slot._slot.Address())) != null)
     {
         _dupes.Add(new Pair(ByAddress(slot._slot.Address()), slot));
     }
     _slots = (TreeIntObject)Tree.Add(_slots, new TreeIntObject
                                          (slot._slot.Address(), slot));
 }
Example #6
0
 public virtual void ConvertCacheEvictedNodesToReadMode()
 {
     if (_evictedFromCache == null)
     {
         return;
     }
     Tree.Traverse(_evictedFromCache, new _IVisitor4_628());
     _evictedFromCache = null;
 }
        public override int MappedId(int oldID)
        {
            int classID = MappedClassID(oldID);

            if (classID != 0)
            {
                return(classID);
            }
            TreeIntObject res = (TreeIntObject)TreeInt.Find(_tree, oldID);

            if (res != null)
            {
                return((int)res._object);
            }
            return(0);
        }
Example #8
0
        private void Purge()
        {
            if (_nodes == null)
            {
                return;
            }
            Tree temp = _nodes;

            _nodes = null;
            _root.HoldChildrenAsIDs();
            AddNode(_root);
            temp.Traverse(new _IVisitor4_294());
            for (IEnumerator entryIter = _nodeCache.GetEnumerator(); entryIter.MoveNext();)
            {
                BTreeNodeCacheEntry entry = ((BTreeNodeCacheEntry)entryIter.Current);
                entry._node.HoldChildrenAsIDs();
            }
        }
Example #9
0
        public virtual BTreeNode ProduceNode(int id)
        {
            if (DTrace.enabled)
            {
                DTrace.BtreeProduceNode.Log(id);
            }
            TreeIntObject addtio = new TreeIntObject(id);

            _nodes = (TreeIntObject)((TreeIntObject)Tree.Add(_nodes, addtio));
            TreeIntObject tio  = (TreeIntObject)addtio.AddedOrExisting();
            BTreeNode     node = (BTreeNode)tio.GetObject();

            if (node == null)
            {
                node = CacheEntry(new BTreeNode(id, this))._node;
                tio.SetObject(node);
                AddToProcessing(node);
            }
            return(node);
        }
Example #10
0
 internal virtual void AddNode(BTreeNode node)
 {
     _nodes = (TreeIntObject) Tree.Add(_nodes, new TreeIntObject(node.GetID
         (), node));
     AddToProcessing(node);
 }
Example #11
0
 public virtual void Add(Slot slot)
 {
     _slots = ((TreeIntObject)Tree.Add(_slots, new TreeIntObject(slot.Address(), slot)
                                       ));
 }
Example #12
0
 private void AddMapping(Slot slot, ConsistencyChecker.SlotSource source)
 {
     mappings = ((TreeIntObject)Tree.Add(mappings, new ConsistencyChecker.MappingTree(
                                             slot, source)));
 }
Example #13
0
 internal virtual void AddNode(BTreeNode node)
 {
     _nodes = (TreeIntObject)((TreeIntObject)Tree.Add(_nodes, new TreeIntObject(node.GetID
                                                                                    (), node)));
     AddToProcessing(node);
 }
Example #14
0
 public virtual void EvictedFromCache(BTreeNode node)
 {
     _evictedFromCache = ((TreeIntObject) Tree.Add(_evictedFromCache, new TreeIntObject
         (node.GetID(), node)));
 }
Example #15
0
 public virtual void ConvertCacheEvictedNodesToReadMode()
 {
     if (_evictedFromCache == null)
     {
         return;
     }
     Tree.Traverse(_evictedFromCache, new _IVisitor4_628());
     _evictedFromCache = null;
 }
Example #16
0
 internal virtual void RemoveNode(BTreeNode node)
 {
     _nodes = (TreeIntObject) ((TreeInt) _nodes.RemoveLike(new TreeInt(node.GetID())));
 }
Example #17
0
 internal virtual void RemoveNode(BTreeNode node)
 {
     _nodes = (TreeIntObject)((TreeInt)_nodes.RemoveLike(new TreeInt(node.GetID())));
 }
Example #18
0
 public virtual BTreeNode ProduceNode(int id)
 {
     if (DTrace.enabled)
     {
         DTrace.BtreeProduceNode.Log(id);
     }
     var addtio = new TreeIntObject(id);
     _nodes = (TreeIntObject) Tree.Add(_nodes, addtio);
     var tio = (TreeIntObject) addtio.AddedOrExisting();
     var node = (BTreeNode) tio.GetObject();
     if (node == null)
     {
         node = CacheEntry(new BTreeNode(id, this))._node;
         tio.SetObject(node);
         AddToProcessing(node);
     }
     return node;
 }
Example #19
0
 private void Purge()
 {
     if (_nodes == null)
     {
         return;
     }
     Tree temp = _nodes;
     _nodes = null;
     _root.HoldChildrenAsIDs();
     AddNode(_root);
     temp.Traverse(new _IVisitor4_294());
     for (var entryIter = _nodeCache.GetEnumerator(); entryIter.MoveNext();)
     {
         var entry = ((BTreeNodeCacheEntry) entryIter.Current);
         entry._node.HoldChildrenAsIDs();
     }
 }
Example #20
0
 public virtual void EvictedFromCache(BTreeNode node)
 {
     _evictedFromCache = ((TreeIntObject)Tree.Add(_evictedFromCache, new TreeIntObject
                                                      (node.GetID(), node)));
 }