1 21 package com.db4o.inside.slots; 22 23 import com.db4o.*; 24 import com.db4o.foundation.Tree; 25 26 29 public class ReferencedSlot extends TreeInt { 30 31 private Slot _slot; 32 33 private int _references; 34 35 public ReferencedSlot(int a_key) { 36 super(a_key); 37 } 38 39 public Object shallowClone() { 40 ReferencedSlot rs = new ReferencedSlot(_key); 41 rs._slot = _slot; 42 rs._references = _references; 43 return super.shallowCloneInternal(rs); 44 } 45 46 public void pointTo(Slot slot) { 47 _slot = slot; 48 } 49 50 public Tree free(YapFile file, Tree treeRoot, Slot slot) { 51 file.free(_slot._address, _slot._length); 52 if (removeReferenceIsLast()) { 53 return treeRoot.removeNode(this); 54 } 55 pointTo(slot); 56 return treeRoot; 57 } 58 59 public boolean addReferenceIsFirst() { 60 _references++; 61 return (_references == 1); 62 } 63 64 public boolean removeReferenceIsLast() { 65 _references--; 66 return _references < 1; 67 } 68 69 public Slot slot() { 70 return _slot; 71 } 72 73 } 74 | Popular Tags |