Skip to content

Instantly share code, notes, and snippets.

@jpivarski
Created February 17, 2022 02:06
Show Gist options
  • Save jpivarski/2301a57135326d36dc9a6f36a13f76c1 to your computer and use it in GitHub Desktop.
Save jpivarski/2301a57135326d36dc9a6f36a13f76c1 to your computer and use it in GitHub Desktop.
Description of the structure of a ROOT TBasket for the kerchunk meeting
Display the source blob
Display the rendered blob
Raw
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="297mm"
height="210mm"
viewBox="0 0 297 210"
version="1.1"
id="svg8"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
sodipodi:docname="kerchunk-root-buffer-layout.svg">
<defs
id="defs2">
<linearGradient
inkscape:collect="always"
id="linearGradient2476">
<stop
style="stop-color:#ffcc00;stop-opacity:1"
offset="0"
id="stop2472" />
<stop
id="stop2486"
offset="0.24783772"
style="stop-color:#ffe789;stop-opacity:1;" />
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="1"
id="stop2474" />
</linearGradient>
<marker
inkscape:isstock="true"
style="overflow:visible;"
id="marker1622"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="Arrow1Mend">
<path
transform="scale(0.4) rotate(180) translate(10,0)"
style="fill-rule:evenodd;stroke:#808080;stroke-width:1pt;stroke-opacity:1;fill:#808080;fill-opacity:1"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
id="path1620" />
</marker>
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Mend"
style="overflow:visible;"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path877"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#808080;stroke-width:1pt;stroke-opacity:1;fill:#808080;fill-opacity:1"
transform="scale(0.4) rotate(180) translate(10,0)" />
</marker>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2476"
id="linearGradient2478"
x1="31.537804"
y1="170.10342"
x2="202.05576"
y2="182.93236"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,-1.0509556)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2476"
id="linearGradient2490"
gradientUnits="userSpaceOnUse"
x1="31.537804"
y1="170.10342"
x2="202.05576"
y2="182.93236"
gradientTransform="translate(170.51795,-1.0509556)" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="486.58718"
inkscape:cy="403.28846"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1043"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:object-nodes="true"
inkscape:snap-midpoints="false"
inkscape:object-paths="false" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-87)">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="7.0188484"
y="102.70043"
id="text836"><tspan
sodipodi:role="line"
id="tspan834"
x="7.0188484"
y="107.84245"
style="stroke-width:0.26458332" /></text>
<g
id="g2793"
transform="translate(-6.8791667,-7.4083495)">
<text
id="text840"
y="107.2558"
x="12.561667"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="107.2558"
x="12.561667"
id="tspan838"
sodipodi:role="line">(A) After running through a bunch of headers, we get seek positions of &quot;raw-ish&quot; buffers:</tspan></text>
<g
transform="translate(0,1.9868983)"
id="g2518">
<rect
style="opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect856"
width="274.75305"
height="12.82893"
x="11.759859"
y="128.29921" />
<rect
style="opacity:1;vector-effect:none;fill:#ffeeaa;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect842"
width="235.19719"
height="12.828938"
x="31.537804"
y="128.29921" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="38.219543"
y="137.08098"
id="text846"><tspan
sodipodi:role="line"
id="tspan844"
x="38.219543"
y="137.08098"
style="stroke-width:0.26458332">TBasket data!</tspan></text>
<path
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="M 31.537804,128.29921 H 11.759859"
id="path848"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path850"
d="M 31.537804,141.12814 H 11.759859"
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="M 286.51293,141.12814 H 266.73499"
id="path852"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path854"
d="M 286.51293,128.29921 H 266.73499"
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text860"
y="137.08098"
x="14.057047"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="137.08098"
x="14.057047"
id="tspan858"
sodipodi:role="line">TKey</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="271.56226"
y="137.08098"
id="text864"><tspan
sodipodi:role="line"
id="tspan862"
x="271.56226"
y="137.08098"
style="stroke-width:0.26458332">???</tspan></text>
<path
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#808080;stroke-width:0.52899998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
d="m 31.537804,117.60841 v 9.10329"
id="path866"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path1618"
d="m 266.73499,117.60841 v 9.10329"
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#808080;stroke-width:0.52899998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1622)" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="24.046789"
y="115.48637"
id="text2370"><tspan
sodipodi:role="line"
id="tspan2368"
x="24.046789"
y="115.48637"
style="fill:#808080;stroke-width:0.26458332">start</tspan></text>
<text
id="text2398"
y="115.48637"
x="259.87961"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="fill:#808080;stroke-width:0.26458332"
y="115.48637"
x="259.87961"
id="tspan2396"
sodipodi:role="line">stop</tspan></text>
</g>
</g>
<g
id="g2770"
transform="translate(-6.8791667,0.56213174)">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="12.561667"
y="153.68921"
id="text2462"><tspan
sodipodi:role="line"
id="tspan2460"
x="12.561667"
y="153.68921"
style="stroke-width:0.26458332">(B) This might consist of one compressed block or several. <tspan
style="fill:#808080"
id="tspan2835">(They add up to a known size.)</tspan></tspan></text>
<g
id="g2855">
<rect
style="opacity:1;vector-effect:none;fill:url(#linearGradient2478);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2470"
width="170.51796"
height="12.828934"
x="31.537804"
y="169.05247" />
<text
id="text2468"
y="177.83424"
x="38.219543"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="177.83424"
x="38.219543"
id="tspan2466"
sodipodi:role="line">First block</tspan></text>
<rect
y="169.05247"
x="202.05576"
height="12.828949"
width="64.67923"
id="rect2488"
style="opacity:1;vector-effect:none;fill:url(#linearGradient2490);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="208.7375"
y="177.83424"
id="text2496"><tspan
sodipodi:role="line"
id="tspan2494"
x="208.7375"
y="177.83424"
style="stroke-width:0.26458332">Second block</tspan></text>
<text
id="text2839"
y="164.27255"
x="39.495022"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="fill:#808080;stroke-width:0.26458332"
y="164.27255"
x="39.495022"
id="tspan2837"
sodipodi:role="line">total compressed = fNbytes ‒ fKeylen; total uncompressed = fObjlen</tspan></text>
</g>
</g>
<g
id="g2759"
transform="translate(-6.8791667,15.264136)">
<text
id="text2522"
y="185.72404"
x="12.561667"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="185.72404"
x="12.561667"
id="tspan2520"
sodipodi:role="line">(C) Each block has a 9 or 17-byte header describing compression algorithm and level.</tspan></text>
<g
transform="translate(0,-18.482788)"
id="g2703">
<rect
y="232.01601"
x="31.537804"
height="12.828934"
width="170.51796"
id="rect2524"
style="opacity:1;vector-effect:none;fill:#ffeeaa;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
style="opacity:1;vector-effect:none;fill:#ffdd55;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2572"
width="6.3500009"
height="12.82893"
x="44.237808"
y="232.01601" />
<rect
style="opacity:1;vector-effect:none;fill:#ffd42a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2574"
width="6.3500009"
height="12.82893"
x="37.887802"
y="232.01601" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="39.687504"
y="214.79018"
id="text2536"><tspan
sodipodi:role="line"
id="tspan2534"
x="39.687504"
y="214.79018"
style="stroke-width:0.26458332">3-byte type<tspan
style="fill:#808080"
id="tspan2795"> (b&quot;ZL&quot; for zlib, b&quot;XZ&quot; for lzma, b&quot;L4&quot; for lz4, b&quot;ZS&quot; for zstd)</tspan></tspan></text>
<text
id="text2548"
y="221.66933"
x="46.037506"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="221.66933"
x="46.037506"
id="tspan2546"
sodipodi:role="line">3-byte compressed size</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="52.387508"
y="228.54848"
id="text2552"><tspan
sodipodi:role="line"
id="tspan2550"
x="52.387508"
y="228.54848"
style="stroke-width:0.26458332">3-byte uncompressed size</tspan></text>
<rect
style="opacity:1;vector-effect:none;fill:#ffcc00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2576"
width="6.3500013"
height="12.828923"
x="31.537804"
y="232.01601" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="57.269547"
y="240.79778"
id="text2562"><tspan
sodipodi:role="line"
id="tspan2560"
x="57.269547"
y="240.79778"
style="stroke-width:0.26458332">Compressed data</tspan></text>
<path
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 34.712806,232.016 v -19.70703 h 3.902271"
id="path2566"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
sodipodi:nodetypes="ccc"
inkscape:connector-curvature="0"
id="path2568"
d="m 41.062807,232.07981 v -12.89166 h 3.902271"
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 47.412808,232.14361 v -6.07628 h 3.902271"
id="path2570"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<rect
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2578"
width="170.51796"
height="12.828934"
x="31.537804"
y="232.01601" />
<path
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 37.887805,232.016 v 12.82893"
id="path2528"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path2554"
d="m 44.237806,232.016 v 12.82893"
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 50.587807,232.016 v 12.82893"
id="path2556"
inkscape:connector-curvature="0" />
<text
id="text2602"
y="228.54848"
x="141.81676"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="fill:#808080;stroke-width:0.26458332"
y="228.54848"
x="141.81676"
id="tspan2600"
sodipodi:role="line">(b&quot;L4&quot; additionally has an 8-byte checksum)</tspan></text>
</g>
</g>
<g
id="g2733"
transform="translate(-6.8791667,-1.5875)">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="12.561667"
y="261.75842"
id="text2598"><tspan
sodipodi:role="line"
id="tspan2596"
x="12.561667"
y="261.75842"
style="stroke-width:0.26458332">(D) All data types except flat-numeric have entry byte-offsets (relative to the TKey).</tspan></text>
<g
id="g2680">
<rect
style="opacity:1;vector-effect:none;fill:#ffeeaa;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2589"
width="151.46796"
height="12.828934"
x="50.587811"
y="275.93686" />
<rect
style="opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2635"
width="7.40835"
height="12.828919"
x="144.9057"
y="275.93686" />
<rect
style="opacity:1;vector-effect:none;fill:#e6e6e6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2642"
width="7.4083509"
height="12.828919"
x="194.64742"
y="275.93686" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="57.26955"
y="284.71863"
id="text2623"><tspan
sodipodi:role="line"
id="tspan2621"
x="57.26955"
y="284.71863"
style="stroke-width:0.26458332">data</tspan></text>
<text
id="text2631"
y="284.71863"
x="158.99579"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="284.71863"
x="158.99579"
id="tspan2629"
sodipodi:role="line">offsets</tspan></text>
<path
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 194.64742,275.93683 v 12.82892"
id="path2604"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path2606"
d="m 152.31406,275.93683 v 12.82892"
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 144.90571,275.93683 v 12.82892"
id="path2608"
inkscape:connector-curvature="0" />
<rect
y="275.93686"
x="50.587811"
height="12.828934"
width="151.46796"
id="rect2649"
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text2653"
y="272.34174"
x="153.58453"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
xml:space="preserve"><tspan
style="stroke-width:0.26458332"
y="272.34174"
x="153.58453"
id="tspan2651"
sodipodi:role="line">4 bytes</tspan></text>
<path
sodipodi:nodetypes="ccc"
inkscape:connector-curvature="0"
id="path2655"
d="m 148.6099,275.93683 v -6.07628 h 3.90227"
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="203.32617"
y="272.34174"
id="text2659"><tspan
sodipodi:role="line"
id="tspan2657"
x="203.32617"
y="272.34174"
style="stroke-width:0.26458332">4 bytes</tspan></text>
<path
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 198.35161,275.93683 v -6.07628 h 3.90227"
id="path2661"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.3499999px;line-height:1.10000002;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#808080;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="235.68336"
y="277.11816"
id="text2799"><tspan
sodipodi:role="line"
id="tspan2797"
x="235.68336"
y="277.11816"
style="fill:#808080;stroke-width:0.26458332">#offsets = #entries</tspan><tspan
sodipodi:role="line"
x="235.68336"
y="284.10315"
style="fill:#808080;stroke-width:0.26458332"
id="tspan2801">len(data) =</tspan><tspan
sodipodi:role="line"
x="235.68336"
y="291.08817"
style="fill:#808080;stroke-width:0.26458332"
id="tspan2803"> fLast ‒ fKeylen</tspan></text>
</g>
</g>
</g>
</svg>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment