private TreePage GetNestedMultiValuePage(byte *nestedPagePtr, TreeNodeHeader *currentNode) { var nestedPage = new TreePage(nestedPagePtr, "multi tree", (ushort)TreeNodeHeader.GetDataSize(_tx, currentNode)); Debug.Assert(nestedPage.PageNumber == -1); // nested page marker return(nestedPage); }
private unsafe static void RenderPage(LowLevelTransaction tx, TreePage page, TextWriter sw, string text, bool open) { sw.WriteLine( "<ul><li><input type='checkbox' id='page-{0}' {3} /><label for='page-{0}'>{4}: Page {0:#,#;;0} - {1} - {2:#,#;;0} entries</label><ul>", page.PageNumber, page.IsLeaf ? "Leaf" : "Branch", page.NumberOfEntries, open ? "checked" : "", text); for (int i = 0; i < page.NumberOfEntries; i++) { var nodeHeader = page.GetNode(i); var key = TreeNodeHeader.ToSlicePtr(tx.Allocator, nodeHeader).ToString(); if (page.IsLeaf) { sw.Write("<li>{0} {1} - size: {2:#,#}</li>", key, nodeHeader->Flags, TreeNodeHeader.GetDataSize(tx, nodeHeader)); } else { var pageNum = nodeHeader->PageNumber; if (i == 0) { key = "[smallest]"; } RenderPage(tx, tx.GetReadOnlyTreePage(pageNum), sw, key, false); } } sw.WriteLine("</ul></li></ul>"); }