/// <summary> /// 销毁子节点 /// </summary> private void Purge(ref IntegerID <T> next, bool isDispose = true) { MaxID = 0; if (next != default && next.HasNext) { Utils.Reclaim(next); } next = default; if (isDispose) { Utils.Reclaim(ref mMap); } else { mMap.Clear(); } }
/// <summary> /// 从子节点中查找id /// </summary> private int GetIDInNext(ref T target) { int result = 0; IntegerID <T> next = !HasNext?AddNext() : mNext; while (next != null) { result = next.GetID(ref target); if (result < int.MaxValue) { return(result); } else { next = next.Next; } } return(result); }
/// <summary> /// 扩容 /// </summary> private IntegerID <T> AddNext() { mNext = new IntegerID <T>(); return(mNext); }
public IntegerMapper() { mIndexer = new IntegerID <MapperValueT>(); mMapper = new KeyValueList <int, MapperValueT>(); }