internal Segment <byte> this[Hid hid] { get { var page = _pages[hid.BlockIndex]; return(page[hid.Index - 1]); } }
private void ProcessHeader() { var header = Heap[_headerHid]; Validate.Match(header[0], 0xb5, "Invalid type"); _keySize = header[1]; _valueSize = header[2]; _elementSize = _keySize + _valueSize; _indexLevels = header[3]; _rootHid = header.ToUInt32(4); }
internal BTree( Heap heap, Hid headerHid, Func <Segment <byte>, TKey> keyFactory, Func <Segment <byte>, T> valueFactory) { Heap = heap; _headerHid = headerHid; _keyFactory = keyFactory; _valueFactory = valueFactory; ProcessHeader(); }
private void Initialize() { var block = _reader.FindBlock(_node.DataBid); if (_node.DataBid.Type == BlockType.Internal) { BuildDataTreePages(block); ClientSignature = _pages[0].Data[3]; UserRoot = _pages[0].Data.Derive(4, 4).ToUInt32(); } else { _pages.Add(new HeapPage(block.Data)); ClientSignature = block.Data[3]; UserRoot = block.Data.Segment(4, 4).ToUInt32(); } }