You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							20397 lines
						
					
					
						
							600 KiB
						
					
					
				
			
		
		
	
	
							20397 lines
						
					
					
						
							600 KiB
						
					
					
				<html>
 | 
						|
  <head>
 | 
						|
    <title>
 | 
						|
      HDF5 File Format Specification Version 3.0
 | 
						|
    </title>
 | 
						|
 | 
						|
    <style>
 | 
						|
      h1 {    display: block;
 | 
						|
              margin-top: 24px;
 | 
						|
              margin-bottom: 24px;
 | 
						|
              margin-left: 0px;
 | 
						|
              margin-right: 0px;
 | 
						|
              text-indent: 0px;
 | 
						|
              font-size: 300%;
 | 
						|
         }
 | 
						|
 | 
						|
      h2 {    display: block;
 | 
						|
              margin-top: 60px;
 | 
						|
              margin-bottom: 8px;
 | 
						|
              margin-left: 0px;
 | 
						|
              margin-right: 0px;
 | 
						|
              text-indent: 0px;
 | 
						|
              border-style: solid;
 | 
						|
              border-top-style: medium;
 | 
						|
              border-top-color: #A9A9A9;
 | 
						|
              border-bottom: none;
 | 
						|
              border-left: none;
 | 
						|
              border-right: none;
 | 
						|
              font-size: 250%;
 | 
						|
         }
 | 
						|
 | 
						|
      h3 {    display: block;
 | 
						|
              margin-top: 40px;
 | 
						|
              margin-bottom: 8px;
 | 
						|
              margin-left: 0px;
 | 
						|
              margin-right: 0px;
 | 
						|
              text-indent: 0px;
 | 
						|
              font-size: 200%;
 | 
						|
         }
 | 
						|
 | 
						|
      h4 {    display: block;
 | 
						|
              margin-top: 32px;
 | 
						|
              margin-bottom: 8px;
 | 
						|
              margin-left: 0px;
 | 
						|
              margin-right: 0px;
 | 
						|
              text-indent: 0px;
 | 
						|
              font-size: 150%;
 | 
						|
         }
 | 
						|
 | 
						|
      p { display: block;
 | 
						|
          margin-top: 8px;
 | 
						|
          margin-bottom: 8px;
 | 
						|
          margin-left: 0px;
 | 
						|
          margin-right: 0px;
 | 
						|
          text-indent: 0px;
 | 
						|
          font-size: 100%;
 | 
						|
        }
 | 
						|
      <!--
 | 
						|
      p.item {    margin-left: 2em;
 | 
						|
                  text-indent: -2em
 | 
						|
             } -->
 | 
						|
               <!-- p.item2 { margin-left: 2em; text-indent: 2em} -->
 | 
						|
 | 
						|
                                                                  table.format {  border:solid;
 | 
						|
                                                                                  border-collapse:collapse;
 | 
						|
                                                                                  caption-side:top;
 | 
						|
                                                                                  text-align:center;
 | 
						|
                                                                                  width:80%;
 | 
						|
                                                                               }
 | 
						|
      table.format th {   border:ridge;
 | 
						|
                          padding:4px;
 | 
						|
                          width:25%;
 | 
						|
                      }
 | 
						|
      table.format td {   border:ridge;
 | 
						|
                          padding:4px;
 | 
						|
                      }
 | 
						|
      table.format caption {  font-weight:bold;
 | 
						|
                              font-size:larger;
 | 
						|
                           }
 | 
						|
 | 
						|
      table.note {border:none;
 | 
						|
                  text-align:right;
 | 
						|
                  width:80%;
 | 
						|
                 }
 | 
						|
 | 
						|
      table.desc {    border:solid;
 | 
						|
                      border-collapse:collapse;
 | 
						|
                      caption-size:top;
 | 
						|
                      text-align:left;
 | 
						|
                      width:80%;
 | 
						|
                 }
 | 
						|
      table.desc tr { vertical-align:top;
 | 
						|
                    }
 | 
						|
      table.desc th { border-style:ridge;
 | 
						|
                      font-size:larger;
 | 
						|
                      padding:4px;
 | 
						|
                      <!-- text-decoration:underline; -->
 | 
						|
                    }
 | 
						|
      table.desc td { border-style:ridge;
 | 
						|
                      <!-- padding: 4px; -->
 | 
						|
                                         vertical-align:text-top;
 | 
						|
                    }
 | 
						|
      table.desc caption {    font-weight:bold;
 | 
						|
                              font-size:larger;
 | 
						|
                         }
 | 
						|
 | 
						|
      table.list {    border:none;
 | 
						|
                      width:100%
 | 
						|
                 }
 | 
						|
      table.list tr { vertical-align:text-top;
 | 
						|
                    }
 | 
						|
      table.list th { border:none;
 | 
						|
                      text-decoration:underline;
 | 
						|
                      vertical-align:text-top;
 | 
						|
                    }
 | 
						|
      table.list td { border:none;
 | 
						|
                      vertical-align:text-top;
 | 
						|
                    }
 | 
						|
 | 
						|
      table.msgdesc    {  border:none;
 | 
						|
                          text-align:left;
 | 
						|
                          width: 80%
 | 
						|
                       }
 | 
						|
      table.msgdesc tr {  vertical-align:text-top;
 | 
						|
                          border-spacing:0;
 | 
						|
                          padding:0; }
 | 
						|
      table.msgdesc th {  border:none;
 | 
						|
                          text-decoration:underline;
 | 
						|
                          vertical-align:text-top; }
 | 
						|
      table.msgdesc td {  border:none;
 | 
						|
                          vertical-align:text-top;
 | 
						|
                       }
 | 
						|
 | 
						|
      table.list80 {  border:none;
 | 
						|
                      width:80%
 | 
						|
                   }
 | 
						|
      table.list80 tr {   vertical-align:text-top;
 | 
						|
                      }
 | 
						|
      table.list80 th {   border:none;
 | 
						|
                          text-decoration:underline;
 | 
						|
                          vertical-align:text-top;
 | 
						|
                      }
 | 
						|
      table.list80 td {   border:none;
 | 
						|
                          vertical-align:text-top;
 | 
						|
                      }
 | 
						|
 | 
						|
      table.glossary    { border:none;
 | 
						|
                          text-align:left;
 | 
						|
                          width: 80%
 | 
						|
                        }
 | 
						|
      table.glossary tr { vertical-align:text-top;
 | 
						|
                          border-spacing:0;
 | 
						|
                          padding:0; }
 | 
						|
      table.glossary th { border:none;
 | 
						|
                          text-align:left;
 | 
						|
                          text-decoration:underline;
 | 
						|
                          vertical-align:text-top; }
 | 
						|
      table.glossary td { border:none;
 | 
						|
                          text-align:left;
 | 
						|
                          vertical-align:text-top;
 | 
						|
                        }
 | 
						|
 | 
						|
      div {   page-break-inside:avoid;
 | 
						|
              page-break-after:auto
 | 
						|
          }
 | 
						|
 | 
						|
    </style>
 | 
						|
 | 
						|
    <!-- #BeginLibraryItem "/ed_libs/styles_Format.lbi" -->
 | 
						|
    <!--
 | 
						|
        * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 | 
						|
        * Copyright by The HDF Group.                                               *
 | 
						|
        * All rights reserved.                                                      *
 | 
						|
        *                                                                           *
 | 
						|
        * This file is part of HDF5.  The full HDF5 copyright notice, including     *
 | 
						|
        * terms governing use, modification, and redistribution, is contained in    *
 | 
						|
        * the COPYING file, which can be found at the root of the source code       *
 | 
						|
        * distribution tree, or in https://www.hdfgroup.org/licenses.               *
 | 
						|
        * If you do not have access to either file, you may request a copy from     *
 | 
						|
        * help@hdfgroup.org.                                                        *
 | 
						|
        * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 | 
						|
      -->
 | 
						|
    <!-- #EndLibraryItem --><!-- #BeginLibraryItem "/ed_libs/NavBar_ADevG.lbi" -->
 | 
						|
  </head>
 | 
						|
  <body>
 | 
						|
    <!-- #EndLibraryItem -->
 | 
						|
 | 
						|
    <center>
 | 
						|
      <table border="0" width="90%">
 | 
						|
        <tr>
 | 
						|
          <td valign="top">
 | 
						|
            <ol type="I">
 | 
						|
              <li><a href="#Intro">Introduction</a></li>
 | 
						|
              <font size="-1">
 | 
						|
                <ol type="A">
 | 
						|
                  <li><a href="#ThisDocument">This Document</a></li>
 | 
						|
                  <li><a href="#ChangesForHdf5_1_12">Changes for HDF5 1.12</a></li>
 | 
						|
                  <li><a href="#ChangesForHdf5_1_10">Changes for HDF5 1.10</a></li>
 | 
						|
                </ol>
 | 
						|
              </font>
 | 
						|
 | 
						|
              <li><a href="#FileMetaData">Disk Format: Level 0 - File Metadata</a></li>
 | 
						|
              <font size="-1">
 | 
						|
	            <ol type="A">
 | 
						|
	              <li><a href="#Superblock">Disk Format: Level 0A - Format Signature
 | 
						|
                      and Superblock</a></li>
 | 
						|
	              <li><a href="#DriverInfo">Disk Format: Level 0B - File Driver
 | 
						|
                      Info</a></li>
 | 
						|
	              <li><a href="#SuperblockExt">Disk Format: Level 0C - Superblock
 | 
						|
                      Extension</a></li>
 | 
						|
	            </ol>
 | 
						|
              </font>
 | 
						|
              <li><a href="#FileInfra">Disk Format: Level 1 - File Infrastructure</a></li>
 | 
						|
              <font size="-1">
 | 
						|
	            <ol type="A">
 | 
						|
	              <li><a href="#Btrees">Disk Format: Level 1A - B-trees and B-tree
 | 
						|
                      Nodes</a>
 | 
						|
	                <ol type="1">
 | 
						|
                      <li><a href="#V1Btrees">Disk Format: Level 1A1 - Version 1
 | 
						|
                          B-trees</a></li>
 | 
						|
                      <li><a href="#V2Btrees">Disk Format: Level 1A2 - Version 2
 | 
						|
                          B-trees</a></li>
 | 
						|
                    </ol>
 | 
						|
                  </li>
 | 
						|
	              <li><a href="#SymbolTable">Disk Format: Level 1B - Group Symbol
 | 
						|
                      Table Nodes</a></li>
 | 
						|
	              <li><a href="#SymbolTableEntry">Disk Format: Level 1C - Symbol
 | 
						|
                      Table Entry</a></li>
 | 
						|
	              <li><a href="#LocalHeap">Disk Format: Level 1D - Local Heaps</a></li>
 | 
						|
	              <li><a href="#GlobalHeap">Disk Format: Level 1E - Global Heap</a></li>
 | 
						|
                  <li><a href="#GlobalHeapVDS">Disk Format: Level 1F - Global Heap
 | 
						|
                      Block for Virtual Datasets</a></li>
 | 
						|
	              <li><a href="#FractalHeap">Disk Format: Level 1G - Fractal Heap</a></li>
 | 
						|
	              <li><a href="#FreeSpaceManager">Disk Format: Level 1H - Free-space
 | 
						|
                      Manager</a></li>
 | 
						|
	              <li><a href="#SOHMTable">Disk Format: Level 1I - Shared Object
 | 
						|
                      Header Message Table</a></li>
 | 
						|
	            </ol>
 | 
						|
              </font>
 | 
						|
              <li><a href="#DataObject">Disk Format: Level 2 - Data Objects</a></li>
 | 
						|
              <font size="-1">
 | 
						|
	            <ol type="A">
 | 
						|
	              <li><a href="#ObjectHeader">Disk Format: Level 2A - Data Object Headers</a></li>
 | 
						|
                  <ol type="1">
 | 
						|
                    <li><a href="#ObjectHeaderPrefix">Disk Format: Level 2A1 -
 | 
						|
                        Data Object Header Prefix</a>
 | 
						|
                      <ol type="a">
 | 
						|
                        <li><a href="#V1ObjectHeaderPrefix">Version 1 Data
 | 
						|
                            Object Header Prefix</a></li>
 | 
						|
                        <li><a href="#V2ObjectHeaderPrefix">Version 2 Data
 | 
						|
                            Object Header Prefix</a></li>
 | 
						|
                      </ol>
 | 
						|
                    </li>
 | 
						|
                    <li><a href="#ObjectHeaderMessages">Disk Format: Level 2A2 -
 | 
						|
                        Data Object Header Messages</a></li>
 | 
						|
                    <ol type="a">
 | 
						|
                      <li><a href="#NILMessage">The NIL Message</a></li>                                                       <!-- 0x0000 -->
 | 
						|
                      <li><a href="#DataspaceMessage">The Dataspace Message</a></li>                                           <!-- 0x0001 -->
 | 
						|
                      <li><a href="#LinkInfoMessage">The Link Info Message</a></li>                                     	  <!-- 0x0002 -->
 | 
						|
                      <li><a href="#DatatypeMessage">The Datatype Message</a></li>                                             <!-- 0x0003 -->
 | 
						|
                      <li><a href="#OldFillValueMessage">The Data Storage -
 | 
						|
                          Fill Value (Old) Message</a></li>        <!-- 0x0004 -->
 | 
						|
                    </ol>
 | 
						|
                  </ol>
 | 
						|
                </ol>
 | 
						|
              </font>
 | 
						|
            </ol>
 | 
						|
          </td>
 | 
						|
 | 
						|
          <td> </td>
 | 
						|
 | 
						|
          <td valign="top">
 | 
						|
            <ol type="I" start="4">
 | 
						|
              <li><a href="#DataObject">Disk Format: Level 2 - Data
 | 
						|
                  Objects</a><font size="-1"><i> (Continued)</i></li>
 | 
						|
	          <ol type="A">
 | 
						|
	            <li><a href="#ObjectHeader">Disk Format: Level 2A - Data Object
 | 
						|
                    Headers</a><i> (Continued)</i>
 | 
						|
	              <ol type="1" start="2">
 | 
						|
                    <li><a href="#ObjectHeaderMessages">Disk Format: Level 2A2 -
 | 
						|
                        Data Object Header Messages</a><i> (Continued)</i></li>
 | 
						|
                    <ol type="a" start="6">
 | 
						|
                      <li><a href="#FillValueMessage">The Data Storage -
 | 
						|
                          Fill Value Message</a></li>              <!-- 0x0005 -->
 | 
						|
                      <li><a href="#LinkMessage">The Link Message</a></li>                                             <!-- 0x0006 -->
 | 
						|
                      <li><a href="#ExternalFileListMessage">The Data Storage -
 | 
						|
                          External Data Files Message</a></li>     <!-- 0x0007 -->
 | 
						|
                      <li><a href="#LayoutMessage">The Data Layout Message</a></li>                                  <!-- 0x0008 -->
 | 
						|
                      <li><a href="#BogusMessage">The Bogus Message</a></li>                                                   <!-- 0x0009 -->
 | 
						|
                      <li><a href="#GroupInfoMessage">The Group Info
 | 
						|
                          Message</a></li>                         <!-- 0x000a -->
 | 
						|
                      <li><a href="#FilterMessage">The Data Storage -
 | 
						|
                          Filter Pipeline Message</a></li>         <!-- 0x000b -->
 | 
						|
                      <li><a href="#AttributeMessage">The Attribute
 | 
						|
                          Message</a></li>                         <!-- 0x000c -->
 | 
						|
                      <li><a href="#CommentMessage">The Object Comment
 | 
						|
                          Message</a></li>                         <!-- 0x000d -->
 | 
						|
                      <li><a href="#OldModificationTimeMessage">The Object
 | 
						|
                          Modification Time (Old) Message</a></li> <!-- 0x000e -->
 | 
						|
                      <li><a href="#SOHMTableMessage">The Shared Message
 | 
						|
                          Table Message</a></li>                   <!-- 0x000f -->
 | 
						|
                      <li><a href="#ContinuationMessage">The Object Header
 | 
						|
                          Continuation Message</a></li>            <!-- 0x0010 -->
 | 
						|
                      <li><a href="#SymbolTableMessage">The Symbol
 | 
						|
                          Table Message</a></li>                   <!-- 0x0011 -->
 | 
						|
                      <li><a href="#ModificationTimeMessage">The Object
 | 
						|
                          Modification Time Message</a></li>       <!-- 0x0012 -->
 | 
						|
                      <li><a href="#BtreeKValuesMessage">The B-tree
 | 
						|
                          ‘K’ Values Message</a></li>  <!-- 0x0013 -->
 | 
						|
                      <li><a href="#DrvInfoMessage">The Driver Info
 | 
						|
                          Message</a></li>                         <!-- 0x0014 -->
 | 
						|
                      <li><a href="#AinfoMessage">The Attribute Info
 | 
						|
                          Message</a></li>                         <!-- 0x0015 -->
 | 
						|
                      <li><a href="#RefCountMessage">The Object Reference
 | 
						|
                          Count Message</a></li>                   <!-- 0x0016 -->
 | 
						|
                      <li><a href="#FsinfoMessage">The File Space Info
 | 
						|
                          Message</a></li>                         <!-- 0x0017 -->
 | 
						|
                    </ol>
 | 
						|
	              </ol>
 | 
						|
                </li>
 | 
						|
	            <li><a href="#DataStorage">Disk Format: Level 2B - Data Object Data Storage</a></li>
 | 
						|
	          </ol>
 | 
						|
              </font>
 | 
						|
              <li><a href="#AppendixA">Appendix A: Definitions</a></li>
 | 
						|
              <li><a href="#AppendixB">Appendix B: File Space Allocation
 | 
						|
                  Types</a></li>
 | 
						|
              <li><a href="#AppendixC">
 | 
						|
                  Appendix C: Types of Indexes for Dataset Chunks</a></li>
 | 
						|
              <font size="-1">
 | 
						|
	            <ol type="A">
 | 
						|
	              <li><a href="#SingleChunk">The Single Chunk Index</a></li>
 | 
						|
	              <li><a href="#Implicit">The Implicit Index</a></li>
 | 
						|
	              <li><a href="#FixedArray">The Fixed Array Index</a></li>
 | 
						|
	              <li><a href="#ExtensibleArray">The Extensible Array Index</a></li>
 | 
						|
	              <li><a href="#AppendV2Btrees">The Version 2 B-trees Index</a></li>
 | 
						|
	            </ol>
 | 
						|
              </font>
 | 
						|
              <li><a href="#AppendixD">
 | 
						|
                  Appendix D: Encoding for Dataspace and Reference</a></li>
 | 
						|
              <font size="-1">
 | 
						|
	            <ol type="A">
 | 
						|
	              <li><a href="#DataspaceEncode">Dataspace Encoding</a></li>
 | 
						|
	              <li><a href="#ReferenceEncodeRV">Reference Encoding (Revised)</a></li>
 | 
						|
	              <li><a href="#ReferenceEncodeDP">Reference Encoding (Backward Compatibility)</a></li>
 | 
						|
	            </ol>
 | 
						|
              </font>
 | 
						|
            </ol>
 | 
						|
        </td></tr>
 | 
						|
      </table>
 | 
						|
    </center>
 | 
						|
 | 
						|
 | 
						|
    <a name="Intro"><h2>I. Introduction</h2></a>
 | 
						|
 | 
						|
    <table align="right" width="100">
 | 
						|
      <tr><td> </td><td align="center">
 | 
						|
          <hr />
 | 
						|
          <img src="FF-IH_FileGroup.gif" alt="HDF5 Groups" hspace="15" vspace="15">
 | 
						|
        </td><td> </td></tr>
 | 
						|
      <tr><td> </td><td align="center">
 | 
						|
          <strong>Figure 1:</strong> Relationships among the HDF5 root group, other groups, and objects
 | 
						|
          <hr />
 | 
						|
        </td><td> </td></tr>
 | 
						|
 | 
						|
      <tr><td> </td><td align="center">
 | 
						|
          <img src="FF-IH_FileObject.gif" alt="HDF5 Objects" hspace="15" vspace="15">
 | 
						|
        </td><td> </td></tr>
 | 
						|
      <tr><td> </td><td align="center">
 | 
						|
          <strong>Figure 2:</strong> HDF5 objects -- datasets, datatypes, or dataspaces
 | 
						|
          <hr />
 | 
						|
        </td><td> </td></tr>
 | 
						|
    </table>
 | 
						|
 | 
						|
 | 
						|
    <p>The format of an HDF5 file on disk encompasses several
 | 
						|
      key ideas of the HDF4 and AIO file formats as well as
 | 
						|
      addressing some shortcomings therein.  The new format is
 | 
						|
      more self-describing than the HDF4 format and is more
 | 
						|
      uniformly applied to data objects in the file.</p>
 | 
						|
 | 
						|
    <p>An HDF5 file appears to the user as a directed graph.
 | 
						|
      The nodes of this graph are the higher-level HDF5 objects
 | 
						|
      that are exposed by the HDF5 APIs:</p>
 | 
						|
 | 
						|
    <ul>
 | 
						|
      <li>Groups</li>
 | 
						|
      <li>Datasets</li>
 | 
						|
      <li>Committed (formerly Named) datatypes</li>
 | 
						|
    </ul>
 | 
						|
 | 
						|
    <p>At the lowest level, as information is actually written to the disk,
 | 
						|
      an HDF5 file is made up of the following objects:</p>
 | 
						|
    <ul>
 | 
						|
      <li>A superblock</li>
 | 
						|
      <li>B-tree nodes</li>
 | 
						|
      <li>Heap blocks</li>
 | 
						|
      <li>Object headers</li>
 | 
						|
      <li>Object data</li>
 | 
						|
      <li>Free space</li>
 | 
						|
    </ul>
 | 
						|
 | 
						|
    <p>The HDF5 Library uses these low-level objects to represent the
 | 
						|
      higher-level objects that are then presented to the user or
 | 
						|
      to applications through the APIs. For instance, a group is an
 | 
						|
      object header that contains a message that points to a local
 | 
						|
      heap (for storing the links to objects in the group) and to a
 | 
						|
      B-tree (which indexes the links). A dataset is an object header
 | 
						|
      that contains messages that describe the datatype, dataspace,
 | 
						|
      layout, filters, external files, fill value, and other elements
 | 
						|
      with the layout message pointing to either a raw data chunk or
 | 
						|
      to a B-tree that points to raw data chunks.</p>
 | 
						|
 | 
						|
 | 
						|
    <a name="ThisDocument"><h3>I.A. This Document</h3></a>
 | 
						|
 | 
						|
    <p>This document describes the lower-level data objects;
 | 
						|
      the higher-level objects and their properties are described
 | 
						|
      in the <a href="UG/HDF5_User_Guide-Responsive HTML5/index.html"><cite>HDF5 User Guide</cite></a>.</p>
 | 
						|
 | 
						|
    <p>Three levels of information comprise the file format.
 | 
						|
      Level 0 contains basic information for identifying and
 | 
						|
      defining information about the file.  Level 1 information contains
 | 
						|
      the information about the pieces of a file shared by many objects
 | 
						|
      in the file (such as B-trees and heaps).  Level 2 is the rest
 | 
						|
      of the file and contains all of the data objects with each object
 | 
						|
      partitioned into header information, also known as
 | 
						|
      <em>metadata</em>, and data.</p>
 | 
						|
 | 
						|
    <p>The various components of the lower-level data objects are
 | 
						|
      described in pairs of tables. The first table shows the format
 | 
						|
      layout, and the second table describes the fields. The titles
 | 
						|
      of format layout tables begin with “Layout”. The
 | 
						|
      titles of the tables where the fields are described begin with
 | 
						|
      “Fields”. For example, the table that describes the
 | 
						|
      format of the <a href="#V2Btrees">version 2 B-tree header</a> has
 | 
						|
      a title of “Layout: Version 2 B-tree Header”, and the
 | 
						|
      fields in the version 2 B-tree header are described in the table
 | 
						|
      titled “Fields: Version 2 B-tree Header”.
 | 
						|
 | 
						|
    <p>The sizes of various fields in the following layout tables are
 | 
						|
      determined by looking at the number of columns the field spans
 | 
						|
      in the table.  There are exceptions: </p>
 | 
						|
    <ul>
 | 
						|
      <li> The size may be overridden by specifying a size in
 | 
						|
        parentheses</li>
 | 
						|
      <li> The size of addresses is determined by the
 | 
						|
        <em><a href="#SizeOfOffsetsV0">Size of Offsets</a></em> field
 | 
						|
        in the superblock and is indicated in this document with a
 | 
						|
        superscripted ‘O’</li>
 | 
						|
      <li> The size of length fields is determined by the
 | 
						|
        <em><a href="#SizeOfLengthsV0">Size of Lengths</a></em> field in
 | 
						|
        the superblock and is indicated in this document with a
 | 
						|
        superscripted ‘L’</li>
 | 
						|
    </ul>
 | 
						|
 | 
						|
    <p>Values for all fields in this document should be treated as unsigned
 | 
						|
      integers, unless otherwise noted in the description of a field.
 | 
						|
      Additionally, all metadata fields are stored in little-endian byte
 | 
						|
      order.
 | 
						|
    </p>
 | 
						|
 | 
						|
    <p>All checksums used in the format are computed with the
 | 
						|
      <a href="http://www.burtleburtle.net/bob/hash/doobs.html">Jenkins’
 | 
						|
        lookup3</a> algorithm.
 | 
						|
    </p>
 | 
						|
 | 
						|
    <p>Whenever a bit flag or field is mentioned for an entry, bits are
 | 
						|
      numbered from the lowest bit position in the entry.
 | 
						|
    </p>
 | 
						|
 | 
						|
    <p>Various format tables in this document have cells with
 | 
						|
      “This space inserted only to align table nicely”. These
 | 
						|
      entries in the table are just to make the table presentation nicer
 | 
						|
      and do not represent any values or padding in the file.
 | 
						|
    </p>
 | 
						|
 | 
						|
    <a name="ChangesForHdf5_1_12">
 | 
						|
      <h3>I.B. Changes for HDF5 1.12</h3></a>
 | 
						|
    <p>The following sections have been
 | 
						|
      changed or added for the 1.12 release:</p>
 | 
						|
    <ul>
 | 
						|
      <li>Under <a href="#DatatypeMessage">“The Datatype Message”</a>,
 | 
						|
        in the Description for “Fields:Datatype Message”,
 | 
						|
        version 4 was added and Reference class (7) of the datatype was updated to describe version 4.</li>
 | 
						|
      <li><a href="#AppendixD">
 | 
						|
          “Appendix D: Encoding for Dataspace and Reference”</a>
 | 
						|
        was added. </li>
 | 
						|
    </ul>
 | 
						|
 | 
						|
 | 
						|
    <a name="ChangesForHdf5_1_10">
 | 
						|
      <h3>I.C. Changes for HDF5 1.10</h3></a>
 | 
						|
 | 
						|
    <p>The following sections have been
 | 
						|
      changed or added for the 1.10 release:</p>
 | 
						|
    <ul>
 | 
						|
      <li>In the <a href="#Superblock">
 | 
						|
          “Disk Format: Level 0A - Format Signature and
 | 
						|
          Superblock”</a> section, version 3 of the superblock was
 | 
						|
        added. </li>
 | 
						|
      <li>In the <a href="#SuperblockExt">
 | 
						|
          “Disk Format: Level 0C - Superblock Extension”</a>
 | 
						|
        section, a link to the Data Storage message was added. </li>
 | 
						|
      <li>In the <a href="#V2Btrees">
 | 
						|
          “Disk Format: Level 1A2 - Version 2 B-trees”</a>
 | 
						|
        section, additional B-tree types were added. Tables that
 | 
						|
        describe the <a href="#V2BtreesType10">type 10</a> and
 | 
						|
        <a href="#V2BtreesType11">11</a> record layouts were added at
 | 
						|
        the end of the section.</li>
 | 
						|
      <li>The <a href="#GlobalHeapVDS">“Disk Format: Level 1F -
 | 
						|
          Global Heap Block for Virtual Datasets”</a> was added.
 | 
						|
      </li>
 | 
						|
      <li><a href="#LayoutMessage">
 | 
						|
          “The Data Layout Message”</a> section was changed.
 | 
						|
        The name was changed, and <a href="#DataLayoutV4">version 4</a>
 | 
						|
        of the data layout message was added for the virtual type.</li>
 | 
						|
      <li>The <a href="#FsinfoMessage">
 | 
						|
          “The File Space Info Message”</a> header message
 | 
						|
        type was added.</li>
 | 
						|
      <li><a href="#AppendixC">
 | 
						|
          “Appendix C: Types of Indexes for Dataset Chunks”</a>
 | 
						|
        was added. Five indexing types were added.</li>
 | 
						|
    </ul>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    <h2><a name="FileMetaData">
 | 
						|
        II. Disk Format: Level 0 - File Metadata</a></h2>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    <h3><a name="Superblock">
 | 
						|
        II.A. Disk Format: Level 0A - Format Signature and Superblock</a></h3>
 | 
						|
 | 
						|
    <p>The superblock may begin at certain predefined offsets within
 | 
						|
      the HDF5 file, allowing a block of unspecified content for
 | 
						|
      users to place additional information at the beginning (and
 | 
						|
      end) of the HDF5 file without limiting the HDF5 Library’s
 | 
						|
      ability to manage the objects within the file itself.  This
 | 
						|
      feature was designed to accommodate wrapping an HDF5 file in
 | 
						|
      another file format or adding descriptive information to an HDF5
 | 
						|
      file without requiring the modification of the actual file’s
 | 
						|
      information.  The superblock is located by searching for the
 | 
						|
      HDF5 format signature at byte offset 0, byte offset 512, and at
 | 
						|
      successive locations in the file, each a multiple of two of
 | 
						|
      the previous location; in other words, at these byte offsets:
 | 
						|
      0, 512, 1024, 2048, and so on.</p>
 | 
						|
 | 
						|
    <p>The superblock is composed of the format signature, followed by a
 | 
						|
      superblock version number and information that is specific to each
 | 
						|
      version of the superblock.
 | 
						|
 | 
						|
    <p>Currently, there are four versions of the superblock format:
 | 
						|
      <ul>
 | 
						|
        <li>Version 0 is the default format.</li>
 | 
						|
        <li>Version 1 is the same as version 0 but with the
 | 
						|
          “<em>Indexed Storage Internal Node K</em>” field
 | 
						|
          for storing non-default B-tree ‘K’ value.</li>
 | 
						|
        <li>Version 2 has some fields eliminated and compressed from
 | 
						|
          superblock format versions 0 and 1. It has added checksum support
 | 
						|
          and superblock extension to store additional superblock
 | 
						|
          metadata.</li>
 | 
						|
        <li>Version 3 is the same as version 2 except that the field
 | 
						|
          “<em>File Consistency Flags</em>” is used for file
 | 
						|
          locking. This format version will enable support for the latest
 | 
						|
          version.</li>
 | 
						|
      </ul>
 | 
						|
 | 
						|
    <p>Versions 0 and 1 of the superblock are described below:</p>
 | 
						|
 | 
						|
 | 
						|
    <div align="center">
 | 
						|
      <table class="format">
 | 
						|
        <caption>
 | 
						|
          Layout: Superblock (Versions 0 and 1)
 | 
						|
        </caption>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <th>byte</th>
 | 
						|
	      <th>byte</th>
 | 
						|
	      <th>byte</th>
 | 
						|
	      <th>byte</th>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />Format Signature
 | 
						|
            <em>(8 bytes)</em><br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td>Version # of Superblock</td>
 | 
						|
	      <td>Version # of File’s Free Space Storage</td>
 | 
						|
	      <td>Version # of Root Group Symbol Table Entry</td>
 | 
						|
	      <td>Reserved <em>(zero)</em></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td>Version Number of Shared Header Message Format</td>
 | 
						|
	      <td>Size of Offsets</td>
 | 
						|
	      <td>Size of Lengths</td>
 | 
						|
	      <td>Reserved <em>(zero)</em></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="2">Group Leaf Node K</td>
 | 
						|
	      <td colspan="2">Group Internal Node K</td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4">File Consistency Flags</td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="2" style="border:dotted;">Indexed Storage Internal Node K<sup>1</sup></td>
 | 
						|
	      <td colspan="2" style="border:dotted;">Reserved
 | 
						|
            <em>(zero)</em><sup>1</sup></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />Base Address<sup>O</sup><br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />Address of File Free space Info<sup>O</sup><br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />End of File Address<sup>O</sup><br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />Driver Information Block Address<sup>O</sup><br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4">Root Group Symbol Table Entry</td>
 | 
						|
	    </tr>
 | 
						|
      </table>
 | 
						|
 | 
						|
      <table class="note">
 | 
						|
        <tr>
 | 
						|
          <td width="60%"> </td>
 | 
						|
          <td width="40%">
 | 
						|
            (Items marked with a ‘1’ in the above table are
 | 
						|
            new in version 1 of the superblock.)
 | 
						|
        </td></tr>
 | 
						|
        <tr>
 | 
						|
          <td> </td>
 | 
						|
          <td>
 | 
						|
            (Items marked with an ‘O’ in the above table are
 | 
						|
            of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
              of Offsets</a> field in the superblock.)
 | 
						|
        </td></tr>
 | 
						|
      </table>
 | 
						|
    </div>
 | 
						|
 | 
						|
    <br />
 | 
						|
    <div align="center">
 | 
						|
      <table class="desc">
 | 
						|
        <caption>
 | 
						|
          Fields: Superblock (Versions 0 and 1)
 | 
						|
        </caption>
 | 
						|
	    <tr>
 | 
						|
          <th width="30%">Field Name</th>
 | 
						|
          <th>Description</th>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Format Signature</p></td>
 | 
						|
	      <td><p>This field contains a constant value and can be used to
 | 
						|
	          quickly identify a file as being an HDF5 file. The
 | 
						|
	          constant value is designed to allow easy identification of
 | 
						|
	          an HDF5 file and to allow certain types of data corruption
 | 
						|
	          to be detected.  The file signature of an HDF5 file always
 | 
						|
	          contains the following values:</p>
 | 
						|
            <center>
 | 
						|
              <table border align="center" cellpadding="4">
 | 
						|
		        <tr align="center">
 | 
						|
		          <td align="right">Decimal:</td>
 | 
						|
                  <td width="8%">137</td>
 | 
						|
		          <td width="8%">72</td>
 | 
						|
		          <td width="8%">68</td>
 | 
						|
		          <td width="8%">70</td>
 | 
						|
		          <td width="8%">13</td>
 | 
						|
		          <td width="8%">10</td>
 | 
						|
		          <td width="8%">26</td>
 | 
						|
		          <td width="8%">10</td>
 | 
						|
		        </tr>
 | 
						|
 | 
						|
		        <tr align="center">
 | 
						|
		          <td align="right">Hexadecimal:</td>
 | 
						|
		          <td>89</td>
 | 
						|
		          <td>48</td>
 | 
						|
		          <td>44</td>
 | 
						|
		          <td>46</td>
 | 
						|
		          <td>0d</td>
 | 
						|
		          <td>0a</td>
 | 
						|
		          <td>1a</td>
 | 
						|
		          <td>0a</td>
 | 
						|
		        </tr>
 | 
						|
 | 
						|
		        <tr align="center">
 | 
						|
		          <td align="right">ASCII C Notation:</td>
 | 
						|
		          <td>\211</td>
 | 
						|
		          <td>H</td>
 | 
						|
		          <td>D</td>
 | 
						|
		          <td>F</td>
 | 
						|
		          <td>\r</td>
 | 
						|
		          <td>\n</td>
 | 
						|
		          <td>\032</td>
 | 
						|
		          <td>\n</td>
 | 
						|
		        </tr>
 | 
						|
	          </table>
 | 
						|
	        </center>
 | 
						|
            <p>This signature both identifies the file as an HDF5 file
 | 
						|
	          and provides for immediate detection of common
 | 
						|
	          file-transfer problems. The first two bytes distinguish
 | 
						|
	          HDF5 files on systems that expect the first two bytes to
 | 
						|
	          identify the file type uniquely. The first byte is
 | 
						|
	          chosen as a non-ASCII value to reduce the probability
 | 
						|
	          that a text file may be misrecognized as an HDF5 file;
 | 
						|
	          also, it catches bad file transfers that clear bit
 | 
						|
	          7. Bytes two through four name the format. The CR-LF
 | 
						|
	          sequence catches bad file transfers that alter newline
 | 
						|
	          sequences. The control-Z character stops file display
 | 
						|
	          under MS-DOS. The final line feed checks for the inverse
 | 
						|
	          of the CR-LF translation problem.  (This is a direct
 | 
						|
	          descendent of the
 | 
						|
              <a href="http://www.libpng.org/pub/png/spec/iso/index-object.html#5PNG-file-signature">PNG</a> file
 | 
						|
              signature.)</p>
 | 
						|
            <p><em>This field is present in version 0+ of the superblock.</em>
 | 
						|
          </p></td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Version Number of the Superblock</p></td>
 | 
						|
	      <td><p>This value is used to determine the format of the
 | 
						|
	          information in the superblock.  When the format of the
 | 
						|
	          information in the superblock is changed, the version number
 | 
						|
	          is incremented to the next integer and can be used to
 | 
						|
	          determine how the information in the superblock is
 | 
						|
	          formatted.</p>
 | 
						|
 | 
						|
            <p>Values of 0, 1 and 2 are defined for this field (the
 | 
						|
              format of version 2 is described below, not here).
 | 
						|
            </p>
 | 
						|
 | 
						|
            <p><em>This field is present in version 0+ of the superblock.</em>
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Version Number of the File’s Free Space
 | 
						|
              Information</p></td>
 | 
						|
	      <td>
 | 
						|
            <p>This value is used to determine the format of the
 | 
						|
	          file’s free space information.
 | 
						|
            </p>
 | 
						|
            <p>The only value currently valid in this field is ‘0’, which
 | 
						|
              indicates that the file’s free space is as described
 | 
						|
              <a href="#FreeSpaceManager">below</a>.
 | 
						|
            </p>
 | 
						|
 | 
						|
            <p><em>This field is present in versions 0 and 1 of the
 | 
						|
                superblock.</em>
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Version Number of the Root Group Symbol Table
 | 
						|
              Entry</p></td>
 | 
						|
	      <td><p>This value is used to determine the format of the
 | 
						|
	          information in the Root Group Symbol Table Entry.  When the
 | 
						|
              format of the information in that field is changed, the
 | 
						|
	          version number is incremented to the next integer and can be
 | 
						|
	          used to determine how the information in the field
 | 
						|
	          is formatted.</p>
 | 
						|
            <p>The only value currently valid in this field is ‘0’,
 | 
						|
              which indicates that the root group symbol table entry is
 | 
						|
              formatted as described <a href="#SymbolTableEntry">below</a>.</p>
 | 
						|
            <p><em>This field is present in version 0 and 1 of the
 | 
						|
                superblock.</em></p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Version Number of the Shared Header Message Format</p></td>
 | 
						|
	      <td><p>This value is used to determine the format of the
 | 
						|
	          information in a shared object header message. Since the format
 | 
						|
	          of the shared header messages differs from the other private
 | 
						|
	          header messages, a version number is used to identify changes
 | 
						|
	          in the format.
 | 
						|
            </p>
 | 
						|
            <p>The only value currently valid in this field is ‘0’, which
 | 
						|
              indicates that shared header messages are formatted as
 | 
						|
              described <a href="#ObjectHeaderMessages">below</a>.
 | 
						|
            </p>
 | 
						|
 | 
						|
            <p><em>This field is present in version 0 and 1 of the superblock.</em>
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p><a name="SizeOfOffsetsV0">Size of Offsets</a></p></td>
 | 
						|
	      <td><p>This value contains the number of bytes used to store
 | 
						|
	          addresses in the file.  The values for the addresses of
 | 
						|
	          objects in the file are offsets relative to a base address,
 | 
						|
	          usually the address of the superblock signature.  This
 | 
						|
	          allows a wrapper to be added after the file is created
 | 
						|
	          without invalidating the internal offset locations.
 | 
						|
            </p>
 | 
						|
 | 
						|
            <p><em>This field is present in version 0+ of the superblock.</em>
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p><a name="SizeOfLengthsV0">Size of Lengths</a></p></td>
 | 
						|
	      <td><p>This value contains the number of bytes used to store
 | 
						|
	          the size of an object.
 | 
						|
            </p>
 | 
						|
            <p><em>This field is present in version 0+ of the superblock.</em>
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Group Leaf Node K</p></td>
 | 
						|
	      <td>
 | 
						|
            <p>Each leaf node of a group B-tree will have at
 | 
						|
	          least this many entries but not more than twice this
 | 
						|
	          many.  If a group has a single leaf node then it
 | 
						|
	          may have fewer entries.
 | 
						|
            </p>
 | 
						|
            <p>This value must be greater than zero.
 | 
						|
            </p>
 | 
						|
            <p>See the <a href="#Btrees">description</a> of B-trees below.
 | 
						|
            </p>
 | 
						|
 | 
						|
            <p><em>This field is present in version 0 and 1 of the superblock.</em>
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Group Internal Node K</p></td>
 | 
						|
	      <td>
 | 
						|
            <p>Each internal node of a group B-tree will have at
 | 
						|
	          least this many entries but not more than twice this
 | 
						|
	          many.  If the group has only one internal
 | 
						|
	          node then it might have fewer entries.
 | 
						|
            </p>
 | 
						|
            <p>This value must be greater than zero.
 | 
						|
            </p>
 | 
						|
            <p>See the <a href="#Btrees">description</a> of B-trees below.
 | 
						|
            </p>
 | 
						|
 | 
						|
            <p><em>This field is present in version 0 and 1 of the superblock.</em>
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td><p>File Consistency Flags</p></td>
 | 
						|
          <td>
 | 
						|
            <p>This field is unused and should be ignored.
 | 
						|
            </p>
 | 
						|
            <p><em>This field is present in version 0+ of the superblock.</em>
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Indexed Storage Internal Node K</p></td>
 | 
						|
	      <td>
 | 
						|
            <p>Each internal node of an indexed storage B-tree will have at
 | 
						|
	          least this many entries but not more than twice this
 | 
						|
	          many.  If the index storage B-tree has only one internal
 | 
						|
	          node then it might have fewer entries.
 | 
						|
            </p>
 | 
						|
            <p>This value must be greater than zero.
 | 
						|
            </p>
 | 
						|
            <p>See the <a href="#Btrees">description</a> of B-trees below.
 | 
						|
            </p>
 | 
						|
 | 
						|
            <p><em>This field is present in version 1 of the superblock.</em>
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td><p>Base Address</p></td>
 | 
						|
          <td>
 | 
						|
            <p>This is the absolute file address of the first byte of
 | 
						|
              the HDF5 data within the file.  The library currently
 | 
						|
              constrains this value to be the absolute file address
 | 
						|
              of the superblock itself when creating new files;
 | 
						|
              future versions of the library may provide greater
 | 
						|
              flexibility.  When opening an existing file and this address does
 | 
						|
              not match the offset of the superblock, the library assumes
 | 
						|
              that the entire contents of the HDF5 file have been adjusted in
 | 
						|
              the file and adjusts the base address and end of file address to
 | 
						|
              reflect their new positions in the file.  Unless otherwise noted,
 | 
						|
              all other file addresses are relative to this base
 | 
						|
              address.
 | 
						|
            </p>
 | 
						|
 | 
						|
            <p><em>This field is present in version 0+ of the superblock.</em>
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td><p>Address of Global Free-space Index</p></td>
 | 
						|
          <td>
 | 
						|
            <p>The file’s free space is not persistent for version 0 and 1 of
 | 
						|
	          the superblock.
 | 
						|
              Currently this field always contains the
 | 
						|
              <a href="#UndefinedAddress">undefined address</a>.
 | 
						|
            </p>
 | 
						|
 | 
						|
            <p><em>This field is present in version 0 and 1 of the superblock.</em>
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td><p>End of File Address</p></td>
 | 
						|
          <td>
 | 
						|
            <p>This is the absolute file address of the first byte past
 | 
						|
              the end of all HDF5 data.  It is used to determine whether a
 | 
						|
              file has been accidentally truncated and as an address where
 | 
						|
              file data allocation can occur if space from the free list is
 | 
						|
              not used.
 | 
						|
            </p>
 | 
						|
 | 
						|
            <p><em>This field is present in version 0+ of the superblock.</em>
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td><p>Driver Information Block Address</p></td>
 | 
						|
          <td>
 | 
						|
            <p>This is the relative file address of the file driver
 | 
						|
              information block which contains driver-specific
 | 
						|
              information needed to reopen the file. If there is no
 | 
						|
              driver information block then this entry should be the
 | 
						|
              <a href="#UndefinedAddress">undefined address</a>.
 | 
						|
            </p>
 | 
						|
 | 
						|
            <p><em>This field is present in version 0 and 1 of the superblock.</em>
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td><p>Root Group Symbol Table Entry</p></td>
 | 
						|
          <td>
 | 
						|
            <p>This is the <a href="#SymbolTableEntry">symbol table entry</a>
 | 
						|
              of the root group, which serves as the entry point into
 | 
						|
              the group graph for the file.
 | 
						|
            </p>
 | 
						|
 | 
						|
            <p><em>This field is present in version 0 and 1 of the superblock.</em>
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
      </table>
 | 
						|
    </div>
 | 
						|
 | 
						|
    <br />
 | 
						|
    <br />
 | 
						|
    <br />
 | 
						|
    <p>Versions 2 and 3 of the superblock are described below:</p>
 | 
						|
 | 
						|
    <div align="center">
 | 
						|
      <table class="format">
 | 
						|
        <caption>
 | 
						|
          Layout: Superblock (Versions 2 and 3)
 | 
						|
        </caption>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <th>byte</th>
 | 
						|
	      <th>byte</th>
 | 
						|
	      <th>byte</th>
 | 
						|
	      <th>byte</th>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />Format Signature
 | 
						|
            <em>(8 bytes)</em><br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td>Version # of Superblock</td>
 | 
						|
	      <td>Size of Offsets</td>
 | 
						|
	      <td>Size of Lengths</td>
 | 
						|
	      <td>File Consistency Flags</td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />Base Address<sup>O</sup><br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />Superblock Extension Address<sup>O</sup><br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />End of File Address<sup>O</sup><br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />Root Group Object Header Address<sup>O</sup><br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4">Superblock Checksum</td>
 | 
						|
	    </tr>
 | 
						|
      </table>
 | 
						|
 | 
						|
      <table class="note">
 | 
						|
        <tr>
 | 
						|
          <td width="60%"> </td>
 | 
						|
          <td width="40%">
 | 
						|
            (Items marked with an ‘O’ in the above table are
 | 
						|
            of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
              of Offsets</a> field in the superblock.)
 | 
						|
        </td></tr>
 | 
						|
      </table>
 | 
						|
 | 
						|
    </div>
 | 
						|
 | 
						|
    <br />
 | 
						|
    <div align="center">
 | 
						|
      <table class="desc">
 | 
						|
        <caption>
 | 
						|
          Fields: Superblock (Versions 2 and 3)
 | 
						|
        </caption>
 | 
						|
	    <tr>
 | 
						|
          <th width="30%">Field Name</th>
 | 
						|
          <th>Description</th>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Format Signature</p></td>
 | 
						|
	      <td>
 | 
						|
            <p>This field is the same as described for versions 0 and 1 of the
 | 
						|
              superblock.
 | 
						|
          </p></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Version Number of the Superblock</p></td>
 | 
						|
	      <td>
 | 
						|
            <p>This field has a value of 2 and has the same meaning as for
 | 
						|
              versions 0 and 1.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Size of Offsets</p></td>
 | 
						|
	      <td>
 | 
						|
            <p>This field is the same as described for
 | 
						|
              <a href="#SizeOfOffsetsV0">versions 0 and 1</a> of the
 | 
						|
              superblock.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Size of Lengths</p></td>
 | 
						|
	      <td>
 | 
						|
            <p>This field is the same as described for
 | 
						|
              <a href="#SizeOfLengthsV0">versions 0 and 1</a> of the
 | 
						|
              superblock.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td><p>File Consistency Flags</p></td>
 | 
						|
 | 
						|
          <td>
 | 
						|
            <p>For superblock version
 | 
						|
              2: This field is unused and should be ignored.</p>
 | 
						|
            <p>For superblock version
 | 
						|
              3: This value contains flags to ensure file consistency for
 | 
						|
              file locking. Currently, the following bit flags are defined:
 | 
						|
              <ul>
 | 
						|
                <li>Bit 0 if set indicates that the file has been opened for
 | 
						|
                  write access.</li>
 | 
						|
                <li>Bit 1 is reserved for future use.</li>
 | 
						|
                <li>Bit 2 if set indicates that the file has been opened for
 | 
						|
                  single-writer/multiple-reader (SWMR) write access.</li>
 | 
						|
                <li>Bits 3-7 are reserved for future use.</li>
 | 
						|
              </ul>
 | 
						|
	        <p>
 | 
						|
              Bit 0 should be set as the first action when a file has been
 | 
						|
              opened for write access. Bit 2 should be set when a file
 | 
						|
              has been opened for SWMR write access. These two bits should
 | 
						|
              be cleared only as the final action when closing a file.
 | 
						|
            </p>
 | 
						|
            <p><em>This field is present in version 0+ of the superblock.</em>
 | 
						|
            </p>
 | 
						|
            <p><em>The size of this
 | 
						|
                field has been reduced from 4 bytes in superblock format
 | 
						|
                versions 0 and 1 to 1 byte.</em>
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td><p>Base Address</p></td>
 | 
						|
          <td>
 | 
						|
            <p>This field is the same as described for versions 0 and
 | 
						|
              1 of the superblock.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td><p>Superblock Extension Address</p></td>
 | 
						|
          <td>
 | 
						|
            <p>The field is the address of the object header for the
 | 
						|
              <a href="#SuperblockExt">superblock extension</a>.
 | 
						|
		      If there is no extension then this entry should be the
 | 
						|
		      <a href="#UndefinedAddress">undefined address</a>.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td><p>End of File Address</p></td>
 | 
						|
          <td>
 | 
						|
            <p>This field is the same as described for versions 0 and 1 of the
 | 
						|
              superblock.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td><p>Root Group Object Header Address</p></td>
 | 
						|
          <td>
 | 
						|
            <p>This is the address of
 | 
						|
		      the <a href="#DataObject">root group object header</a>,
 | 
						|
		      which serves as the entry point into the group graph for the file.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td><p>Superblock Checksum</p></td>
 | 
						|
          <td>
 | 
						|
            <p>The checksum for the superblock.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
      </table>
 | 
						|
    </div>
 | 
						|
 | 
						|
    <br />
 | 
						|
 | 
						|
    <h3><a name="DriverInfo">
 | 
						|
        II.B. Disk Format: Level 0B - File Driver Info</a></h3>
 | 
						|
 | 
						|
    <p>The <b>driver information block</b> is an optional region of the
 | 
						|
      file which contains information needed by the file driver
 | 
						|
      to reopen a file.  The format is described below:</p>
 | 
						|
 | 
						|
 | 
						|
    <div align="center">
 | 
						|
      <table class="format">
 | 
						|
        <caption>
 | 
						|
          Layout: Driver Information Block
 | 
						|
        </caption>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <th>byte</th>
 | 
						|
          <th>byte</th>
 | 
						|
          <th>byte</th>
 | 
						|
          <th>byte</th>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td>Version</td>
 | 
						|
          <td colspan="3">Reserved</td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td colspan="4">Driver Information Size</td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td colspan="4"><br />Driver Identification
 | 
						|
            <em>(8 bytes)</em><br /><br /></td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td colspan="4"><br /><br />Driver Information
 | 
						|
            <em>(variable size)</em><br /><br /><br /></td>
 | 
						|
        </tr>
 | 
						|
      </table>
 | 
						|
    </div>
 | 
						|
 | 
						|
    <br />
 | 
						|
    <div align="center">
 | 
						|
      <table class="desc">
 | 
						|
        <caption>
 | 
						|
          Fields: Driver Information Block
 | 
						|
        </caption>
 | 
						|
	    <tr>
 | 
						|
          <th width="30%">Field Name</th>
 | 
						|
          <th>Description</th>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td><p>Version</p></td>
 | 
						|
          <td>
 | 
						|
            <p>The version number of the Driver Information Block.
 | 
						|
	          This document describes version 0.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td><p>Driver Information Size</p></td>
 | 
						|
          <td>
 | 
						|
            <p>The size in bytes of the <em>Driver Information</em> field.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td><p>Driver Identification</p></td>
 | 
						|
          <td>
 | 
						|
            <p>This is an eight-byte ASCII string without null
 | 
						|
              termination which identifies the driver and/or version number
 | 
						|
              of the Driver Information Block. The predefined driver encoded
 | 
						|
              in this field by the HDF5 Library is identified by the
 | 
						|
              letters <code>NCSA</code> followed by the first four characters of
 | 
						|
              the driver name. If the Driver Information block is not
 | 
						|
              the original version then the last letter(s) of the
 | 
						|
              identification will be replaced by a version number in
 | 
						|
              ASCII, starting with 0.
 | 
						|
            </p>
 | 
						|
            <p>
 | 
						|
              Identification for user-defined drivers is also eight-byte long.
 | 
						|
	          It can be arbitrary but should be unique to avoid
 | 
						|
              the four character prefix “NCSA”.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr valign="top">
 | 
						|
          <td><p>Driver Information</p></td>
 | 
						|
          <td>Driver information is stored in a format defined by the
 | 
						|
            file driver (see description below).</td>
 | 
						|
        </tr>
 | 
						|
      </table>
 | 
						|
    </div>
 | 
						|
 | 
						|
    <br />
 | 
						|
    <p>The two drivers encoded in the <em>Driver Identification</em>
 | 
						|
      field are as follows:</p>
 | 
						|
    <ul>
 | 
						|
      <li>
 | 
						|
        Multi driver:
 | 
						|
        <p>
 | 
						|
          The identifier for this driver is “NCSAmulti”.
 | 
						|
          This driver provides a mechanism for segregating raw data and different types of metadata
 | 
						|
          into multiple files.
 | 
						|
          These files are viewed by the library as a single virtual HDF5 file with a single file address.
 | 
						|
          A maximum of 6 files will be created for the following data:
 | 
						|
          superblock, B-tree, raw data, global heap, local heap, and object header.
 | 
						|
          More than one type of data can be written to the same file.
 | 
						|
      </p></li>
 | 
						|
      <li>
 | 
						|
        Family driver
 | 
						|
        <p>
 | 
						|
          The identifier for this driver is “NCSAfami” and is encoded in this field for library version 1.8 and after.
 | 
						|
          This driver is designed for systems that do not support files larger than 2 gigabytes
 | 
						|
          by splitting the HDF5 file address space across several smaller files.
 | 
						|
          It does nothing to segregate metadata and raw data;
 | 
						|
          they are mixed in the address space just as they would be in a single contiguous file.
 | 
						|
      </p></li>
 | 
						|
    </ul>
 | 
						|
    <p>The format of the <em>Driver Information</em> field for the
 | 
						|
      above two drivers are described below:</p>
 | 
						|
 | 
						|
    <div align="center">
 | 
						|
      <table class="format">
 | 
						|
        <caption>
 | 
						|
          Layout: Multi Driver Information
 | 
						|
        </caption>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <th width="25%">byte</th>
 | 
						|
	      <th width="25%">byte</th>
 | 
						|
	      <th width="25%">byte</th>
 | 
						|
	      <th width="25%">byte</th>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td>Member Mapping</td>
 | 
						|
	      <td>Member Mapping</td>
 | 
						|
	      <td>Member Mapping</td>
 | 
						|
	      <td>Member Mapping</td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td>Member Mapping</td>
 | 
						|
	      <td>Member Mapping</td>
 | 
						|
	      <td>Reserved</td>
 | 
						|
	      <td>Reserved</td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />Address of Member File 1<br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />End of Address for Member File 1<br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />Address of Member File 2<br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />End of Address for Member File 2<br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />... ...<br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />Address of Member File N<br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />End of Address for Member File N<br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />Name of Member File 1
 | 
						|
            <em>(variable size)</em><br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />Name of Member File 2
 | 
						|
            <em>(variable size)</em><br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />... ...<br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />Name of Member File N
 | 
						|
            <em>(variable size)</em><br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
      </table>
 | 
						|
    </div>
 | 
						|
 | 
						|
    <br />
 | 
						|
    <div align="center">
 | 
						|
      <table class="desc">
 | 
						|
        <caption>
 | 
						|
          Fields: Multi Driver Information
 | 
						|
        </caption>
 | 
						|
	    <tr>
 | 
						|
	      <th width="30%">Field Name</th>
 | 
						|
	      <th>Description</th>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Member Mapping</p></td>
 | 
						|
	      <td><p>These fields are integer values from 1 to 6
 | 
						|
              indicating how the data can be mapped to or merged with another type of
 | 
						|
              data.
 | 
						|
	          <table class="list">
 | 
						|
                <tr>
 | 
						|
                  <th width="20%" align="center">Member Mapping</th>
 | 
						|
                  <th width="80%" align="left">Description</th>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center">1</td>
 | 
						|
                  <td>The superblock data.</td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center">2</td>
 | 
						|
                  <td>The B-tree data.</td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center">3</td>
 | 
						|
                  <td>The raw data.</td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center">4</td>
 | 
						|
                  <td>The global heap data.</td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center">5</td>
 | 
						|
                  <td>The local heap data.</td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center">6</td>
 | 
						|
                  <td>The object header data.</td>
 | 
						|
                </tr>
 | 
						|
            </table></p>
 | 
						|
            <p>For example, if the third field has the value 3 and all the rest have the
 | 
						|
              value 1, it means there are two files: one for raw data, and one for superblock,
 | 
						|
              B-tree, global heap, local heap, and object header.</p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Reserved</p></td>
 | 
						|
	      <td><p>These fields are reserved and should always be zero.</p></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Address of Member File N</p></td>
 | 
						|
	      <td><p>This field Specifies the virtual address at which the member file starts.</p>
 | 
						|
	        <p>N is the number of member files.</p>
 | 
						|
	      </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>End of Address for Member File N</p></td>
 | 
						|
	      <td><p>This field is the end of the allocated address for the member file.
 | 
						|
          </p></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Name of Member File N</p></td>
 | 
						|
	      <td><p>This field is the null-terminated name of the member file and
 | 
						|
		      its length should be multiples of 8 bytes.
 | 
						|
		      Additional bytes will be padded with <em>NULL</em>s. The default naming
 | 
						|
		      convention is <em>%s-X.h5</em>, where <em>X</em> is one of the letters
 | 
						|
              <em>s</em> (for superblock), <em>b</em> (for B-tree), <em>r</em> (for raw data),
 | 
						|
              <em>g</em> (for global heap), <em>l</em> (for local heap), and <em>o</em> (for
 | 
						|
              object header). The name of the whole HDF5 file will substitute the <em>%s</em>
 | 
						|
              in the string.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
      </table>
 | 
						|
    </div>
 | 
						|
 | 
						|
    <br />
 | 
						|
    <br />
 | 
						|
    <br />
 | 
						|
    <div align="center">
 | 
						|
      <table class="format">
 | 
						|
        <caption>
 | 
						|
          Layout: Family Driver Information
 | 
						|
        </caption>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <th width="25%">byte</th>
 | 
						|
	      <th width="25%">byte</th>
 | 
						|
	      <th width="25%">byte</th>
 | 
						|
	      <th width="25%">byte</th>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="8"><br />Size of Member File<br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
      </table>
 | 
						|
    </div>
 | 
						|
 | 
						|
    <br />
 | 
						|
    <div align="center">
 | 
						|
      <table class="desc">
 | 
						|
        <caption>
 | 
						|
          Fields: Family Driver Information
 | 
						|
        </caption>
 | 
						|
	    <tr>
 | 
						|
	      <th width="30%">Field Name</th>
 | 
						|
	      <th>Description</th>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Size of Member File</p></td>
 | 
						|
	      <td><p>This field is the size of the member file in the family of files.</p></td>
 | 
						|
	    </tr>
 | 
						|
      </table>
 | 
						|
    </div>
 | 
						|
 | 
						|
    <h3><a name="SuperblockExt">
 | 
						|
        II.C. Disk Format: Level 0C - Superblock Extension</a></h3>
 | 
						|
 | 
						|
    <p>The <em>superblock extension</em> is used to store superblock metadata
 | 
						|
      which is either optional, or added after the version of the superblock
 | 
						|
      was defined. Superblock extensions may only exist when version 2
 | 
						|
      or later of the superblock is used. A superblock extension is an object
 | 
						|
      header which may hold the following messages:</p>
 | 
						|
	<ul>
 | 
						|
	  <li>
 | 
						|
	    <a href="#SOHMTableMessage">Shared Message Table message</a> containing
 | 
						|
        information to locate the master table of shared object header message
 | 
						|
        indices.</li>
 | 
						|
	  <li>
 | 
						|
	    <a href="#BtreeKValuesMessage">B-tree ‘K’ Values message</a> containing
 | 
						|
        non-default B-tree ‘K’ values.</li>
 | 
						|
	  <li>
 | 
						|
	    <a href="#DrvInfoMessage">Driver Info message</a> containing information
 | 
						|
        needed by the file driver in order to reopen a file.
 | 
						|
        See also the
 | 
						|
        <a href="#DriverInfo">“Disk Format: Level 0B - File Driver
 | 
						|
          Info”</a> section above.</li>
 | 
						|
	  <li>
 | 
						|
	    <a href="#FsinfoMessage">File Space Info message</a> containing
 | 
						|
	    information about file space handling in the file.</li>
 | 
						|
	</ul>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    <h2><a name="FileInfra">
 | 
						|
        III. Disk Format: Level 1 - File Infrastructure</a></h2>
 | 
						|
 | 
						|
    <h3><a name="Btrees">
 | 
						|
        III.A. Disk Format: Level 1A - B-trees and B-tree Nodes</a></h3>
 | 
						|
 | 
						|
    <p>B-trees allow flexible storage for objects which tend to grow
 | 
						|
      in ways that cause the object to be stored discontiguously.  B-trees
 | 
						|
      are described in various algorithms books including “Introduction to
 | 
						|
      Algorithms” by Thomas H. Cormen, Charles E. Leiserson, and Ronald
 | 
						|
      L. Rivest.  B-trees are used in several places in the HDF5 file format,
 | 
						|
      when an index is needed for another data structure.</p>
 | 
						|
 | 
						|
    <p>The version 1 B-tree structure described below is the original
 | 
						|
      index structure. The version 1 B-trees are being phased out in
 | 
						|
      favor of the version 2 B-trees described below. Note that both
 | 
						|
      types of structures may be found in the same file depending on
 | 
						|
      the application settings when creating the file.</p>
 | 
						|
 | 
						|
    <h4><a name="V1Btrees">
 | 
						|
        III.A.1. Disk Format: Level 1A1 - Version 1 B-trees</a></h4>
 | 
						|
 | 
						|
    <p>Version 1 B-trees in HDF5 files are an implementation of the
 | 
						|
      B-link tree. The sibling nodes at a particular level in
 | 
						|
      the tree are stored in a doubly-linked list. See the
 | 
						|
      “Efficient Locking for Concurrent Operations on B-trees”
 | 
						|
      paper by Phillip Lehman and S. Bing Yao as published in the
 | 
						|
      <cite>ACM Transactions on Database Systems</cite>, Vol. 6, No. 4,
 | 
						|
      December 1981.</p>
 | 
						|
 | 
						|
    <p>The B-trees implemented by the file format contain one more
 | 
						|
      key than the number of children. In other words, each child
 | 
						|
      pointer out of a B-tree node has a left key and a right key.
 | 
						|
      The pointers out of internal nodes point to sub-trees while
 | 
						|
      the pointers out of leaf nodes point to symbol nodes and
 | 
						|
      raw data chunks.
 | 
						|
      Aside from that difference, internal nodes and leaf nodes
 | 
						|
      are identical.</p>
 | 
						|
 | 
						|
    <div align="center">
 | 
						|
      <table class="format">
 | 
						|
        <caption>
 | 
						|
          Layout: B-tree Nodes
 | 
						|
        </caption>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <th>byte</th>
 | 
						|
          <th>byte</th>
 | 
						|
          <th>byte</th>
 | 
						|
          <th>byte</th>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td colspan="4">Signature</td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td>Node Type</td>
 | 
						|
          <td>Node Level</td>
 | 
						|
          <td colspan="2">Entries Used</td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td colspan="4"><br />Address of Left Sibling<sup>O</sup><br /><br /></td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td colspan="4"><br />Address of Right Sibling<sup>O</sup><br /><br /></td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td colspan="4">Key 1 <em>(variable size)</em></td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td colspan="4"><br />Address of Child 1<sup>O</sup><br /><br /></td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td colspan="4">Key 2 <em>(variable size)</em></td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td colspan="4"><br />Address of Child 2<sup>O</sup><br /><br /></td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td colspan="4">...</td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td colspan="4">Key 2<em>K</em> <em>(variable size)</em></td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td colspan="4"><br />Address of Child 2<em>K</em><sup>O</sup><br /><br /></td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td colspan="4">Key 2<em>K</em>+1
 | 
						|
            <em>(variable size)</em></td>
 | 
						|
        </tr>
 | 
						|
      </table>
 | 
						|
 | 
						|
      <table class="note">
 | 
						|
        <tr>
 | 
						|
          <td width="60%"> </td>
 | 
						|
          <td width="40%">
 | 
						|
            (Items marked with an ‘O’ in the above table are
 | 
						|
            of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
              of Offsets</a> field in the superblock.)
 | 
						|
        </td></tr>
 | 
						|
      </table>
 | 
						|
 | 
						|
    </div>
 | 
						|
 | 
						|
    <br />
 | 
						|
    <div align="center">
 | 
						|
      <table class="desc">
 | 
						|
        <caption>
 | 
						|
          Fields: B-tree Nodes
 | 
						|
        </caption>
 | 
						|
	    <tr>
 | 
						|
          <th width="30%">Field Name</th>
 | 
						|
          <th>Description</th>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td><p>Signature</p></td>
 | 
						|
          <td>
 | 
						|
            <p>The ASCII character string “<code>TREE</code>”
 | 
						|
              is used to indicate the beginning of a B-tree node. This
 | 
						|
              gives file consistency checking utilities a better chance
 | 
						|
              of reconstructing a damaged file.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td><p>Node Type</p></td>
 | 
						|
          <td>
 | 
						|
            <p>Each B-tree points to a particular type of data.
 | 
						|
              This field indicates the type of data as well as
 | 
						|
              implying the maximum degree <em>K</em> of the tree and
 | 
						|
              the size of each Key field.
 | 
						|
 | 
						|
 | 
						|
              <table class="list">
 | 
						|
                <tr>
 | 
						|
                  <th width="20%" align="center">Node Type</th>
 | 
						|
                  <th width="80%" align="left">Description</th>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center">0</td>
 | 
						|
                  <td>This tree points to group nodes.</td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center">1</td>
 | 
						|
                  <td>This tree points to raw data chunk nodes.</td>
 | 
						|
                </tr>
 | 
						|
            </table></p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td><p>Node Level</p></td>
 | 
						|
          <td>
 | 
						|
            <p>The node level indicates the level at which this node
 | 
						|
              appears in the tree (leaf nodes are at level zero).  Not
 | 
						|
              only does the level indicate whether child pointers
 | 
						|
              point to sub-trees or to data, but it can also be used
 | 
						|
              to help file consistency checking utilities reconstruct
 | 
						|
              damaged trees.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr valign="top">
 | 
						|
          <td><p>Entries Used</p></td>
 | 
						|
          <td>
 | 
						|
            <p>This determines the number of children to which this
 | 
						|
              node points.  All nodes of a particular type of tree
 | 
						|
              have the same maximum degree, but most nodes will point
 | 
						|
              to less than that number of children.  The valid child
 | 
						|
              pointers and keys appear at the beginning of the node
 | 
						|
              and the unused pointers and keys appear at the end of
 | 
						|
              the node.  The unused pointers and keys have undefined
 | 
						|
              values.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr valign="top">
 | 
						|
          <td><p>Address of Left Sibling</p></td>
 | 
						|
          <td>
 | 
						|
            <p>This is the relative file address of the left sibling of
 | 
						|
              the current node.  If the current
 | 
						|
              node is the left-most node at this level then this field
 | 
						|
              is the <a href="#UndefinedAddress">undefined address</a>.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr valign="top">
 | 
						|
          <td><p>Address of Right Sibling</p></td>
 | 
						|
          <td>
 | 
						|
            <p>This is the relative file address of the right sibling of
 | 
						|
              the current node.  If the current
 | 
						|
              node is the right-most node at this level then this
 | 
						|
              field is the <a href="#UndefinedAddress">undefined address</a>.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr valign="top">
 | 
						|
          <td><p>Keys and Child Pointers</p></td>
 | 
						|
          <td>
 | 
						|
            <p>Each tree has 2<em>K</em>+1 keys with 2<em>K</em>
 | 
						|
              child pointers interleaved between the keys. The number
 | 
						|
              of keys and child pointers actually containing valid
 | 
						|
              values is determined by the node’s <em>Entries
 | 
						|
                Used</em> field. If that field is <em>N</em>, then the
 | 
						|
              B-tree contains <em>N</em> child pointers and
 | 
						|
              <em>N</em>+1 keys.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr valign="top">
 | 
						|
          <td><p>Key</p></td>
 | 
						|
          <td>
 | 
						|
            <p>The format and size of the key values is determined by
 | 
						|
              the type of data to which this tree points.  The keys are
 | 
						|
              ordered and are boundaries for the contents of the child
 | 
						|
              pointer; that is, the key values represented by child
 | 
						|
              <em>N</em> fall between Key <em>N</em> and Key
 | 
						|
              <em>N</em>+1. Whether the interval is open or closed on
 | 
						|
              each end is determined by the type of data to which the
 | 
						|
              tree points.
 | 
						|
            </p>
 | 
						|
 | 
						|
            <p>
 | 
						|
              The format of the key depends on the node type.
 | 
						|
              For nodes of node type 0 (group nodes), the key is formatted as
 | 
						|
              follows:
 | 
						|
 | 
						|
              <table class="list">
 | 
						|
                <tr>
 | 
						|
                  <td width="20%">A single field of
 | 
						|
                    <i><a href="#SizeOfLengthsV0">Size of Lengths</a></i>
 | 
						|
                    bytes:</td>
 | 
						|
                  <td width="80%">Indicates the byte offset into the local heap
 | 
						|
                    for the first object name in the subtree which
 | 
						|
                    that key describes.
 | 
						|
                  </td>
 | 
						|
                </tr>
 | 
						|
              </table>
 | 
						|
            </p>
 | 
						|
 | 
						|
 | 
						|
            <p>
 | 
						|
              For nodes of node type 1 (chunked raw data nodes), the key is
 | 
						|
              formatted as follows:
 | 
						|
 | 
						|
              <table class="list">
 | 
						|
                <tr>
 | 
						|
                  <td width="20%">Bytes 1-4:</td>
 | 
						|
                  <td width="80%">Size of chunk in bytes.</td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td>Bytes 4-8:</td>
 | 
						|
                  <td>Filter mask, a 32-bit bit field indicating which
 | 
						|
                    filters have been skipped for this chunk.  Each filter
 | 
						|
                    has an index number in the pipeline (starting at 0, with
 | 
						|
                    the first filter to apply) and if that filter is skipped,
 | 
						|
                    the bit corresponding to its index is set.</td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td>(<em>D + 1</em>) 64-bit fields:</td>
 | 
						|
                  <td>The offset of the
 | 
						|
                    chunk within the dataset where <i>D</i> is the number
 | 
						|
                    of dimensions of the dataset, and the last value is the
 | 
						|
                    offset within the dataset’s datatype and should
 | 
						|
                    always be zero. For example, if
 | 
						|
                    a chunk in a 3-dimensional dataset begins at the
 | 
						|
                    position <code>[5,5,5]</code>, there will be three
 | 
						|
                    such 64-bit values, each with the value of
 | 
						|
                    <code>5</code>, followed by a <code>0</code> value.</td>
 | 
						|
                </tr>
 | 
						|
              </table>
 | 
						|
            </p>
 | 
						|
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr valign="top">
 | 
						|
          <td><p>Child Pointer</p></td>
 | 
						|
          <td>
 | 
						|
            <p>The tree node contains file addresses of subtrees or
 | 
						|
              data depending on the node level.  Nodes at Level 0 point
 | 
						|
              to data addresses, either raw data chunks or group nodes.
 | 
						|
              Nodes at non-zero levels point to other nodes of the
 | 
						|
              same B-tree.
 | 
						|
            </p>
 | 
						|
            <p>For raw data chunk nodes, the child pointer is the address
 | 
						|
              of a single raw data chunk.  For group nodes, the child pointer
 | 
						|
              points to a <a href="#SymbolTable">symbol table</a>, which contains
 | 
						|
              information for multiple symbol table entries.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
      </table>
 | 
						|
    </div>
 | 
						|
 | 
						|
    <p>
 | 
						|
      Conceptually, each B-tree node looks like this:</p>
 | 
						|
    <center>
 | 
						|
      <table>
 | 
						|
        <tr valign="top" align="center">
 | 
						|
          <td>key[0]</td><td> </td>
 | 
						|
          <td>child[0]</td><td> </td>
 | 
						|
          <td>key[1]</td><td> </td>
 | 
						|
          <td>child[1]</td><td> </td>
 | 
						|
          <td>key[2]</td><td> </td>
 | 
						|
          <td>...</td><td> </td>
 | 
						|
          <td>...</td><td> </td>
 | 
						|
          <td>key[<i>N</i>-1]</td><td> </td>
 | 
						|
          <td>child[<i>N</i>-1]</td><td> </td>
 | 
						|
          <td>key[<i>N</i>]</td>
 | 
						|
        </tr>
 | 
						|
      </table>
 | 
						|
    </center>
 | 
						|
    <br />
 | 
						|
 | 
						|
    where child[<i>i</i>] is a pointer to a sub-tree (at a level
 | 
						|
    above Level 0) or to data (at Level 0).
 | 
						|
    Each key[<i>i</i>] describes an <i>item</i> stored by the B-tree
 | 
						|
    (a chunk or an object of a group node).  The range of values
 | 
						|
    represented by child[<i>i</i>] is indicated by key[<i>i</i>]
 | 
						|
    and key[<i>i</i>+1].
 | 
						|
 | 
						|
 | 
						|
    <p>The following question must next be answered:
 | 
						|
      “Is the value described by key[<i>i</i>] contained in
 | 
						|
      child[<i>i</i>-1] or in child[<i>i</i>]?”
 | 
						|
      The answer depends on the type of tree.
 | 
						|
      In trees for groups (node type 0), the object described by
 | 
						|
      key[<i>i</i>] is the greatest object contained in
 | 
						|
      child[<i>i</i>-1] while in chunk trees (node type 1) the
 | 
						|
      chunk described by key[<i>i</i>] is the least chunk in
 | 
						|
      child[<i>i</i>].</p>
 | 
						|
 | 
						|
    <p>That means that key[0] for group trees is sometimes unused;
 | 
						|
      it points to offset zero in the heap, which is always the
 | 
						|
      empty string and compares as “less-than” any valid
 | 
						|
      object name.</p>
 | 
						|
 | 
						|
    <p>And key[<i>N</i>] for chunk trees is sometimes unused;
 | 
						|
      it contains a chunk offset which compares as “greater-than”
 | 
						|
      any other chunk offset and has a chunk byte size of zero
 | 
						|
      to indicate that it is not actually allocated.</p>
 | 
						|
 | 
						|
    <h4><a name="V2Btrees">
 | 
						|
        III.A.2. Disk Format: Level 1A2 - Version 2 B-trees</a></h4>
 | 
						|
 | 
						|
    <p>Version 2 (v2) B-trees are “traditional” B-trees
 | 
						|
      with one major difference. Instead of just using a simple pointer
 | 
						|
      (or address in the file) to a child of an internal node, the pointer
 | 
						|
      to the child node contains two additional pieces of information:
 | 
						|
      the number of records in the child node itself, and the total number
 | 
						|
      of records in the child node and all its descendants. Storing this
 | 
						|
      additional information allows fast array-like indexing to locate
 | 
						|
      the n<sup>th</sup> record in the B-tree.</p>
 | 
						|
 | 
						|
    <p>The entry into a version 2 B-tree is a header which contains global
 | 
						|
      information about the structure of the B-tree.  The <em>root node
 | 
						|
        address</em>
 | 
						|
      field in the header points to the B-tree root node, which is either an
 | 
						|
      internal or leaf node, depending on the value in the header’s
 | 
						|
      <em>depth</em> field.  An internal node consists of records plus
 | 
						|
      pointers to further leaf or internal nodes in the tree.  A leaf node
 | 
						|
      consists of solely of records.  The format of the records depends on
 | 
						|
      the B-tree type (stored in the header).</p>
 | 
						|
 | 
						|
    <div align="center">
 | 
						|
      <table class="format">
 | 
						|
        <caption>
 | 
						|
          Layout: Version 2 B-tree Header
 | 
						|
        </caption>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <th>byte</th>
 | 
						|
          <th>byte</th>
 | 
						|
          <th>byte</th>
 | 
						|
          <th>byte</th>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td colspan="4">Signature</td>
 | 
						|
        </tr>
 | 
						|
        <tr>
 | 
						|
          <td>Version</td>
 | 
						|
          <td>Type</td>
 | 
						|
          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	    </tr>
 | 
						|
	    <tr>
 | 
						|
          <td colspan="4">Node Size</td>
 | 
						|
	    </tr>
 | 
						|
	    <tr>
 | 
						|
          <td colspan="2">Record Size</td>
 | 
						|
          <td colspan="2">Depth</td>
 | 
						|
	    </tr>
 | 
						|
	    <tr>
 | 
						|
          <td>Split Percent</td>
 | 
						|
          <td>Merge Percent</td>
 | 
						|
          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	    </tr>
 | 
						|
	    <tr>
 | 
						|
          <td colspan="4"><br />Root Node Address<sup>O</sup><br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
	    <tr>
 | 
						|
          <td colspan="2">Number of Records in Root Node</td>
 | 
						|
          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	    </tr>
 | 
						|
	    <tr>
 | 
						|
          <td colspan="4"><br />Total Number of Records in B-tree<sup>L</sup><br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
	    <tr>
 | 
						|
          <td colspan="4">Checksum</td>
 | 
						|
	    </tr>
 | 
						|
      </table>
 | 
						|
 | 
						|
      <table class="note">
 | 
						|
        <tr>
 | 
						|
          <td width="60%"> </td>
 | 
						|
          <td width="40%">
 | 
						|
            (Items marked with an ‘O’ in the above table are
 | 
						|
            of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
              of Offsets</a> field in the superblock.)
 | 
						|
        </td></tr>
 | 
						|
        <tr>
 | 
						|
          <td> </td>
 | 
						|
          <td>
 | 
						|
            (Items marked with an ‘L’ in the above table are
 | 
						|
            of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
              of Lengths</a> field in the superblock.)
 | 
						|
        </td></tr>
 | 
						|
      </table>
 | 
						|
 | 
						|
    </div>
 | 
						|
 | 
						|
    <br />
 | 
						|
    <div align="center">
 | 
						|
      <table class="desc">
 | 
						|
        <caption>
 | 
						|
          Fields: Version 2 B-tree Header
 | 
						|
        </caption>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <th width="30%">Field Name</th>
 | 
						|
          <th>Description</th>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td><p>Signature</p></td>
 | 
						|
          <td>
 | 
						|
            <p>The ASCII character string “<code>BTHD</code>”
 | 
						|
              is used to indicate the header of a version 2 (v2) B-tree
 | 
						|
              node.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td><p>Version</p></td>
 | 
						|
          <td>
 | 
						|
            <p>The version number for this B-tree header.  This document
 | 
						|
              describes version 0.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td><p>Type</p></td>
 | 
						|
          <td>
 | 
						|
            <p>This field indicates the type of B-tree:
 | 
						|
              <table class="list">
 | 
						|
                <tr>
 | 
						|
                  <th width="20%" align="center">Value</th>
 | 
						|
                  <th width="80%" align="left">Description</th>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center">0</td>
 | 
						|
                  <td>This B-tree is used for testing only. This
 | 
						|
                    value should <em>not</em> be used for storing
 | 
						|
                    records in actual HDF5 files.
 | 
						|
                  </td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center">1</td>
 | 
						|
                  <td>This B-tree is used for indexing indirectly accessed,
 | 
						|
                    non-filtered ‘huge’ fractal heap objects.
 | 
						|
                  </td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center">2</td>
 | 
						|
                  <td>This B-tree is used for indexing indirectly accessed,
 | 
						|
                    filtered ‘huge’ fractal heap objects.
 | 
						|
                  </td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center">3</td>
 | 
						|
                  <td>This B-tree is used for indexing directly accessed,
 | 
						|
                    non-filtered ‘huge’ fractal heap objects.
 | 
						|
                  </td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center">4</td>
 | 
						|
                  <td>This B-tree is used for indexing directly accessed,
 | 
						|
                    filtered ‘huge’ fractal heap objects.
 | 
						|
                  </td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center">5</td>
 | 
						|
                  <td>This B-tree is used for indexing the ‘name’ field for
 | 
						|
                    links in indexed groups.
 | 
						|
                  </td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center">6</td>
 | 
						|
                  <td>This B-tree is used for indexing the ‘creation order’
 | 
						|
                    field for links in indexed groups.
 | 
						|
                  </td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center">7</td>
 | 
						|
                  <td>This B-tree is used for indexing shared object header
 | 
						|
                    messages.
 | 
						|
                  </td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center">8</td>
 | 
						|
                  <td>This B-tree is used for indexing the ‘name’ field for
 | 
						|
                    indexed attributes.
 | 
						|
                  </td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center">9</td>
 | 
						|
                  <td>This B-tree is used for indexing the ‘creation order’
 | 
						|
                    field for indexed attributes.
 | 
						|
                  </td>
 | 
						|
                </tr>
 | 
						|
 | 
						|
                <tr>
 | 
						|
                  <td align="center">10</td>
 | 
						|
                  <td>This B-tree is used for indexing chunks of
 | 
						|
                    datasets with no filters and with more than one
 | 
						|
                    dimension of unlimited extent.
 | 
						|
                  </td>
 | 
						|
                </tr>
 | 
						|
 | 
						|
                <tr>
 | 
						|
                  <td align="center">11</td>
 | 
						|
                  <td>This B-tree is used for indexing chunks of
 | 
						|
                    datasets with filters and more than one dimension
 | 
						|
                    of unlimited extent.
 | 
						|
                  </td>
 | 
						|
                </tr>
 | 
						|
            </table></p>
 | 
						|
            <p>The format of records for each type is described below.</p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr valign="top">
 | 
						|
          <td><p>Node Size</p></td>
 | 
						|
          <td>
 | 
						|
            <p>This is the size in bytes of all B-tree nodes.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr valign="top">
 | 
						|
          <td><p>Record Size</p></td>
 | 
						|
          <td>
 | 
						|
            <p>This field is the size in bytes of the B-tree record.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr valign="top">
 | 
						|
          <td><p>Depth</p></td>
 | 
						|
          <td>
 | 
						|
            <p>This is the depth of the B-tree.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr valign="top">
 | 
						|
          <td><p>Split Percent</p></td>
 | 
						|
          <td>
 | 
						|
            <p>The percent full that a node needs to increase above before it
 | 
						|
              is split.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr valign="top">
 | 
						|
          <td><p>Merge Percent</p></td>
 | 
						|
          <td>
 | 
						|
            <p>The percent full that a node needs to be decrease below before it
 | 
						|
              is split.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr valign="top">
 | 
						|
          <td><p>Root Node Address</p></td>
 | 
						|
          <td>
 | 
						|
            <p>This is the address of the root B-tree node.  A B-tree with
 | 
						|
              no records will have the <a href="#UndefinedAddress">undefined
 | 
						|
                address</a> in this field.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr valign="top">
 | 
						|
          <td><p>Number of Records in Root Node</p></td>
 | 
						|
          <td>
 | 
						|
            <p>This is the number of records in the root node.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr valign="top">
 | 
						|
          <td><p>Total Number of Records in B-tree</p></td>
 | 
						|
          <td>
 | 
						|
            <p>This is the total number of records in the entire B-tree.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr valign="top">
 | 
						|
          <td><p>Checksum</p></td>
 | 
						|
          <td>
 | 
						|
            <p>This is the checksum for the B-tree header.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
        </tr>
 | 
						|
      </table>
 | 
						|
    </div>
 | 
						|
 | 
						|
    <br />
 | 
						|
    <br />
 | 
						|
    <br />
 | 
						|
    <div align="center">
 | 
						|
      <table class="format">
 | 
						|
        <caption>
 | 
						|
          Layout: Version 2 B-tree Internal Node
 | 
						|
        </caption>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <th>byte</th>
 | 
						|
          <th>byte</th>
 | 
						|
          <th>byte</th>
 | 
						|
          <th>byte</th>
 | 
						|
        </tr>
 | 
						|
 | 
						|
        <tr>
 | 
						|
          <td colspan="4">Signature</td>
 | 
						|
        </tr>
 | 
						|
        <tr>
 | 
						|
          <td>Version</td>
 | 
						|
          <td>Type</td>
 | 
						|
          <td colspan="2">Records 0, 1, 2...N-1 <em>(variable size)</em></td>
 | 
						|
        </tr>
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />Child Node Pointer 0<sup>O</sup><br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
        <tr>
 | 
						|
	      <td colspan="4"><br />Number of Records N<sub>0</sub> for Child
 | 
						|
            Node 0 <em>(variable size)</em></td>
 | 
						|
	    </tr>
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />Total Number of Records for Child Node 0
 | 
						|
            <em>(optional, variable size)</em></td>
 | 
						|
	    </tr>
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />Child Node Pointer 1<sup>O</sup><br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
	    <td colspan="4"><br />Number of Records N<sub>1</sub> for
 | 
						|
          Child Node 1 <em>(variable size)</em></td>
 | 
						|
</tr>
 | 
						|
<tr>
 | 
						|
  <td colspan="4"><br />Total Number of Records for Child Node 1
 | 
						|
    <em>(optional, variable size)</em></td>
 | 
						|
</tr>
 | 
						|
<tr>
 | 
						|
  <td colspan="4">...</td>
 | 
						|
</tr>
 | 
						|
<tr>
 | 
						|
  <td colspan="4"><br />Child Node Pointer N<sup>O</sup><br /><br /></td>
 | 
						|
</tr>
 | 
						|
<tr>
 | 
						|
  <td colspan="4"><br />Number of Records N<sub>n</sub> for
 | 
						|
    Child Node N <em>(variable size)</em></td>
 | 
						|
</tr>
 | 
						|
<tr>
 | 
						|
  <td colspan="4"><br />Total Number of Records for Child Node N
 | 
						|
    <em>(optional, variable size)</em></td>
 | 
						|
</tr>
 | 
						|
<tr>
 | 
						|
  <td colspan="4">Checksum</td>
 | 
						|
</tr>
 | 
						|
</table>
 | 
						|
 | 
						|
<table class="note">
 | 
						|
  <tr>
 | 
						|
    <td width="60%"> </td>
 | 
						|
    <td width="40%">
 | 
						|
      (Items marked with an ‘O’ in the above table are
 | 
						|
      of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
        of Offsets</a> field in the superblock.)
 | 
						|
  </td></tr>
 | 
						|
</table>
 | 
						|
</div>
 | 
						|
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Version 2 B-tree Internal Node
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Signature</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ASCII character string “<code>BTIN</code>” is
 | 
						|
          used to indicate the internal node of a B-tree.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The version number for this B-tree internal node.
 | 
						|
	      This document describes version 0.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Type</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This field is the type of the B-tree node.  It should always
 | 
						|
          be the same as the B-tree type in the header.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Records</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The size of this field is determined by the number of records
 | 
						|
	      for this node and the record size (from the header).  The format
 | 
						|
          of records depends on the type of B-tree.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Child Node Pointer</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This field is the address of the child node pointed to by the
 | 
						|
          internal node.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Number of Records in Child Node</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the number of records in the child node pointed to by
 | 
						|
          the corresponding <em>Node Pointer</em>.
 | 
						|
        </p>
 | 
						|
        <p>The number of bytes used to store this field is determined by
 | 
						|
          the maximum possible number of records able to be stored in the
 | 
						|
          child node.
 | 
						|
        </p>
 | 
						|
        <p>
 | 
						|
          The maximum number of records in a child node is computed
 | 
						|
          in the following way:
 | 
						|
 | 
						|
          <ul>
 | 
						|
            <li>Subtract the fixed size overhead for
 | 
						|
              the child node (for example, its signature, version,
 | 
						|
              checksum, and so on and <em>one</em> pointer triplet
 | 
						|
              of information for the child node (because there is one
 | 
						|
              more pointer triplet than records in each internal node))
 | 
						|
              from the size of nodes for the B-tree. </li>
 | 
						|
            <li>Divide that result by the size of a record plus the
 | 
						|
              pointer triplet of information stored to reach each
 | 
						|
              child node from this node.</li>
 | 
						|
          </ul>
 | 
						|
 | 
						|
        </p>
 | 
						|
        <p>
 | 
						|
          Note that leaf nodes do not encode any
 | 
						|
          child pointer triplets, so the maximum number of records in a
 | 
						|
          leaf node is just the node size minus the leaf node overhead,
 | 
						|
          divided by the record size.
 | 
						|
        </p>
 | 
						|
        <p>
 | 
						|
          Also note that the first level of internal nodes above the
 | 
						|
          leaf nodes do not encode the <em>Total Number of Records in Child
 | 
						|
            Node</em> value in the child pointer triplets (since it is the
 | 
						|
          same as the <em>Number of Records in Child Node</em>), so the
 | 
						|
          maximum number of records in these nodes is computed with the
 | 
						|
          equation above, but using (<em>Child Pointer</em>, <em>Number of
 | 
						|
            Records in Child Node</em>) pairs instead of triplets.
 | 
						|
        </p>
 | 
						|
        <p>
 | 
						|
          The number of
 | 
						|
          bytes used to encode this field is the least number of bytes
 | 
						|
          required to encode the maximum number of records in a child
 | 
						|
          node value for the child nodes below this level
 | 
						|
          in the B-tree.
 | 
						|
        </p>
 | 
						|
        <p>
 | 
						|
          For example, if the maximum number of child records is
 | 
						|
          123, one byte will be used to encode these values in this
 | 
						|
          node; if the maximum number of child records is
 | 
						|
          20000, two bytes will be used to encode these values in this
 | 
						|
          node; and so on. The maximum number of bytes used to
 | 
						|
          encode these values is 8 (in other words, an unsigned
 | 
						|
          64-bit integer).
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Total Number of Records in Child Node</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the total number of records for the node pointed to by
 | 
						|
          the corresponding <em>Node Pointer</em> and all its children.
 | 
						|
          This field exists only in nodes whose depth in the B-tree node
 | 
						|
          is greater than 1 (in other words, the “twig”
 | 
						|
          internal nodes, just above leaf nodes, do not store this
 | 
						|
          field in their child node pointers).
 | 
						|
        </p>
 | 
						|
        <p>The number of bytes used to store this field is determined by
 | 
						|
          the maximum possible number of records able to be stored in the
 | 
						|
          child node and its descendants.
 | 
						|
        </p>
 | 
						|
        <p>
 | 
						|
          The maximum possible number of records able to be stored in a
 | 
						|
          child node and its descendants is computed iteratively, in the
 | 
						|
          following way:  The maximum number of records in a leaf node
 | 
						|
          is computed, then that value is used to compute the maximum
 | 
						|
          possible number of records in the first level of internal nodes
 | 
						|
          above the leaf nodes.  Multiplying these two values together
 | 
						|
          determines the maximum possible number of records in child node
 | 
						|
          pointers for the level of nodes two levels above leaf nodes.
 | 
						|
          This process is continued up to any level in the B-tree.
 | 
						|
        </p>
 | 
						|
        <p>
 | 
						|
          The number of bytes used to encode this value is computed in
 | 
						|
          the same way as for the <em>Number of Records in Child Node</em>
 | 
						|
          field.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Checksum</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the checksum for this node.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Version 2 B-tree Leaf Node
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Signature</td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td>Version</td>
 | 
						|
      <td>Type</td>
 | 
						|
      <td colspan="2">Record 0, 1, 2...N-1 <em>(variable size)</em></td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Checksum</td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Version 2 B-tree Leaf Node
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Signature</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ASCII character string “<code>BTLF</code>“
 | 
						|
          is used to indicate the leaf node of a version 2 (v2) B-tree.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The version number for this B-tree leaf node.
 | 
						|
	      This document describes version 0.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Type</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This field is the type of the B-tree node.  It should always
 | 
						|
          be the same as the B-tree type in the header.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Records</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The size of this field is determined by the number of records
 | 
						|
	      for this node and the record size (from the header).  The format
 | 
						|
          of records depends on the type of B-tree.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Checksum</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the checksum for this node.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<p>The record layout for each stored (in other words, non-testing)
 | 
						|
  B-tree type is as follows:</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Version 2 B-tree, Type 1 Record Layout - Indirectly
 | 
						|
      Accessed, Non-filtered, ‘Huge’ Fractal Heap Objects
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Huge Object Address<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Huge Object Length<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Huge Object ID<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
    <tr>
 | 
						|
      <td> </td>
 | 
						|
      <td>
 | 
						|
        (Items marked with an ‘L’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
          of Lengths</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Version 2 B-tree, Type 1 Record Layout - Indirectly
 | 
						|
      Accessed, Non-filtered, ‘Huge’ Fractal Heap Objects
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Huge Object Address</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The address of the huge object in the file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Huge Object Length</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The length of the huge object in the file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Huge Object ID</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The heap ID for the huge object.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Version 2 B-tree, Type 2 Record Layout - Indirectly
 | 
						|
      Accessed, Filtered, ‘Huge’ Fractal Heap Objects
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Filtered Huge Object Address<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Filtered Huge Object Length<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Filter Mask</td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Filtered Huge Object Memory Size<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Huge Object ID<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
    <tr>
 | 
						|
      <td> </td>
 | 
						|
      <td>
 | 
						|
        (Items marked with an ‘L’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
          of Lengths</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Version 2 B-tree, Type 2 Record Layout - Indirectly
 | 
						|
      Accessed, Filtered, ‘Huge’ Fractal Heap Objects
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Filtered Huge Object Address</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The address of the filtered huge object in the file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Filtered Huge Object Length</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The length of the filtered huge object in the file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Filter Mask</p></td>
 | 
						|
      <td>
 | 
						|
        <p>A 32-bit bit field indicating which filters have been skipped for
 | 
						|
          this chunk.  Each filter has an index number in the pipeline
 | 
						|
          (starting at 0, with the first filter to apply) and if that
 | 
						|
          filter is skipped, the bit corresponding to its index is set.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Filtered Huge Object Memory Size</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The size of the de-filtered huge object in memory.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Huge Object ID</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The heap ID for the huge object.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Version 2 B-tree, Type 3 Record Layout - Directly
 | 
						|
      Accessed, Non-filtered, ‘Huge’ Fractal Heap Objects
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Huge Object Address<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Huge Object Length<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
    <tr>
 | 
						|
      <td> </td>
 | 
						|
      <td>
 | 
						|
        (Items marked with an ‘L’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
          of Lengths</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Version 2 B-tree, Type 3 Record Layout - Directly
 | 
						|
      Accessed, Non-filtered, ‘Huge’ Fractal Heap Objects
 | 
						|
    </caption>
 | 
						|
    <tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Huge Object Address</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The address of the huge object in the file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Huge Object Length</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The length of the huge object in the file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Version 2 B-tree, Type 4 Record Layout - Directly
 | 
						|
      Accessed, Filtered, ‘Huge’ Fractal Heap Objects
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Filtered Huge Object Address<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Filtered Huge Object Length<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Filter Mask</td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Filtered Huge Object Memory Size<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
    <tr>
 | 
						|
      <td> </td>
 | 
						|
      <td>
 | 
						|
        (Items marked with an ‘L’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
          of Lengths</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Version 2 B-tree, Type 4 Record Layout - Directly
 | 
						|
      Accessed, Filtered, ‘Huge’ Fractal Heap Objects
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Filtered Huge Object Address</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The address of the filtered huge object in the file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Filtered Huge Object Length</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The length of the filtered huge object in the file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Filter Mask</p></td>
 | 
						|
      <td>
 | 
						|
        <p>A 32-bit bit field indicating which filters have been skipped for
 | 
						|
          this chunk.  Each filter has an index number in the pipeline
 | 
						|
          (starting at 0, with the first filter to apply) and if that
 | 
						|
          filter is skipped, the bit corresponding to its index is set.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Filtered Huge Object Memory Size</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The size of the de-filtered huge object in memory.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Version 2 B-tree, Type 5 Record Layout - Link Name
 | 
						|
      for Indexed Group
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Hash of Name</td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">ID <em>(bytes 1-4)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="3">ID <em>(bytes 5-7)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Version 2 B-tree, Type 5 Record Layout - Link Name
 | 
						|
      for Indexed Group
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Hash</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This field is hash value of the name for the link.  The hash
 | 
						|
          value is the Jenkins’ lookup3 checksum algorithm applied to
 | 
						|
          the link’s name.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>ID</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is a 7-byte sequence of bytes and is the heap ID for the
 | 
						|
          link record in the group’s fractal heap.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Version 2 B-tree, Type 6 Record Layout - Creation
 | 
						|
      Order for Indexed Group
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Creation Order
 | 
						|
        <em>(8 bytes)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">ID <em>(bytes 1-4)</em></td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="3">ID <em>(bytes 5-7)</em></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Version 2 B-tree, Type 6 Record Layout - Creation
 | 
						|
      Order for Indexed Group
 | 
						|
    </caption>
 | 
						|
    <tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Creation Order</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This field is the creation order value for the link.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>ID</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is a 7-byte sequence of bytes and is the heap ID for the
 | 
						|
          link record in the group’s fractal heap.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Version 2 B-tree, Type 7 Record Layout - Shared
 | 
						|
      Object Header Messages (Sub-type 0 - Message in Heap)
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan>Message Location</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Hash</td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Reference Count</td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Heap ID <em>(8 bytes)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Version 2 B-tree, Type 7 Record Layout - Shared
 | 
						|
      Object Header Messages (Sub-type 0 - Message in Heap)
 | 
						|
    </caption>
 | 
						|
    <tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Message Location</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This field Indicates the location where the message is stored:
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Value</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center">0</td>
 | 
						|
              <td>Shared message is stored in shared message index heap.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center">1</td>
 | 
						|
              <td>Shared message is stored in object header.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
        </table></p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Hash</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This field is hash value of the shared message.  The hash
 | 
						|
          value is the Jenkins’ lookup3 checksum algorithm applied to
 | 
						|
          the shared message.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Reference Count</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The number of objects which reference this message.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Heap ID</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is an 8-byte sequence of bytes and is the heap ID for the
 | 
						|
          shared message in the shared message index’s fractal heap.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Version 2 B-tree, Type 7 Record Layout - Shared
 | 
						|
      Object Header Messages (Sub-type 1 - Message in Object Header)
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan>Message Location</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Hash</td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td>Reserved (zero)</td>
 | 
						|
      <td>Message Type</td>
 | 
						|
      <td colspan="2">Object Header Index</td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Object Header Address<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Version 2 B-tree, Type 7 Record Layout - Shared
 | 
						|
      Object Header Messages (Sub-type 1 - Message in Object Header)
 | 
						|
    </caption>
 | 
						|
    <tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Message Location</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This field Indicates the location where the message is stored:
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Value</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center">0</td>
 | 
						|
              <td>Shared message is stored in shared message index heap.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center">1</td>
 | 
						|
              <td>Shared message is stored in object header.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
        </table></p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Hash</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This field is hash value of the shared message.  The hash
 | 
						|
          value is the Jenkins’ lookup3 checksum algorithm applied to
 | 
						|
          the shared message.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Message Type</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The object header message type of the shared message.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Object Header Index</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This field indicates that the shared message is the n<sup>th</sup> message
 | 
						|
          of its type in the specified object header.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Object Header Address</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The address of the object header containing the shared message.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Version 2 B-tree, Type 8 Record Layout - Attribute
 | 
						|
      Name for Indexed Attributes
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Heap ID <em>(8 bytes)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan>Message Flags</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Creation Order</td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Hash of Name</td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Version 2 B-tree, Type 8 Record Layout - Attribute
 | 
						|
      Name for Indexed Attributes
 | 
						|
    </caption>
 | 
						|
    <tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Heap ID</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is an 8-byte sequence of bytes and is the heap ID for the
 | 
						|
          attribute in the object’s attribute fractal heap.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Message Flags</p></td>
 | 
						|
      <td><p>The object header message flags for the attribute message.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Creation Order</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This field is the creation order value for the attribute.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Hash</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This field is hash value of the name for the attribute.  The hash
 | 
						|
          value is the Jenkins’ lookup3 checksum algorithm applied to
 | 
						|
          the attribute’s name.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Version 2 B-tree, Type 9 Record Layout - Creation
 | 
						|
      Order for Indexed Attributes
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Heap ID <em>(8 bytes)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan>Message Flags</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD">
 | 
						|
        <em>This space inserted only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Creation Order</td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Version 2 B-tree, Type 9 Record Layout - Creation
 | 
						|
      Order for Indexed Attributes
 | 
						|
    </caption>
 | 
						|
    <tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Heap ID</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is an 8-byte sequence of bytes and is the heap ID for the
 | 
						|
          attribute in the object’s attribute fractal heap.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Message Flags</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The object header message flags for the attribute message.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Creation Order</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This field is the creation order value for the attribute.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<a name="V2BtType10"></a>
 | 
						|
  <div align="center">
 | 
						|
    <table class="format">
 | 
						|
      <caption>
 | 
						|
        <a name="V2BtreesType10"></a>
 | 
						|
          Layout: Version 2 B-tree, Type 10 Record Layout -
 | 
						|
          Non-filtered Dataset Chunks
 | 
						|
      </caption>
 | 
						|
 | 
						|
      <tr>
 | 
						|
        <th>byte</th>
 | 
						|
        <th>byte</th>
 | 
						|
        <th>byte</th>
 | 
						|
        <th>byte</th>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
        <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
        <td colspan="4"><br />Dimension 0 Scaled Offset
 | 
						|
          <em>(8 bytes)</em><br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
        <td colspan="4"><br />Dimension 1 Scaled Offset
 | 
						|
          <em>(8 bytes)</em><br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
        <td colspan="4"><br />...<br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
        <td colspan="4"><br />Dimension #n Scaled Offset
 | 
						|
          <em>(8 bytes)</em><br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
    </table>
 | 
						|
 | 
						|
    <table class="note">
 | 
						|
      <tr>
 | 
						|
        <td width="60%"> </td>
 | 
						|
        <td width="40%">
 | 
						|
          (Items marked with an ‘O’ in the above table are
 | 
						|
          of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
            of Offsets</a> field in the superblock.)
 | 
						|
      </td></tr>
 | 
						|
    </table>
 | 
						|
 | 
						|
  </div>
 | 
						|
 | 
						|
  <br />
 | 
						|
  <div align="center">
 | 
						|
    <table class="desc">
 | 
						|
      <caption>
 | 
						|
        Fields: Version 2 B-tree, Type 10 Record Layout -
 | 
						|
        Non-filtered Dataset Chunks
 | 
						|
</caption>
 | 
						|
<tr>
 | 
						|
  <th width="30%">Field Name</th>
 | 
						|
  <th>Description</th>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td><p>Address</p></td>
 | 
						|
  <td>
 | 
						|
    <p>This field is the address of the dataset chunk in the file.</p>
 | 
						|
  </td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td><p>Dimension #n Scaled Offset</p></td>
 | 
						|
  <td>
 | 
						|
    <p>This field is the scaled offset of the chunk within the
 | 
						|
      dataset. <em>n</em> is the number of dimensions for the
 | 
						|
      dataset. The first scaled offset stored in the list is for
 | 
						|
      the slowest changing dimension, and the last scaled offset
 | 
						|
      stored is for the fastest changing dimension. Scaled offset
 | 
						|
      is calculated by dividing the chunk dimension sizes into
 | 
						|
      the chunk offsets.</p>
 | 
						|
  </td>
 | 
						|
</tr>
 | 
						|
 | 
						|
</table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      <a name="V2BtreesType11"></a>
 | 
						|
        Layout: Version 2 B-tree, Type 11 Record Layout - Filtered
 | 
						|
        Dataset Chunks
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td colspan="4"><br />Chunk Size
 | 
						|
        <em>(variable size; at most 8 bytes)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td colspan="4">Filter Mask</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td colspan="4"><br />Dimension 0 Scaled Offset
 | 
						|
        <em>(8 bytes)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td colspan="4"><br />Dimension 1 Scaled Offset
 | 
						|
        <em>(8 bytes)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td colspan="4"><br />...<br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td colspan="4"><br />Dimension #n Scaled Offset
 | 
						|
        <em>(8 bytes)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Version 2 B-tree, Type 11 Record Layout - Filtered
 | 
						|
      Dataset Chunks
 | 
						|
</caption>
 | 
						|
<tr>
 | 
						|
  <th width="30%">Field Name</th>
 | 
						|
  <th>Description</th>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td><p>Address</p></td>
 | 
						|
  <td>
 | 
						|
    <p>This field is the address of the dataset chunk in the file.</p>
 | 
						|
  </td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td><p>Chunk Size</p></td>
 | 
						|
  <td>
 | 
						|
    <p>This field is the size of the dataset chunk in bytes.</p>
 | 
						|
  </td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td><p>Filter Mask</p></td>
 | 
						|
  <td>
 | 
						|
    <p>This field is the filter mask which indicates the filter
 | 
						|
	  to skip for the dataset chunk.  Each filter has an index
 | 
						|
	  number in the pipeline and if that filter is skipped,
 | 
						|
	  the bit corresponding to its index is set.</p>
 | 
						|
  </td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td><p>Dimension #n Scaled Offset</p></td>
 | 
						|
  <td>
 | 
						|
    <p>This field is the scaled offset of the chunk within
 | 
						|
      the dataset. <em>n</em> is the number of dimensions for
 | 
						|
      the dataset. The first scaled offset stored in the list
 | 
						|
      is for the slowest changing dimension, and the last scaled
 | 
						|
      offset stored is for the fastest changing dimension.</p>
 | 
						|
  </td>
 | 
						|
</tr>
 | 
						|
 | 
						|
</table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h3><a name="SymbolTable">
 | 
						|
    III.B. Disk Format: Level 1B - Group Symbol Table Nodes</a></h3>
 | 
						|
 | 
						|
<p>A group is an object internal to the file that allows
 | 
						|
  arbitrary nesting of objects within the file (including other
 | 
						|
  groups). A group maps a set of link names in the group to a set
 | 
						|
  of relative file addresses of objects in the file. Certain metadata
 | 
						|
  for an object to which the group points can be cached in the
 | 
						|
  group’s symbol table entry in addition to being in the
 | 
						|
  object’s header.</p>
 | 
						|
 | 
						|
<p>An HDF5 object name space can be stored hierarchically by
 | 
						|
  partitioning the name into components and storing each
 | 
						|
  component as a link in a group.  The link for a
 | 
						|
  non-ultimate component points to the group containing
 | 
						|
  the next component.  The link for the last
 | 
						|
  component points to the object being named.</p>
 | 
						|
 | 
						|
<p>One implementation of a  group is a collection of symbol table
 | 
						|
  nodes indexed by a B-tree. Each symbol table node contains entries
 | 
						|
  for one or more links. If an attempt is made to add a link to an
 | 
						|
  already full symbol table node containing 2<em>K</em> entries, then
 | 
						|
  the node is split and one node contains <em>K</em> symbols and the
 | 
						|
  other contains <em>K</em>+1 symbols.</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Symbol Table Node (A Leaf of a B-tree)
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Signature</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version Number</td>
 | 
						|
      <td>Reserved <em>(zero)</em></td>
 | 
						|
      <td colspan="2">Number of Symbols</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br /><br />Group Entries<br /><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Symbol Table Node (A Leaf of a B-tree)
 | 
						|
    </caption>
 | 
						|
    <tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Signature</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ASCII character string “<code>SNOD</code>” is
 | 
						|
          used to indicate the
 | 
						|
          beginning of a symbol table node.  This gives file
 | 
						|
          consistency checking utilities a better chance of
 | 
						|
          reconstructing a damaged file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version Number</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The version number for the symbol table node.  This
 | 
						|
          document describes version 1. (There is no version ‘0’
 | 
						|
          of the symbol table node)
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Number of Entries</p></td>
 | 
						|
      <td>
 | 
						|
        <p>Although all symbol table nodes have the same length,
 | 
						|
          most contain fewer than the maximum possible number of
 | 
						|
          link entries.  This field indicates how many entries
 | 
						|
          contain valid data.  The valid entries are packed at the
 | 
						|
          beginning of the symbol table node while the remaining
 | 
						|
          entries contain undefined values.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Symbol Table Entries</p></td>
 | 
						|
      <td>
 | 
						|
        <p>Each link has an entry in the symbol table node.
 | 
						|
          The format of the entry is described below.
 | 
						|
          There are 2<em>K</em> entries in each group node, where
 | 
						|
          <em>K</em> is the “Group Leaf Node K” value from the
 | 
						|
          <a href="#Superblock">superblock</a>.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h3><a name="SymbolTableEntry">
 | 
						|
    III.C. Disk Format: Level 1C - Symbol Table Entry </a></h3>
 | 
						|
 | 
						|
<p>Each symbol table entry in a symbol table node is designed
 | 
						|
  to allow for very fast browsing of stored objects.
 | 
						|
  Toward that design goal, the symbol table entries
 | 
						|
  include space for caching certain constant metadata from the
 | 
						|
  object header.</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Symbol Table Entry
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Link Name Offset<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Object Header Address<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Cache Type</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Reserved <em>(zero)</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br /><br />Scratch-pad Space
 | 
						|
        <em>(16 bytes)</em><br /><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Symbol Table Entry
 | 
						|
    </caption>
 | 
						|
    <tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Link Name Offset</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the byte offset into the group’s local
 | 
						|
          heap for the name of the link. The name is null
 | 
						|
          terminated.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Object Header Address</p></td>
 | 
						|
      <td>
 | 
						|
        <p>Every object has an object header which serves as a
 | 
						|
          permanent location for the object’s metadata.  In addition
 | 
						|
          to appearing in the object header, some of the object’s metadata
 | 
						|
          can be cached in the scratch-pad space.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Cache Type</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The cache type is determined from the object header.
 | 
						|
          It also determines the format for the scratch-pad space:
 | 
						|
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Type</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center">0</td>
 | 
						|
              <td>No data is cached by the group entry.  This
 | 
						|
                is guaranteed to be the case when an object header
 | 
						|
                has a link count greater than one.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center">1</td>
 | 
						|
              <td>Group object header metadata is cached in the
 | 
						|
                scratch-pad space.  This implies that the symbol table
 | 
						|
                entry refers to another group.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center">2</td>
 | 
						|
              <td>The entry is a symbolic link.  The first four bytes
 | 
						|
                of the scratch-pad space are the offset into the local
 | 
						|
                heap for the link value.  The object header address
 | 
						|
                will be undefined.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
        </table></p>
 | 
						|
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Reserved</p></td>
 | 
						|
      <td>
 | 
						|
        <p>These four bytes are present so that the scratch-pad
 | 
						|
          space is aligned on an eight-byte boundary.  They are
 | 
						|
          always set to zero.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Scratch-pad Space</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This space is used for different purposes, depending
 | 
						|
          on the value of the Cache Type field. Any metadata
 | 
						|
          about an object represented in the scratch-pad
 | 
						|
          space is duplicated in the object header for that
 | 
						|
          object.
 | 
						|
        </p>
 | 
						|
        <p>
 | 
						|
          Furthermore, no data is cached in the group
 | 
						|
          entry scratch-pad space if the object header for
 | 
						|
          the object has a link count greater than one.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h4>Format of the Scratch-pad Space</h4>
 | 
						|
 | 
						|
<p>The symbol table entry scratch-pad space is formatted
 | 
						|
  according to the value in the Cache Type field.</p>
 | 
						|
 | 
						|
<p>If the Cache Type field contains the value zero
 | 
						|
  <code>(0)</code> then no information is
 | 
						|
  stored in the scratch-pad space.</p>
 | 
						|
 | 
						|
<p>If the Cache Type field contains the value one
 | 
						|
  <code>(1)</code>, then the scratch-pad space
 | 
						|
  contains cached metadata for another object header
 | 
						|
  in the following format:</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Object Header Scratch-pad Format
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Address of B-tree<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Address of Name Heap<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Object Header Scratch-pad Format
 | 
						|
    </caption>
 | 
						|
    <tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Address of B-tree</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the file address for the root of the
 | 
						|
          group’s B-tree.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Address of Name Heap</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the file address for the group’s local
 | 
						|
          heap, in which are stored the group’s symbol names.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<p>If the Cache Type field contains the value two
 | 
						|
  <code>(2)</code>, then the scratch-pad space
 | 
						|
  contains cached metadata for a symbolic link
 | 
						|
  in the following format:</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Symbolic Link Scratch-pad Format
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Offset to Link Value</td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Symbolic Link Scratch-pad Format
 | 
						|
    </caption>
 | 
						|
    <tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Offset to Link Value</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The value of a symbolic link (that is, the name of the
 | 
						|
          thing to which it points) is stored in the local heap.
 | 
						|
          This field is the 4-byte offset into the local heap for
 | 
						|
          the start of the link value, which is null terminated.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h3><a name="LocalHeap">
 | 
						|
    III.D. Disk Format: Level 1D - Local Heaps</a></h3>
 | 
						|
 | 
						|
<p>A local heap is a collection of small pieces of data that are particular
 | 
						|
  to a single object in the HDF5 file.  Objects can be
 | 
						|
  inserted and removed from the heap at any time.
 | 
						|
  The address of a heap does not change once the heap is created.
 | 
						|
  For example, a group stores addresses of objects in symbol table nodes
 | 
						|
  with the names of links stored in the group’s local heap.
 | 
						|
</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Local Heap
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Signature</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version</td>
 | 
						|
      <td colspan="3">Reserved <em>(zero)</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Data Segment Size<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Offset to Head of Free-list<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Address of Data Segment<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘L’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
          of Lengths</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
    <tr>
 | 
						|
      <td> </td>
 | 
						|
      <td>
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Local Heap
 | 
						|
    </caption>
 | 
						|
    <tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Signature</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ASCII character string “<code>HEAP</code>”
 | 
						|
          is used to indicate the
 | 
						|
          beginning of a heap.  This gives file consistency
 | 
						|
          checking utilities a better chance of reconstructing a
 | 
						|
          damaged file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version</p></td>
 | 
						|
      <td>
 | 
						|
        <p>Each local heap has its own version number so that new
 | 
						|
          heaps can be added to old files.  This document
 | 
						|
          describes version zero (0) of the local heap.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Data Segment Size</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The total amount of disk memory allocated for the heap
 | 
						|
          data.  This may be larger than the amount of space
 | 
						|
          required by the objects stored in the heap.  The extra
 | 
						|
          unused space in the heap holds a linked list of free blocks.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Offset to Head of Free-list</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the offset within the heap data segment of the
 | 
						|
          first free block (or the
 | 
						|
          <a href="#UndefinedAddress">undefined address</a> if there is no
 | 
						|
          free block).  The free block contains
 | 
						|
          <a href="#SizeOfLengthsV0">Size of Lengths</a> bytes that
 | 
						|
          are the offset of the next free block (or the
 | 
						|
          value ‘1’ if this is the
 | 
						|
          last free block) followed by Size of Lengths bytes that store
 | 
						|
          the size of this free block.  The size of the free block includes
 | 
						|
          the space used to store the offset of the next free block and
 | 
						|
          the size of the current block, making the minimum size of a free
 | 
						|
          block 2 * Size of Lengths.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Address of Data Segment</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The data segment originally starts immediately after
 | 
						|
          the heap header, but if the data segment must grow as a
 | 
						|
          result of adding more objects, then the data segment may
 | 
						|
          be relocated, in its entirety, to another part of the
 | 
						|
          file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<p>Objects within a local heap should be aligned on an 8-byte boundary.</p>
 | 
						|
 | 
						|
<h3><a name="GlobalHeap">
 | 
						|
    III.E. Disk Format: Level 1E - Global Heap</a></h3>
 | 
						|
 | 
						|
<p>Each HDF5 file has a global heap which stores various types of
 | 
						|
  information which is typically shared between datasets.  The
 | 
						|
  global heap was designed to satisfy these goals:</p>
 | 
						|
 | 
						|
<ol type="A">
 | 
						|
  <li>Repeated access to a heap object must be efficient without
 | 
						|
    resulting in repeated file I/O requests. Since global heap
 | 
						|
    objects will typically be shared among several datasets, it is
 | 
						|
    probable that the object will be accessed repeatedly.</li>
 | 
						|
  <li>Collections of related global heap objects should result in
 | 
						|
    fewer and larger I/O requests.  For instance, a dataset of
 | 
						|
    object references will have a global heap object for each
 | 
						|
    reference.  Reading the entire set of object references
 | 
						|
    should result in a few large I/O requests instead of one small
 | 
						|
    I/O request for each reference.</li>
 | 
						|
  <li>It should be possible to remove objects from the global heap
 | 
						|
    and the resulting file hole should be eligible to be reclaimed
 | 
						|
    for other uses.</li>
 | 
						|
</ol>
 | 
						|
 | 
						|
 | 
						|
<p>The implementation of the heap makes use of the memory management
 | 
						|
  already available at the file level and combines that with a new
 | 
						|
  object called a <em>collection</em> to achieve goal B. The global heap
 | 
						|
  is the set of all collections.  Each global heap object belongs to
 | 
						|
  exactly one collection, and each collection contains one or more global
 | 
						|
  heap objects. For the purposes of disk I/O and caching, a collection is
 | 
						|
  treated as an atomic object, addressing goal A.
 | 
						|
</p>
 | 
						|
 | 
						|
<p>When a global heap object is deleted from a collection (which
 | 
						|
  occurs when its reference count falls to zero), objects located
 | 
						|
  after the deleted object in the collection are packed down toward
 | 
						|
  the beginning of the collection, and the collection’s
 | 
						|
  global heap object 0 is created (if possible), or its size is
 | 
						|
  increased to account for the recently freed space. There are
 | 
						|
  no gaps between objects in each collection, with the possible
 | 
						|
  exception of the final space in the collection, if it is not
 | 
						|
  large enough to hold the header for the collection’s
 | 
						|
  global heap object 0. These features address goal C.
 | 
						|
</p>
 | 
						|
 | 
						|
<p>The HDF5 Library creates global heap collections as needed, so there may
 | 
						|
  be multiple collections throughout the file. The set of all of them is
 | 
						|
  abstractly called the “global heap”, although they do not actually link
 | 
						|
  to each other, and there is no global place in the file where you can
 | 
						|
  discover all of the collections.  The collections are found simply by
 | 
						|
  finding a reference to one through another object in the file.  For
 | 
						|
  example, data of variable-length datatype elements is stored in the
 | 
						|
  global heap and is accessed via a global heap ID.  The format for
 | 
						|
  global heap IDs is described at the end of this section.
 | 
						|
</p>
 | 
						|
 | 
						|
<p>For more information on global heaps for virtual datasets, see
 | 
						|
  <a href="#GlobalHeapVDS">“Disk Format: Level 1F - Global Heap
 | 
						|
    Block for Virtual Datasets.”</a></p>
 | 
						|
<br />
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: A Global Heap Collection
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Signature</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version</td>
 | 
						|
      <td colspan="3">Reserved (zero)</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Collection Size<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Global Heap Object 1<br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Global Heap Object 2<br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />...<br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Global Heap Object <em>N</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Global Heap Object 0 (free space)<br /><br /></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘L’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
          of Lengths</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: A Global Heap Collection
 | 
						|
    </caption>
 | 
						|
    <tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Signature</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ASCII character string “<code>GCOL</code>”
 | 
						|
          is used to indicate the
 | 
						|
          beginning of a collection.  This gives file consistency
 | 
						|
          checking utilities a better chance of reconstructing a
 | 
						|
          damaged file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version</p></td>
 | 
						|
      <td>
 | 
						|
        <p>Each collection has its own version number so that new
 | 
						|
          collections can be added to old files.  This document
 | 
						|
          describes version one (1) of the collections (there is no
 | 
						|
          version zero (0)).
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Collection Size</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the size in bytes of the entire collection
 | 
						|
          including this field.  The default (and minimum)
 | 
						|
          collection size is 4096 bytes which is a typical file
 | 
						|
          system block size.  This allows for 127 16-byte heap
 | 
						|
          objects plus their overhead (the collection header of 16 bytes
 | 
						|
          and the 16 bytes of information about each heap object).
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Global Heap Object 1 through <em>N</em></p></td>
 | 
						|
      <td>
 | 
						|
        <p>The objects are stored in any order with no
 | 
						|
          intervening unused space.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Global Heap Object 0</p></td>
 | 
						|
      <td>
 | 
						|
        <p>Global Heap Object 0 (zero), when present, represents the free
 | 
						|
          space in the collection.  Free space always appears at the end of
 | 
						|
          the collection.  If the free space is too small to store the header
 | 
						|
          for Object 0 (described below) then the header is implied and is not
 | 
						|
          written.
 | 
						|
        <p>
 | 
						|
          The field <em>Object Size</em> for Object 0 indicates the
 | 
						|
          amount of possible free space in the collection including the 16-byte
 | 
						|
          header size of Object 0.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Global Heap Object
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="2">Heap Object Index</td>
 | 
						|
      <td colspan="2">Reference Count</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Reserved (zero)</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Object Size<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Object Data<br /><br /></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘L’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
          of Lengths</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Global Heap Object
 | 
						|
    </caption>
 | 
						|
    <tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Heap Object Index</p></td>
 | 
						|
      <td>
 | 
						|
        <p>Each object has a unique identification number within a
 | 
						|
          collection.  The identification numbers are chosen so that
 | 
						|
          new objects have the smallest value possible with the
 | 
						|
          exception that the identifier <code>0</code> always refers to the
 | 
						|
          object which represents all free space within the
 | 
						|
          collection.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Reference Count</p></td>
 | 
						|
      <td>
 | 
						|
        <p>All heap objects have a reference count field.  An
 | 
						|
          object which is referenced from some other part of the
 | 
						|
          file will have a positive reference count. The reference
 | 
						|
          count for Object 0 is always zero.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Reserved</p></td>
 | 
						|
      <td>
 | 
						|
        <p>Zero padding to align next field on an 8-byte boundary.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Object Size</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the size of the object data stored for the object.
 | 
						|
          The actual storage space allocated for the object data is rounded
 | 
						|
          up to a multiple of eight.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Object Data</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The object data is treated as a one-dimensional array
 | 
						|
          of bytes to be interpreted by the caller.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<p>
 | 
						|
  <a name="GlobalHeapID"></a>
 | 
						|
    The format for the ID used to locate an object in the global heap is
 | 
						|
    described here:</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Global Heap ID
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Collection Address<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Object Index</td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Global Heap ID
 | 
						|
    </caption>
 | 
						|
    <tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Collection Address</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This field is the address of the global heap collection
 | 
						|
		  where the data object is stored.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>ID</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This field is the index of the data object within the
 | 
						|
		  global heap collection.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
<h3><a name="GlobalHeapVDS"> III.F. Disk Format: Level 1F - Global
 | 
						|
    Heap Block for Virtual Datasets</a></h3>
 | 
						|
 | 
						|
<p>The layout for the global heap block used with virtual datasets is
 | 
						|
  described below. For more information on global heaps, see
 | 
						|
  <a href="#GlobalHeap"></a>“Disk Format: Level 1E - Global Heap.”</p>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Global Heap Block for Virtual Dataset
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted
 | 
						|
          only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Num Entries<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Source Filename #1 <em>(variable size)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Source Dataset #1 <em>(variable
 | 
						|
          size)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Source Selection #1 <em>(variable
 | 
						|
          size)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Virtual Selection #1 <em>(variable
 | 
						|
          size)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Source Filename #n <em>(variable
 | 
						|
          size)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Source Dataset #n <em>(variable
 | 
						|
          size)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Source Selection #n <em>(variable
 | 
						|
          size)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Virtual Selection #n <em>(variable
 | 
						|
          size)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Checksum</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘L’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
          of Lengths</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Global Heap Block for Virtual Dataset
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="40%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The version number for the block; the value is 0.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Num Entries</p></td>
 | 
						|
      <td><p>The number of entries in the block.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Source Filename #n</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>The source file name where the source dataset is located.
 | 
						|
        </p>
 | 
						|
	  </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Source Dataset #n</p></td>
 | 
						|
	  <td><p>The source dataset name that is mapped to the
 | 
						|
          virtual dataset.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Source Selection #n</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>The <a href="#DataspaceSEL">dataspace selection</a> in the
 | 
						|
          source dataset that is mapped to the virtual selection.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Virtual Selection #n</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the <a href="#DataspaceSEL">dataspace selection</a> in the virtual dataset that is
 | 
						|
		  mapped to the source selection.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Checksum</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the checksum for the block.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
<br>
 | 
						|
 | 
						|
<h3><a name="FractalHeap">
 | 
						|
    III.G. Disk Format: Level 1G - Fractal Heap</a></h3>
 | 
						|
 | 
						|
<p>
 | 
						|
  Each fractal heap consists of a header and zero or more direct and
 | 
						|
  indirect blocks (described below).  The header contains general
 | 
						|
  information as well as
 | 
						|
  initialization parameters for the doubling table.  The <em>Address
 | 
						|
    of Root Block</em> field in the header points to the first direct or
 | 
						|
  indirect block in the heap.
 | 
						|
</p>
 | 
						|
 | 
						|
<p>
 | 
						|
  Fractal heaps are based on a data structure called a <em>doubling
 | 
						|
    table</em>.  A doubling table provides a mechanism for quickly
 | 
						|
  extending an array-like data structure that minimizes the number of
 | 
						|
  empty blocks in the heap, while retaining very fast lookup of any
 | 
						|
  element within the array.  More information on fractal heaps and
 | 
						|
  doubling tables can be found in the RFC
 | 
						|
  “<a href="Supplements/FractalHeap/PrivateHeap.pdf">Private
 | 
						|
    Heaps in HDF5</a>.”
 | 
						|
</p>
 | 
						|
 | 
						|
<p>
 | 
						|
  The fractal heap implements the doubling table structure with
 | 
						|
  indirect and direct blocks.
 | 
						|
  Indirect blocks in the heap do not actually contain data for
 | 
						|
  objects in the heap, their “size” is abstract -
 | 
						|
  they represent the indexing structure for locating the
 | 
						|
  direct blocks in the doubling table.
 | 
						|
  Direct blocks
 | 
						|
  contain the actual data for objects stored in the heap.
 | 
						|
</p>
 | 
						|
 | 
						|
<p>
 | 
						|
  All indirect blocks have a constant number of block entries in each
 | 
						|
  row, called the <em>width</em> of the doubling table
 | 
						|
  (see <em>Table Width</em> field in the header).
 | 
						|
 | 
						|
  The number
 | 
						|
  of rows for each indirect block in the heap is determined by the
 | 
						|
  size of the block that the indirect block represents in the
 | 
						|
  doubling table (calculation of this is shown below) and is
 | 
						|
  constant, except for the “root”
 | 
						|
  indirect block, which expands and shrinks its number of rows as
 | 
						|
  needed.
 | 
						|
</p>
 | 
						|
 | 
						|
<p>
 | 
						|
  Blocks in the first <em>two</em> rows of an indirect block
 | 
						|
  are <em>Starting Block Size</em> number of bytes in size.
 | 
						|
  For example, if the row <em>width</em> of the doubling table is 4,
 | 
						|
  then the first eight block entries in the
 | 
						|
  indirect block are <em>Starting Block Size</em> number of bytes in size.
 | 
						|
  The blocks in each subsequent row are twice the size of
 | 
						|
  the blocks in the previous row. In other words, blocks in
 | 
						|
  the third row are twice the <em>Starting Block Size</em>,
 | 
						|
  blocks in the fourth row are four times the
 | 
						|
  <em>Starting Block Size</em>, and so on.  Entries for
 | 
						|
  blocks up to the <em>Maximum Direct Block Size</em> point to
 | 
						|
  direct blocks, and entries for blocks greater than that size
 | 
						|
  point to further indirect blocks (which have their own
 | 
						|
  entries for direct and indirect blocks).
 | 
						|
  <em>Starting Block Size</em> and
 | 
						|
  <em>Maximum Direct Block Size</em> are fields
 | 
						|
  stored in the header.
 | 
						|
</p>
 | 
						|
 | 
						|
<p>
 | 
						|
  The number of rows of blocks, <em>nrows</em>, in an
 | 
						|
  indirect block is calculated by the following expression:
 | 
						|
  <br /> <br />
 | 
						|
  <em>nrows</em> = (log<sub>2</sub>(<em>block_size</em>) -
 | 
						|
  log<sub>2</sub>(<em><Starting Block Size></em>)) + 1
 | 
						|
</p>
 | 
						|
where <em>block_size</em> is the size of the block that the indirect block
 | 
						|
represents in the doubling table.
 | 
						|
For example, to represent a block with <em>block_size</em> equals to 1024,
 | 
						|
and <em>Starting Block Size</em> equals to 256,
 | 
						|
three rows are needed.
 | 
						|
<p>
 | 
						|
  The maximum number of rows of direct blocks, <em>max_dblock_rows</em>,
 | 
						|
  in any indirect block of a fractal heap is given by the
 | 
						|
  following expression:
 | 
						|
  <br /> <br />
 | 
						|
  <em>max_dblock_rows</em> =
 | 
						|
  (log<sub>2</sub>(<em><Maximum Direct Block Size></em>) -
 | 
						|
  log<sub>2</sub>(<em><Starting Block Size></em>)) + 2
 | 
						|
</p>
 | 
						|
<p>
 | 
						|
  Using the computed values for <em>nrows</em> and
 | 
						|
  <em>max_dblock_rows</em>, along with the <em>width</em> of the
 | 
						|
  doubling table, the number of direct and indirect block entries
 | 
						|
  (<em>K</em> and <em>N</em> in the indirect block description, below)
 | 
						|
  in an indirect block can be computed:
 | 
						|
  <br /> <br />
 | 
						|
  <em>K</em> = MIN(<em>nrows</em>, <em>max_dblock_rows</em>) *
 | 
						|
  <em><Table Width></em>
 | 
						|
 | 
						|
  <br /> <br />
 | 
						|
  If <em>nrows</em> is less than or equal to <em>max_dblock_rows</em>,
 | 
						|
  <em>N</em> is 0.  Otherwise, <em>N</em> is simply computed:
 | 
						|
  <br /> <br />
 | 
						|
  <em>N</em> = <em>K</em> - (<em>max_dblock_rows</em> *
 | 
						|
  <em><Table Width></em>)
 | 
						|
</p>
 | 
						|
 | 
						|
<p>
 | 
						|
  The size of indirect blocks on disk is determined by the number
 | 
						|
  of rows in the indirect block (computed above).  The size of direct
 | 
						|
  blocks on disk is exactly the size of the block in the doubling
 | 
						|
  table.
 | 
						|
</p>
 | 
						|
<br>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Fractal Heap Header
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Signature</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="2">Heap ID Length</td>
 | 
						|
      <td colspan="2">I/O Filters’ Encoded Length</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Flags</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Maximum Size of Managed Objects</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Next Huge Object ID<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />v2 B-tree Address of Huge Objects<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Amount of Free Space in Managed Blocks<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Address of Managed Block Free Space Manager<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Amount of Managed Space in Heap<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Amount of Allocated Managed Space in Heap<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Offset of Direct Block Allocation Iterator in Managed Space<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Number of Managed Objects in Heap<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Size of Huge Objects in Heap<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Number of Huge Objects in Heap<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Size of Tiny Objects in Heap<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Number of Tiny Objects in Heap<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="2">Table Width</td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Starting Block Size<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Maximum Direct Block Size<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="2">Maximum Heap Size</td>
 | 
						|
      <td colspan="2">Starting # of Rows in Root Indirect Block</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Address of Root Block<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="2">Current # of Rows in Root Indirect Block</td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Size of Filtered Root Direct Block <em>(optional)</em><sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">I/O Filter Mask<em> (optional)</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">I/O Filter Information<em> (optional, variable size)</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Checksum</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘L’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
          of Lengths</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
    <tr>
 | 
						|
      <td> </td>
 | 
						|
      <td>
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Fractal Heap Header
 | 
						|
    </caption>
 | 
						|
    <tr>
 | 
						|
      <th width="40%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Signature</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ASCII character string “<code>FRHP</code>”
 | 
						|
          is used to indicate the
 | 
						|
          beginning of a fractal heap header.  This gives file consistency
 | 
						|
          checking utilities a better chance of reconstructing a
 | 
						|
          damaged file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This document describes version 0.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Heap ID Length</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the length in bytes of heap object IDs for this heap.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>I/O Filters’ Encoded Length</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This is the size in bytes of the encoded <em>I/O Filter Information</em>.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Flags</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This field is the heap status flag and is a bit field
 | 
						|
          indicating additional information about the fractal heap.
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Bit(s)</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td>If set, the ID value to use for huge object has wrapped
 | 
						|
                around.  If the value for the <em>Next Huge Object ID</em>
 | 
						|
                has wrapped around, each new huge object inserted into the
 | 
						|
                heap will require a search for an ID value.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>1</code></td>
 | 
						|
              <td>If set, the direct blocks in the heap are checksummed.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>2-7</code></td>
 | 
						|
              <td>Reserved</td>
 | 
						|
            </tr>
 | 
						|
        </table></p>
 | 
						|
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Maximum Size of Managed Objects</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This is the maximum size of managed objects allowed in the heap.
 | 
						|
          Objects greater than this this are ‘huge’ objects and will be
 | 
						|
          stored in the file directly, rather than in a direct block for
 | 
						|
          the heap.
 | 
						|
	    </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Next Huge Object ID</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This is the next ID value to use for a huge object in the heap.
 | 
						|
	    </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>v2 B-tree Address of Huge Objects</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This is the address of the <a href="#V2Btrees">v2 B-tree</a>
 | 
						|
          used to track huge objects in the heap.  The type of records
 | 
						|
          stored in the <em>v2 B-tree</em> will
 | 
						|
          be determined by whether the address and length of a huge object
 | 
						|
          can fit into a heap ID (if yes, it is a “directly” accessed
 | 
						|
          huge object) and whether there is a filter used on objects
 | 
						|
          in the heap.
 | 
						|
	    </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Amount of Free Space in Managed Blocks</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This is the total amount of free space in managed direct blocks
 | 
						|
          (in bytes).
 | 
						|
	    </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Address of Managed Block Free Space Manager</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This is the address of the
 | 
						|
          <em><a href="#FreeSpaceManager">Free-space Manager</a></em> for
 | 
						|
          managed blocks.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Amount of Managed Space in Heap</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the total amount of managed space in the heap (in bytes),
 | 
						|
          essentially the upper bound of the heap’s linear address space.
 | 
						|
	    </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Amount of Allocated Managed Space in Heap</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the total amount of managed space (in bytes) actually
 | 
						|
          allocated in
 | 
						|
          the heap.  This can be less than the <em>Amount of Managed Space
 | 
						|
            in Heap</em> field, if some direct blocks in the heap’s linear
 | 
						|
          address space are not allocated.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Offset of Direct Block Allocation Iterator in Managed Space</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the linear heap offset where the next direct
 | 
						|
          block should be allocated at (in bytes).  This may be less than
 | 
						|
          the <em>Amount of Managed Space in Heap</em> value because the
 | 
						|
          heap’s address space is increased by a “row” of direct blocks
 | 
						|
          at a time, rather than by single direct block increments.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Number of Managed Objects in Heap</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the number of managed objects in the heap.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Size of Huge Objects in Heap</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the total size of huge objects in the heap (in bytes).
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Number of Huge Objects in Heap</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the number of huge objects in the heap.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Size of Tiny Objects in Heap</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the total size of tiny objects that are packed in heap
 | 
						|
          IDs (in bytes).
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Number of Tiny Objects in Heap</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the number of tiny objects that are packed in heap IDs.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Table Width</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the number of columns in the doubling table for managed
 | 
						|
          blocks.  This value must be a power of two.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Starting Block Size</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the starting block size to use in the doubling table for
 | 
						|
	      managed blocks (in bytes).  This value must be a power of two.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Maximum Direct Block Size</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the maximum size allowed for a managed direct block.
 | 
						|
          Objects inserted into the heap that are larger than this value
 | 
						|
          (less the number of bytes of direct block prefix/suffix)
 | 
						|
          are stored as ‘huge’ objects.  This value must be a power of
 | 
						|
          two.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Maximum Heap Size</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the maximum size of the heap’s linear address space for
 | 
						|
          managed objects (in bytes).  The value stored is the log2 of
 | 
						|
          the actual value, that is: the number of bits of the address space.
 | 
						|
          ‘Huge’ and ‘tiny’ objects are not counted in this value, since
 | 
						|
          they do not store objects in the linear address space of the
 | 
						|
          heap.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Starting # of Rows in Root Indirect Block</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the starting number of rows for the root indirect block.
 | 
						|
	      A value of 0 indicates that the root indirect block will have
 | 
						|
          the maximum number of rows needed to address the heap’s <em>Maximum
 | 
						|
            Heap Size</em>.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Address of Root Block</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the address of the root block for the heap.  It can
 | 
						|
          be the <a href="#UndefinedAddress">undefined address</a> if
 | 
						|
          there is no data in the heap.  It either points to a direct
 | 
						|
          block (if the <em>Current # of Rows in the Root Indirect
 | 
						|
            Block</em> value is 0), or an indirect block.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Current # of Rows in Root Indirect Block</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the current number of rows in the root indirect block.
 | 
						|
		  A value of 0 indicates that <em>Address of Root Block</em>
 | 
						|
          points to direct block instead of indirect block.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Size of Filtered Root Direct Block</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the size of the root direct block, if filters are
 | 
						|
          applied to heap objects (in bytes).  This field is only
 | 
						|
          stored in the header if the <em>I/O Filters’ Encoded Length</em>
 | 
						|
          is greater than 0.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>I/O Filter Mask</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the filter mask for the root direct block, if filters
 | 
						|
          are applied to heap objects.  This mask has the same format as
 | 
						|
          that used for the filter mask in chunked raw data records in a
 | 
						|
          <a href="#V1Btrees">v1 B-tree</a>.
 | 
						|
          This field is only
 | 
						|
          stored in the header if the <em>I/O Filters’ Encoded Length</em>
 | 
						|
          is greater than 0.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>I/O Filter Information</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the I/O filter information encoding direct blocks and
 | 
						|
          huge objects, if filters are applied to heap objects.  This
 | 
						|
          field is encoded as a <a href="#FilterMessage">Filter Pipeline</a>
 | 
						|
          message.
 | 
						|
          The size of this field is determined by <em>I/O Filters’
 | 
						|
            Encoded Length</em>.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Checksum</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the checksum for the header.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Fractal Heap Direct Block
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Signature</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Heap Header Address<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Block Offset <em>(variable size)</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Checksum <em>(optional)</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Object Data <em>(variable size)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Fractal Heap Direct Block
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Signature</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ASCII character string “<code>FHDB</code>”
 | 
						|
          is used to indicate the
 | 
						|
          beginning of a fractal heap direct block.  This gives file consistency
 | 
						|
          checking utilities a better chance of reconstructing a
 | 
						|
          damaged file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This document describes version 0.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Heap Header Address</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the address for the fractal heap header that this
 | 
						|
          block belongs to.  This field is principally used for file
 | 
						|
          integrity checking.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Block Offset</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the offset of the block within the fractal heap’s
 | 
						|
          address space (in bytes).  The number of bytes used to encode
 | 
						|
          this field is the <em>Maximum Heap Size</em> (in the heap’s
 | 
						|
          header) divided by 8 and rounded up to the next highest integer,
 | 
						|
          for values that are not a multiple of 8.  This value is
 | 
						|
          principally used for file integrity checking.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Checksum</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the checksum for the direct block.</p>
 | 
						|
	    <p>This field is only present if bit 1 of <em>Flags</em> in the
 | 
						|
          heap’s header is set.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Object Data</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This section of the direct block stores the actual data for
 | 
						|
          objects in the heap.  The size of this section is determined by
 | 
						|
          the direct block’s size minus the size of the other fields
 | 
						|
          stored in the direct block (for example, the <em>Signature</em>,
 | 
						|
          <em>Version</em>, and others including the <em>Checksum</em> if it is
 | 
						|
          present).
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Fractal Heap Indirect Block
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Signature</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Heap Header Address<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Block Offset <em>(variable size)</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Child Direct Block #0 Address<sup>O</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Size of Filtered Direct Block #0 <em>(optional)</em> <sup>L</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Filter Mask for Direct Block #0 <em>(optional)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Child Direct Block #1 Address<sup>O</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Size of Filtered Direct Block #1 <em>(optional)</em><sup>L</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Filter Mask for Direct Block #1 <em>(optional)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">...</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Child Direct Block #K-1 Address<sup>O</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Size of Filtered Direct Block #K-1 <em>(optional)</em><sup>L</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Filter Mask for Direct Block #K-1 <em>(optional)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Child Indirect Block #0 Address<sup>O</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Child Indirect Block #1 Address<sup>O</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">...</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Child Indirect Block #N-1 Address<sup>O</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
	  <td colspan="4">Checksum</td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
    <tr>
 | 
						|
      <td> </td>
 | 
						|
      <td>
 | 
						|
        (Items marked with an ‘L’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
          of Lengths</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Fractal Heap Indirect Block
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Signature</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ASCII character string “<code>FHIB</code>” is used to
 | 
						|
          indicate the beginning of a fractal heap indirect block.  This
 | 
						|
          gives file consistency checking utilities a better chance of
 | 
						|
          reconstructing a damaged file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This document describes version 0.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Heap Header Address</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the address for the fractal heap header that this
 | 
						|
          block belongs to.  This field is principally used for file
 | 
						|
          integrity checking.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Block Offset</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the offset of the block within the fractal heap’s
 | 
						|
          address space (in bytes).  The number of bytes used to encode
 | 
						|
          this field is the <em>Maximum Heap Size</em> (in the heap’s
 | 
						|
          header) divided by 8 and rounded up to the next highest integer,
 | 
						|
          for values that are not a multiple of 8.  This value is
 | 
						|
          principally used for file integrity checking.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Child Direct Block #K Address</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This field is the address of the child direct block.
 | 
						|
          The size of the [uncompressed] direct block can be computed by
 | 
						|
          its offset in the heap’s linear address space.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Size of Filtered Direct Block #K</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the size of the child direct block after passing through
 | 
						|
          the I/O filters defined for this heap (in bytes).  If no I/O
 | 
						|
          filters are present for this heap, this field is not present.
 | 
						|
        </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td><p>Filter Mask for Direct Block #K</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This is the I/O filter mask for the filtered direct block.
 | 
						|
          This mask has the same format as that used for the filter mask
 | 
						|
          in chunked raw data records in a <a href="#V1Btrees">v1 B-tree</a>.
 | 
						|
          If no I/O filters are present for this heap, this field is not
 | 
						|
          present.
 | 
						|
        </p>
 | 
						|
	  </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Child Indirect Block #N Address</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This field is the address of the child indirect block.
 | 
						|
          The size of the indirect block can be computed by
 | 
						|
          its offset in the heap’s linear address space.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Checksum</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the checksum for the indirect block.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<p>An object in the fractal heap is identified by means of a fractal heap ID,
 | 
						|
  which encodes information to locate the object in the heap.
 | 
						|
  Currently, the fractal heap stores an object in one of three ways,
 | 
						|
  depending on the object’s size:</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="list80">
 | 
						|
    <tr>
 | 
						|
      <th width="20%">Type</th>
 | 
						|
      <th width="80%" align="left">Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td align="center">Tiny</td>
 | 
						|
      <td>
 | 
						|
        <p>When an object is small enough to be encoded in the
 | 
						|
          heap ID, the object’s data is embedded in the fractal
 | 
						|
          heap ID itself.  There are two sub-types for this type of
 | 
						|
          object: normal and extended. The sub-type for tiny heap
 | 
						|
          IDs depends on whether the heap ID is large enough to
 | 
						|
          store objects greater than 16 bytes or not. If the
 | 
						|
          heap ID length is 18 bytes or smaller, the
 | 
						|
          ‘normal’ tiny heap ID form is used. If the
 | 
						|
          heap ID length is greater than 18 bytes in length, the
 | 
						|
          “extended” form is used. See the format
 | 
						|
          description below for both sub-types.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td align="center">Huge</td>
 | 
						|
      <td>
 | 
						|
        <p>When the size of an object is larger than <em>Maximum Size of
 | 
						|
            Managed Objects</em> in the <em>Fractal Heap Header</em>, the
 | 
						|
          object’s data is stored on its own in the file and the object
 | 
						|
          is tracked/indexed via a version 2 B-tree.  All huge objects
 | 
						|
          for a particular fractal heap use the same v2 B-tree.  All huge
 | 
						|
          objects for a particular fractal heap use the same format for
 | 
						|
          their huge object IDs.
 | 
						|
        </p>
 | 
						|
 | 
						|
        <p>Depending on whether the IDs for a heap are large enough to hold
 | 
						|
          the object’s retrieval information and whether I/O pipeline filters
 | 
						|
          are applied to the heap’s objects, 4 sub-types are derived for
 | 
						|
          huge object IDs for this heap:</p>
 | 
						|
 | 
						|
        <div align="center">
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th align="left" width="35%">Sub-type</th>
 | 
						|
              <th align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="left">Directly accessed, non-filtered</td>
 | 
						|
              <td>
 | 
						|
                <p>The object’s address and length are embedded in the
 | 
						|
                  fractal heap ID itself and the object is directly accessed
 | 
						|
                  from them.  This allows the object to be accessed without
 | 
						|
                  resorting to the B-tree.
 | 
						|
                </p>
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="left">Directly accessed, filtered</td>
 | 
						|
              <td>
 | 
						|
                <p>The filtered object’s address, length, filter mask and
 | 
						|
                  de-filtered size are embedded in the fractal heap ID itself
 | 
						|
                  and the object is accessed directly with them.  This allows
 | 
						|
                  the object to be accessed without resorting to the B-tree.
 | 
						|
                </p>
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="left">Indirectly accessed, non-filtered</td>
 | 
						|
              <td>
 | 
						|
                <p>The object is located by using a B-tree key embedded in
 | 
						|
                  the fractal heap ID to retrieve the address and length from
 | 
						|
                  the version 2 B-tree for huge objects.  Then, the address
 | 
						|
                  and length are used to access the object.
 | 
						|
                </p>
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="left">Indirectly accessed, filtered</td>
 | 
						|
              <td>
 | 
						|
                <p>The object is located by using a B-tree key embedded in
 | 
						|
                  the fractal heap ID to retrieve the filtered object’s
 | 
						|
                  address, length, filter mask and de-filtered size from the
 | 
						|
                  version 2 B-tree for huge objects.  Then, this information
 | 
						|
                  is used to access the object.
 | 
						|
                </p>
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
          </table>
 | 
						|
        </div>
 | 
						|
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td align="center">Managed</td>
 | 
						|
      <td>
 | 
						|
        <p>When the size of an object does not meet the above two
 | 
						|
          conditions, the object is stored and managed via the direct and
 | 
						|
          indirect blocks based on the doubling table.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
 | 
						|
<br />
 | 
						|
<p>The specific format for each type of heap ID is described below:
 | 
						|
</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Fractal Heap ID for Tiny Objects (Sub-type 1 -
 | 
						|
      ‘Normal’)
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version, Type, and Length</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Data <em>(variable size)</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Fractal Heap ID for Tiny Objects (Sub-type 1 -
 | 
						|
      ‘Normal’)
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version, Type, and Length</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is a bit field with the following definition:
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Bit</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>6-7</code></td>
 | 
						|
              <td>The current version of ID format.  This document
 | 
						|
                describes version 0.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>4-5</code></td>
 | 
						|
              <td>The ID type.  Tiny objects have a value of <code>2</code>.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0-3</code></td>
 | 
						|
              <td>The length of the tiny object. The value stored
 | 
						|
                is one less than the actual length (since zero-length
 | 
						|
                objects are not allowed to be stored in the heap).
 | 
						|
                For example, an object of actual length 1 has an
 | 
						|
                encoded length of 0, an object of actual length 2
 | 
						|
                has an encoded length of 1, and so on.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
	    </table></p>
 | 
						|
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Data</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the data for the object.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Fractal Heap ID for Tiny Objects (Sub-type 2 -
 | 
						|
      ‘Extended’)
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version, Type, and Length</td>
 | 
						|
      <td>Extended Length</td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Data <em>(variable size)</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Fractal Heap ID for Tiny Objects (Sub-type 2 -
 | 
						|
      ‘Extended’)
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version, Type, and Length</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is a bit field with the following definition:
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Bit</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>6-7</code></td>
 | 
						|
              <td>The current version of ID format.  This document
 | 
						|
                describes version 0.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>4-5</code></td>
 | 
						|
              <td>The ID type.  Tiny objects have a value of <code>2</code>.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0-3</code></td>
 | 
						|
              <td>These 4 bits, together with the next byte, form an
 | 
						|
                unsigned 12-bit integer for holding the length of the
 | 
						|
                object.  These 4-bits are bits 8-11 of the 12-bit integer.
 | 
						|
                See description for the <em>Extended Length</em> field below.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
	    </table></p>
 | 
						|
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Extended Length</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This byte, together with the 4 bits in the previous byte,
 | 
						|
          forms an unsigned 12-bit integer for holding the length of
 | 
						|
          the tiny object.  These 8 bits are bits 0-7 of the 12-bit
 | 
						|
          integer formed. The value stored is one less than the actual
 | 
						|
          length (since zero-length objects are not allowed to be
 | 
						|
          stored in the heap). For example, an object of actual length
 | 
						|
          1 has an encoded length of 0, an object of actual length
 | 
						|
          2 has an encoded length of 1, and so on.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Data</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the data for the object.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Fractal Heap ID for Huge Objects (Sub-types 1 and 2):
 | 
						|
      Indirectly Accessed, Non-filtered/Filtered
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version and Type</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted
 | 
						|
          only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />v2 B-tree Key<sup>L</sup><em> (variable size)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘L’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
          of Lengths</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Fractal Heap ID for Huge Objects (Sub-types 1 and 2):
 | 
						|
      Indirectly Accessed, Non-filtered/Filtered
 | 
						|
    </caption>
 | 
						|
    <tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version and Type</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is a bit field with the following definition:
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Bit</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>6-7</code></td>
 | 
						|
              <td>The current version of ID format.  This document
 | 
						|
                describes version 0.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>4-5</code></td>
 | 
						|
              <td>The ID type.  Huge objects have a value of <code>1</code>.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0-3</code></td>
 | 
						|
              <td>Reserved.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
        </table></p>
 | 
						|
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>v2 B-tree Key</p></td>
 | 
						|
      <td><p>This field is the B-tree key for retrieving the information
 | 
						|
          from the version 2 B-tree for huge objects needed to access the
 | 
						|
          object.  See the description of <a href="#V2Btrees">v2 B-tree</a>
 | 
						|
          records sub-types 1 and 2 for a description of the fields.  New key
 | 
						|
          values are derived from <em>Next Huge Object ID</em> in the
 | 
						|
          <em>Fractal Heap Header</em>.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Fractal Heap ID for Huge Objects (Sub-type 3):
 | 
						|
      Directly Accessed, Non-filtered
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version and Type</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Address <sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Length <sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
    <tr>
 | 
						|
      <td> </td>
 | 
						|
      <td>
 | 
						|
        (Items marked with an ‘L’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
          of Lengths</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Fractal Heap ID for Huge Objects (Sub-type 3):
 | 
						|
      Directly Accessed, Non-filtered
 | 
						|
    </caption>
 | 
						|
    <tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version and Type</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is a bit field with the following definition:
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Bit</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>6-7</code></td>
 | 
						|
              <td>The current version of ID format.  This document
 | 
						|
                describes version 0.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>4-5</code></td>
 | 
						|
              <td>The ID type.  Huge objects have a value of <code>1</code>.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0-3</code></td>
 | 
						|
              <td>Reserved.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
        </table></p>
 | 
						|
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Address</p></td>
 | 
						|
      <td><p>This field is the address of the object in the file.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Length</p></td>
 | 
						|
      <td><p>This field is the length of the object in the file.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Fractal Heap ID for Huge Objects (Sub-type 4):
 | 
						|
      Directly Accessed, Filtered
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version and Type</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Address <sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Length <sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Filter Mask</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />De-filtered Size <sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
    <tr>
 | 
						|
      <td> </td>
 | 
						|
      <td>
 | 
						|
        (Items marked with an ‘L’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
          of Lengths</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Fractal Heap ID for Huge Objects (Sub-type 4):
 | 
						|
      Directly Accessed, Filtered
 | 
						|
    </caption>
 | 
						|
    <tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version and Type</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is a bit field with the following definition:
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Bit</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>6-7</code></td>
 | 
						|
              <td>The current version of ID format.  This document
 | 
						|
                describes version 0.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>4-5</code></td>
 | 
						|
              <td>The ID type.  Huge objects have a value of <code>1</code>.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0-3</code></td>
 | 
						|
              <td>Reserved.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
        </table></p>
 | 
						|
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Address</p></td>
 | 
						|
      <td><p>This field is the address of the filtered object in the file.</p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Length</p></td>
 | 
						|
	  <td><p>This field is the length of the filtered object in the file.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Filter Mask</p></td>
 | 
						|
	  <td><p>This field is the I/O pipeline filter mask for the
 | 
						|
		  filtered object in the file.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Filtered Size</p></td>
 | 
						|
	  <td><p>This field is the size of the de-filtered object in the file.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Fractal Heap ID for Managed Objects
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version and Type</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Offset <em>(variable size)</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Length <em>(variable size)</em></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Fractal Heap ID for Managed Objects
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version and Type</p></td>
 | 
						|
      <td><p>This is a bit field with the following definition:
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Bit</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>6-7</code></td>
 | 
						|
              <td>The current version of ID format.  This document
 | 
						|
                describes version 0.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>4-5</code></td>
 | 
						|
              <td>The ID type.  Managed objects have a value of <code>0</code>.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0-3</code></td>
 | 
						|
              <td>Reserved.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
        </table></p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Offset</p></td>
 | 
						|
      <td><p>This field is the offset of the object in the heap.
 | 
						|
          This field’s size is the minimum number of bytes
 | 
						|
          necessary to encode the <em>Maximum Heap Size</em> value
 | 
						|
          (from the <em>Fractal Heap Header</em>). For example, if the
 | 
						|
          value of the <em>Maximum Heap Size</em> is less than 256 bytes,
 | 
						|
          this field is 1 byte in length, a <em>Maximum Heap Size</em>
 | 
						|
          of 256-65535 bytes uses a 2 byte length, and so on.</p></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Length</p></td>
 | 
						|
      <td><p>This field is the length of the object in the heap. It
 | 
						|
          is determined by taking the minimum value of <em>Maximum
 | 
						|
            Direct Block Size</em> and <em>Maximum Size of Managed
 | 
						|
            Objects</em> in the <em>Fractal Heap Header</em>. Again,
 | 
						|
          the minimum number of bytes needed to encode that value is
 | 
						|
          used for the size of this field.</p></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h3><a name="FreeSpaceManager">
 | 
						|
    III.H. Disk Format: Level 1H - Free-space Manager</a></h3>
 | 
						|
 | 
						|
<p>
 | 
						|
  Free-space managers are used to describe space within a heap or
 | 
						|
  the entire HDF5 file that is not currently used for that heap or
 | 
						|
  file.
 | 
						|
</p>
 | 
						|
 | 
						|
<p>
 | 
						|
  The <em>free-space manager header</em> contains metadata information
 | 
						|
  about the space being tracked, along with the address of the list
 | 
						|
  of <em>free space sections</em> which actually describes the free
 | 
						|
  space. The header records information about free-space sections being
 | 
						|
  tracked, creation parameters for handling free-space sections of a
 | 
						|
  client, and section information used to locate the collection of
 | 
						|
  free-space sections.
 | 
						|
</p>
 | 
						|
 | 
						|
<p>
 | 
						|
  The <em>free-space section list</em> stores a collection of
 | 
						|
  free-space sections that is specific to each <em>client</em> of the
 | 
						|
  free-space manager.
 | 
						|
 | 
						|
  For example, the fractal heap is a client of the free space manager
 | 
						|
  and uses it to track unused space within the heap.  There are 4
 | 
						|
  types of section records for the fractal heap, each of which has
 | 
						|
  its own format, listed below.
 | 
						|
</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Free-space Manager Header
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Signature</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version</td>
 | 
						|
      <td>Client ID</td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Total Space Tracked<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Total Number of Sections<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Number of Serialized Sections<sup>L</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Number of Un-Serialized Sections<sup>L</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="2">Number of Section Classes</td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="2">Shrink Percent</td>
 | 
						|
      <td colspan="2">Expand Percent</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="2">Size of Address Space</td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Maximum Section Size <sup>L</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Address of Serialized Section List<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Size of Serialized Section List Used<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Allocated Size of Serialized Section List<sup>L</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Checksum</td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘L’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
          of Lengths</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
    <tr>
 | 
						|
      <td> </td>
 | 
						|
      <td>
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Free-space Manager Header
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="35%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Signature</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ASCII character string “<code>FSHD</code>”
 | 
						|
          is used to indicate the beginning of the Free-space Manager
 | 
						|
          Header. This gives file consistency checking utilities a
 | 
						|
          better chance of reconstructing a damaged file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the version number for the Free-space Manager Header
 | 
						|
		  and this document describes version 0.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Client ID</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the client ID for identifying the user of this
 | 
						|
          free-space manager:
 | 
						|
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">ID</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td>Fractal heap
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>1</code></td>
 | 
						|
              <td>File
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>2+</code></td>
 | 
						|
              <td>Reserved.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
        </table></p>
 | 
						|
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Total Space Tracked</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This is the total amount of free space being tracked, in bytes.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Total Number of Sections</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This is the total number of free-space sections being tracked.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Number of Serialized Sections</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the number of serialized free-space sections being
 | 
						|
          tracked.
 | 
						|
        </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td><p>Number of Un-Serialized Sections</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This is the number of un-serialized free-space sections being
 | 
						|
          managed.  Un-serialized sections are created by the free-space
 | 
						|
          client when the list of sections is read in.
 | 
						|
        </p>
 | 
						|
	  </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Number of Section Classes</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This is the number of section classes handled by this free space
 | 
						|
          manager for the free-space client.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Shrink Percent</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This is the percent of current size to shrink the allocated
 | 
						|
          serialized free-space section list.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Expand Percent</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This is the percent of current size to expand the allocated
 | 
						|
          serialized free-space section list.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Size of Address Space</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the size of the address space that free-space sections
 | 
						|
          are within.  This is stored as the log<sub>2</sub> of the
 | 
						|
          actual value (in other words, the number of bits required
 | 
						|
          to store values within that address space).
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Maximum Section Size</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the maximum size of a section to be tracked.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Address of Serialized Section List</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the address where the serialized free-space section
 | 
						|
          list is stored.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Size of Serialized Section List Used</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the size of the serialized free-space section
 | 
						|
          list used (in bytes).  This value must be less than
 | 
						|
          or equal to the <em>allocated size of serialized section
 | 
						|
            list</em>, below.
 | 
						|
	    </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Allocated Size of Serialized Section List</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the size of serialized free-space section list
 | 
						|
          actually allocated (in bytes).
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Checksum</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the checksum for the free-space manager header.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<p>The free-space sections being managed are stored in a
 | 
						|
  <em>free-space section list</em>, described below. The sections
 | 
						|
  in the free-space section list are stored in the following way:
 | 
						|
  a count of the number of sections describing a particular size of
 | 
						|
  free space and the size of the free-space described (in bytes),
 | 
						|
  followed by a list of section description records; then another
 | 
						|
  section count and size, followed by the list of section
 | 
						|
  descriptions for that size; and so on.</p>
 | 
						|
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Free-space Section List
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Signature</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Free-space Manager Header Address<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Number of Section Records in Set #0 <em>(variable size)</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Size of Free-space Section Described in Record Set #0 <em>(variable size)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Record Set #0 Section Record #0 Offset<em>(variable size)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="1">Record Set #0 Section Record #0 Type</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Record Set #0 Section Record #0 Data <em>(variable size)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">...</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Record Set #0 Section Record #K-1 Offset<em>(variable size)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="1">Record Set #0 Section Record #K-1 Type</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Record Set #0 Section Record #K-1 Data <em>(variable size)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Number of Section Records in Set #1 <em>(variable size)</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Size of Free-space Section Described in Record Set #1 <em>(variable size)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Record Set #1 Section Record #0 Offset<em>(variable size)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="1">Record Set #1 Section Record #0 Type</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Record Set #1 Section Record #0 Data <em>(variable size)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">...</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Record Set #1 Section Record #K-1 Offset<em>(variable size)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="1">Record Set #1 Section Record #K-1 Type</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Record Set #1 Section Record #K-1 Data <em>(variable size)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><strong>...</strong></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><strong>...</strong></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Number of Section Records in Set #N-1 <em>(variable size)</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Size of Free-space Section Described in Record Set #N-1 <em>(variable size)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Record Set #N-1 Section Record #0 Offset<em>(variable size)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="1">Record Set #N-1 Section Record #0 Type</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Record Set #N-1 Section Record #0 Data <em>(variable size)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">...</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Record Set #N-1 Section Record #K-1 Offset<em>(variable size)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="1">Record Set #N-1 Section Record #K-1 Type</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Record Set #N-1 Section Record #K-1 Data <em>(variable size)</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Checksum</td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Free-space Section List
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="35%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Signature</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ASCII character string “<code>FSSE</code>”
 | 
						|
          is used to indicate the beginning of the Free-space Section
 | 
						|
          Information. This gives file consistency checking utilities
 | 
						|
          a better chance of reconstructing a damaged file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the version number for the Free-space Section List
 | 
						|
		  and this document describes version 0.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Free-space Manager Header Address</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the address of the <em>Free-space Manager Header</em>.
 | 
						|
          This field is principally used for file
 | 
						|
          integrity checking.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Number of Section Records for Set #N</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This is the number of free-space section records for set #N.
 | 
						|
		  The length of this field is the minimum number of bytes needed
 | 
						|
          to store the <em>number of serialized sections</em> (from the
 | 
						|
          <em>free-space manager header</em>).
 | 
						|
        </p>
 | 
						|
 | 
						|
        <p>
 | 
						|
          The number of sets of free-space section records is
 | 
						|
          determined by the <em>size of serialized section list</em> in
 | 
						|
          the <em>free-space manager header</em>.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Section Size for Record Set #N</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This is the size (in bytes) of the free-space section described
 | 
						|
          for <em>all</em> the section records in set #N.
 | 
						|
        </p>
 | 
						|
 | 
						|
        <p>
 | 
						|
		  The length of this field is the minimum number of bytes needed
 | 
						|
          to store the <em>maximum section size</em> (from the
 | 
						|
          <em>free-space manager header</em>).
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Record Set #N Section #K Offset</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This is the offset (in bytes) of the free-space section within
 | 
						|
          the client for the free-space manager.
 | 
						|
        </p>
 | 
						|
 | 
						|
        <p>
 | 
						|
		  The length of this field is the minimum number of bytes needed
 | 
						|
          to store the <em>size of address space</em> (from the
 | 
						|
          <em>free-space manager header</em>).
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Record Set #N Section #K Type</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This is the type of the section record, used to decode the
 | 
						|
          <em>record set #N section #K data</em> information. The defined
 | 
						|
          record type for <em>file</em> client is:
 | 
						|
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Type</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td>File’s section (a range of actual bytes in file)
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>1+</code></td>
 | 
						|
              <td>Reserved.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
        </table></p>
 | 
						|
 | 
						|
	    <p>The defined record types for a <em>fractal heap</em> client are:
 | 
						|
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Type</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td>Fractal heap “single” section
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>1</code></td>
 | 
						|
              <td>Fractal heap “first row” section
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>2</code></td>
 | 
						|
              <td>Fractal heap “normal row” section
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>3</code></td>
 | 
						|
              <td>Fractal heap “indirect” section
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>4+</code></td>
 | 
						|
              <td>Reserved.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
        </table></p>
 | 
						|
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Record Set #N Section #K Data</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This is the section-type specific information for each record
 | 
						|
          in the record set, described below.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Checksum</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This is the checksum for the <em>Free-space Section List</em>.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<p>
 | 
						|
  The section-type specific data for each free-space section record is
 | 
						|
  described below:
 | 
						|
</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: File’s Section Data Record
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><em>No additional record data stored</em></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Fractal Heap “Single” Section Data Record
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><em>No additional record data stored</em></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Fractal Heap “First Row” Section Data
 | 
						|
      Record
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><em>Same format as “indirect”
 | 
						|
          section data</em></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Fractal Heap “Normal Row” Section Data
 | 
						|
      Record
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><em>No additional record data stored</em></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Fractal Heap “Indirect” Section
 | 
						|
      Data Record
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Fractal Heap Indirect Block Offset <em>(variable size)</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="2">Block Start Row</td>
 | 
						|
      <td colspan="2">Block Start Column</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="2">Number of Blocks</td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Fractal Heap “Indirect” Section
 | 
						|
      Data Record
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Fractal Heap Block Offset</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The offset of the indirect block in the fractal heap’s address
 | 
						|
          space containing the empty blocks.
 | 
						|
        </p>
 | 
						|
        <p>
 | 
						|
          The number of bytes used to encode this field is the minimum
 | 
						|
          number of bytes needed to encode values for the <em>Maximum
 | 
						|
            Heap Size</em> (in the fractal heap’s header).
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Block Start Row</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the row that the empty blocks start in.
 | 
						|
	    </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Block Start Column</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the column that the empty blocks start in.
 | 
						|
	    </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Number of Blocks</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the number of empty blocks covered by the section.
 | 
						|
	    </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h3><a name="SOHMTable">
 | 
						|
    III.I. Disk Format: Level 1I - Shared Object Header Message Table</a></h3>
 | 
						|
 | 
						|
<p>
 | 
						|
  The <em>shared object header message table</em> is used to locate
 | 
						|
  object
 | 
						|
  header messages that are shared between two or more object headers
 | 
						|
  in the file.  Shared object header messages are stored and indexed
 | 
						|
  in the file in one of two ways: indexed sequentially in a
 | 
						|
  <em>shared header message list</em> or indexed with a v2 B-tree.
 | 
						|
  The shared messages themselves are either stored in a fractal
 | 
						|
  heap (when two or more objects share the message), or remain in an
 | 
						|
  object’s header (when only one object uses the message currently,
 | 
						|
  but the message can be shared in the future).
 | 
						|
</p>
 | 
						|
 | 
						|
<p>
 | 
						|
  The <em>shared object header message table</em>
 | 
						|
  contains a list of shared message index headers.  Each index header
 | 
						|
  records information about the version of the index format, the index
 | 
						|
  storage type, flags for the message types indexed, the number of
 | 
						|
  messages in the index, the address where the index resides,
 | 
						|
  and the fractal heap address if shared messages are stored there.
 | 
						|
</p>
 | 
						|
 | 
						|
<p>
 | 
						|
  Each index can be either a list or a v2 B-tree and may transition
 | 
						|
  between those two forms as the number of messages in the index
 | 
						|
  varies.  Each shared message record contains information used to
 | 
						|
  locate the shared message from either a fractal heap or an object
 | 
						|
  header.  The types of messages that can be shared are: <em>Dataspace,
 | 
						|
    Datatype, Fill Value, Filter Pipeline and Attribute</em>.
 | 
						|
</p>
 | 
						|
 | 
						|
<p>
 | 
						|
  The <em>shared object header message table</em> is pointed to
 | 
						|
  from a <a href="#SOHMTableMessage">shared message table</a> message
 | 
						|
  in the superblock extension for a file.  This message stores the
 | 
						|
  version of the table format, along with the number of index headers
 | 
						|
  in the table.
 | 
						|
</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Shared Object Header Message Table
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Signature</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version for index #0</td>
 | 
						|
      <td>Index Type for index #0</td>
 | 
						|
      <td colspan="2">Message Type Flags for index #0</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Minimum Message Size for index #0</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="2">List Cutoff for index #0</td>
 | 
						|
      <td colspan="2">v2 B-tree Cutoff for index #0</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="2">Number of Messages for index #0</td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Index Address<sup>O</sup> for index #0<br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Fractal Heap Address<sup>O</sup> for index #0<br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">...</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">...</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version for index #N-1</td>
 | 
						|
      <td>Index Type for index #N-1</td>
 | 
						|
      <td colspan="2">Message Type Flags for index #N-1</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Minimum Message Size for index #N-1</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="2">List Cutoff for index #N-1</td>
 | 
						|
      <td colspan="2">v2 B-tree Cutoff for index #N-1</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="2">Number of Messages for index #N-1</td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Index Address<sup>O</sup> for index #N-1<br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Fractal Heap Address<sup>O</sup> for index #N-1<br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Checksum</td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Shared Object Header Message Table
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="35%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Signature</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ASCII character string “<code>SMTB</code>”
 | 
						|
          is used to indicate the beginning of the Shared Object
 | 
						|
          Header Message table. This gives file consistency checking
 | 
						|
          utilities a better chance of reconstructing a damaged file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version for index #N</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the version number for the list of shared object header message
 | 
						|
		  indexes and this document describes version 0.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Index Type for index #N</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The type of index can be an unsorted list or a v2 B-tree.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Message Type Flags for index #N</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This field indicates the type of messages tracked in the index,
 | 
						|
          as follows:
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Bits</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td>If set, the index tracks <em>Dataspace Messages</em>.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>1</code></td>
 | 
						|
              <td>If set, the message tracks <em>Datatype Messages</em>.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>2</code></td>
 | 
						|
              <td>If set, the message tracks <em>Fill Value Messages</em>.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>3</code></td>
 | 
						|
              <td>If set, the message tracks <em>Filter Pipeline Messages</em>.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>4</code></td>
 | 
						|
              <td>If set, the message tracks <em>Attribute Messages</em>.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>5-15</code></td>
 | 
						|
              <td>Reserved (zero).
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
        </table></p>
 | 
						|
 | 
						|
 | 
						|
        <p>
 | 
						|
          An index can track more than one type of message, but each type
 | 
						|
          of message can only by in one index.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Minimum Message Size for index #N</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This is the message size sharing threshold for the index.
 | 
						|
		  If the encoded size of the message is less than this value, the
 | 
						|
          message is not shared.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>List Cutoff for index #N</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the cutoff value for the indexing of messages to
 | 
						|
          switch from a list to a v2 B-tree.  If the number of messages
 | 
						|
          is greater than this value, the index should be a v2 B-tree.
 | 
						|
        </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td><p>v2 B-tree Cutoff for index #N</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This is the cutoff value for the indexing of messages
 | 
						|
          to switch from a v2 B-tree back to a list. If the number
 | 
						|
          of messages is less than this value, the index should be
 | 
						|
          a list.
 | 
						|
        </p>
 | 
						|
	  </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Number of Messages for index #N</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>The number of shared messages being tracked for the index.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Index Address for index #N</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This field is the address of the list or v2 B-tree where the
 | 
						|
          index nodes reside.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Fractal Heap Address for index #N</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This field is the address of the fractal heap if shared messages
 | 
						|
          are stored there.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Checksum</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the checksum for the table.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<p>
 | 
						|
  Shared messages are indexed either with a <em>shared message record
 | 
						|
    list</em>, described below, or using a v2 B-tree (using record type 7).
 | 
						|
  The number of records in the <em>shared message record list</em> is
 | 
						|
  determined in the index’s entry in the <em>shared object header message
 | 
						|
    table</em>.
 | 
						|
</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Shared Message Record List
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Signature</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Shared Message Record #0</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Shared Message Record #1</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">...</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Shared Message Record #N-1</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Checksum</td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Shared Message Record List
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Signature</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ASCII character string “<code>SMLI</code>”
 | 
						|
          is used to indicate the beginning of a list of index nodes.
 | 
						|
          This gives file consistency checking utilities a better
 | 
						|
          chance of reconstructing a damaged file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Shared Message Record #N</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The record for locating the shared message, either in the
 | 
						|
          fractal heap for the index, or an object header (see format for
 | 
						|
          <em>index nodes</em> below).
 | 
						|
	    </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Checksum</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the checksum for the list.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<p>
 | 
						|
  The record for each shared message in an index is stored in one
 | 
						|
  of the following forms:
 | 
						|
</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Shared Message Record for Messages Stored in a
 | 
						|
      Fractal Heap
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Message Location</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Hash Value</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Reference Count</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Fractal Heap ID<br /><br /></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Shared Message Record for Messages Stored in a
 | 
						|
      Fractal Heap
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Message Location</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This has a value of 0 indicating that the message is stored in
 | 
						|
          the heap.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Hash Value</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the hash value for the message.
 | 
						|
	    </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Reference Count</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the number of times the message is used in the file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Fractal Heap ID</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This is an 8-byte fractal heap ID for the message as stored in
 | 
						|
          the fractal heap for the index.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Shared Message Record for Messages Stored in an
 | 
						|
      Object Header
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Message Location</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Hash Value</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Reserved</td>
 | 
						|
      <td>Message Type</td>
 | 
						|
      <td colspan="2">Creation Index</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Object Header Address<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Shared Message Record for Messages Stored in an
 | 
						|
      Object Header
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Message Location</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This has a value of 1 indicating that the message is stored in
 | 
						|
          an object header.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Hash Value</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the hash value for the message.
 | 
						|
	    </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Message Type</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the message type in the object header.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Creation Index</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This is the creation index of the message within the object
 | 
						|
          header.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Object Header Address</p></td>
 | 
						|
      <td>
 | 
						|
	    <p>This is the address of the object header where the message is
 | 
						|
          located.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h2><a name="DataObject">
 | 
						|
    IV. Disk Format: Level 2 - Data Objects </a></h2>
 | 
						|
 | 
						|
<p>Data objects contain the “real” user-visible information in the file.
 | 
						|
  These objects compose the scientific data and other information which
 | 
						|
  are generally thought of as “data” by the end-user.  All the
 | 
						|
  other information in the file is provided as a framework for
 | 
						|
  storing and accessing these data objects.
 | 
						|
</p>
 | 
						|
 | 
						|
<p>A data object is composed of header and data
 | 
						|
  information.  The header information contains the information
 | 
						|
  needed to interpret the data information for the object as
 | 
						|
  well as additional “metadata” or pointers to additional
 | 
						|
  “metadata” used to describe or annotate each object.
 | 
						|
</p>
 | 
						|
 | 
						|
<h3><a name="ObjectHeader">
 | 
						|
    IV.A. Disk Format: Level 2A - Data Object Headers</a></h3>
 | 
						|
 | 
						|
<p>The header information of an object is designed to encompass
 | 
						|
  all of the information about an object, except for the data itself.
 | 
						|
  This information includes the dataspace, the datatype, information
 | 
						|
  about how the data is stored on disk (in external files, compressed,
 | 
						|
  broken up in blocks, and so on), as well as other information used
 | 
						|
  by the library to speed up access to the data objects or maintain
 | 
						|
  a file’s integrity. Information stored by user applications
 | 
						|
  as attributes is also stored in the object’s header. The header
 | 
						|
  of each object is not necessarily located immediately prior to the
 | 
						|
  object’s data in the file and in fact may be located in any
 | 
						|
  position in the file. The order of the messages in an object header
 | 
						|
  is not significant.</p>
 | 
						|
 | 
						|
<p>Object headers are composed of a prefix and a set of messages.  The
 | 
						|
  prefix contains the information needed to interpret the messages and
 | 
						|
  a small amount of metadata about the object, and the messages contain
 | 
						|
  the majority of the metadata about the object.
 | 
						|
</p>
 | 
						|
 | 
						|
<h3><a name="ObjectHeaderPrefix">
 | 
						|
    IV.A.1. Disk Format: Level 2A1 - Data Object Header Prefix</a></h3>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
<h4><a name="V1ObjectHeaderPrefix">
 | 
						|
    IV.A.1.a. Version 1 Data Object Header Prefix</a></h4>
 | 
						|
 | 
						|
<p>Header messages are aligned on 8-byte boundaries for version 1
 | 
						|
  object headers.
 | 
						|
</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Version 1 Object Header
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th>byte</th>
 | 
						|
	  <th>byte</th>
 | 
						|
	  <th>byte</th>
 | 
						|
	  <th>byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Version</td>
 | 
						|
	  <td>Reserved (zero)</td>
 | 
						|
	  <td colspan="2">Total Number of Header Messages</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Object Reference Count</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Object Header Size</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Reserved (zero)</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="2">Header Message Type #1</td>
 | 
						|
	  <td colspan="2">Size of Header Message Data #1</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Header Message #1 Flags</td>
 | 
						|
	  <td colspan="3">Reserved (zero)</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Header Message Data #1<br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="2">Header Message Type #n</td>
 | 
						|
	  <td colspan="2">Size of Header Message Data #n</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Header Message #n Flags</td>
 | 
						|
	  <td colspan="3">Reserved (zero)</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Header Message Data #n<br /><br /></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Version 1 Object Header
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Version</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This value is used to determine the format of the
 | 
						|
          information in the object header.  When the format of the
 | 
						|
          object header is changed, the version number
 | 
						|
          is incremented and can be used to determine how the
 | 
						|
          information in the object header is formatted.  This
 | 
						|
          is version one (1) (there was no version zero (0)) of the
 | 
						|
          object header.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Total Number of Header Messages</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This value determines the total number of messages listed in
 | 
						|
          object headers for this object.  This value includes the messages
 | 
						|
          in continuation messages for this object.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Object Reference Count</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This value specifies the number of “hard links” to this object
 | 
						|
          within the current file.  References to the object from external
 | 
						|
          files, “soft links” in this file and object references in this
 | 
						|
          file are not tracked.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Object Header Size</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This value specifies the number of bytes of header message data
 | 
						|
          following this length field that contain object header messages
 | 
						|
          for this object header.  This value does not include the size of
 | 
						|
          object header continuation blocks for this object elsewhere in the
 | 
						|
          file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Header Message #n Type</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This value specifies the type of information included in the
 | 
						|
          following header message data.  The message types for
 | 
						|
          header messages are defined in sections below.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Size of Header Message #n Data</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This value specifies the number of bytes of header
 | 
						|
          message data following the header message type and length
 | 
						|
          information for the current message. The size includes
 | 
						|
          padding bytes to make the message a multiple of eight
 | 
						|
          bytes.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Header Message #n Flags</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This is a bit field with the following definition:
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Bit</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td>If set, the message data is constant.  This is used
 | 
						|
                for messages like the datatype message of a dataset.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>1</code></td>
 | 
						|
              <td>If set, the message is <em>shared</em> and stored
 | 
						|
                in another location than the object header.  The Header
 | 
						|
                Message Data field contains a Shared Message
 | 
						|
                (described in the <a href="#ObjectHeaderMessages">Data Object Header Messages</a>
 | 
						|
                section below)
 | 
						|
                and the Size of Header Message Data field
 | 
						|
                contains the size of that Shared Message.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>2</code></td>
 | 
						|
              <td>If set, the message should not be shared.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>3</code></td>
 | 
						|
              <td>If set, the HDF5 decoder should fail to open this object
 | 
						|
                if it does not understand the message’s type and the file
 | 
						|
                is open with permissions allowing write access to the file.
 | 
						|
                (Normally, unknown messages can just be ignored by HDF5
 | 
						|
                decoders)
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>4</code></td>
 | 
						|
              <td>If set, the HDF5 decoder should set bit 5 of this
 | 
						|
                message’s flags (in other words, this bit field)
 | 
						|
                if it does not understand the message’s type
 | 
						|
                and the object is modified in any way. (Normally,
 | 
						|
                unknown messages can just be ignored by HDF5
 | 
						|
                decoders)
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>5</code></td>
 | 
						|
              <td>If set, this object was modified by software that did not
 | 
						|
                understand this message.
 | 
						|
                (Normally, unknown messages should just be ignored by HDF5
 | 
						|
                decoders)  (Can be used to invalidate an index or a similar
 | 
						|
                feature)
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>6</code></td>
 | 
						|
              <td>If set, this message is shareable.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>7</code></td>
 | 
						|
              <td>If set, the HDF5 decoder should always fail to open this
 | 
						|
                object if it does not understand the message’s type (whether
 | 
						|
                it is open for read-only or read-write access).  (Normally,
 | 
						|
                unknown messages can just be ignored by HDF5 decoders)
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
	    </table></p>
 | 
						|
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Header Message #n Data</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>The format and length of this field is determined by the
 | 
						|
          header message type and size respectively.  Some header
 | 
						|
          message types do not require any data and this information
 | 
						|
          can be eliminated by setting the length of the message to
 | 
						|
          zero. The data is padded with enough zeroes to make the
 | 
						|
          size a multiple of eight.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h4><a name="V2ObjectHeaderPrefix">
 | 
						|
    IV.A.1.b. Version 2 Data Object Header Prefix</a></h4>
 | 
						|
 | 
						|
<p>Note that the “total number of messages” field has been dropped from
 | 
						|
  the data object header prefix in this version.  The number of messages
 | 
						|
  in the data object header is just determined by the messages encountered
 | 
						|
  in all the object header blocks.</p>
 | 
						|
 | 
						|
<p>Note also that the fields and messages in this version of data object
 | 
						|
  headers have <em>no</em> alignment or padding bytes inserted - they are
 | 
						|
  stored packed together.</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Version 2 Object Header
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th>byte</th>
 | 
						|
	  <th>byte</th>
 | 
						|
	  <th>byte</th>
 | 
						|
	  <th>byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Signature</td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td>Version</td>
 | 
						|
	  <td>Flags</td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Access time <em>(optional)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Modification Time <em>(optional)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Change Time <em>(optional)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Birth Time <em>(optional)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="2">Maximum # of compact attributes <em>(optional)</em></td>
 | 
						|
	  <td colspan="2">Minimum # of dense attributes <em>(optional)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Size of Chunk #0 <em>(variable size)</em></td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Header Message Type #1</td>
 | 
						|
	  <td colspan="2">Size of Header Message Data #1</td>
 | 
						|
	  <td>Header Message #1 Flags</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="2">Header Message #1 Creation Order <em>(optional)</em></td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Header Message Data #1<br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Header Message Type #n</td>
 | 
						|
	  <td colspan="2">Size of Header Message Data #n</td>
 | 
						|
	  <td>Header Message #n Flags</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="2">Header Message #n Creation Order <em>(optional)</em></td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Header Message Data #n<br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Gap <em>(optional, variable size)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Checksum</td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Version 2 Object Header
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Signature</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>The ASCII character string “<code>OHDR</code>”
 | 
						|
          is used to indicate the beginning of an object header. This
 | 
						|
          gives file consistency checking utilities a better chance
 | 
						|
          of reconstructing a damaged file.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Version</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This field has a value of 2 indicating version 2 of the object header.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Flags</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This field is a bit field indicating additional information
 | 
						|
          about the object header.
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Bit(s)</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0-1</code></td>
 | 
						|
              <td>This two bit field determines the size of the
 | 
						|
                <em>Size of Chunk #0</em> field.  The values are:
 | 
						|
                <table class="list">
 | 
						|
                  <tr>
 | 
						|
                    <th width="20%" align="center">Value</th>
 | 
						|
                    <th width="80%" align="left">Description</th>
 | 
						|
                  </tr>
 | 
						|
 | 
						|
                  <tr>
 | 
						|
                    <td align="center"><code>0</code></td>
 | 
						|
                    <td>The <em>Size of Chunk #0</em> field is 1 byte.
 | 
						|
                    </td>
 | 
						|
                  </tr>
 | 
						|
                  <tr>
 | 
						|
                    <td align="center"><code>1</code></td>
 | 
						|
                    <td>The <em>Size of Chunk #0</em> field is 2 bytes.
 | 
						|
                    </td>
 | 
						|
                  </tr>
 | 
						|
                  <tr>
 | 
						|
                    <td align="center"><code>2</code></td>
 | 
						|
                    <td>The <em>Size of Chunk #0</em> field is 4 bytes.
 | 
						|
                    </td>
 | 
						|
                  </tr>
 | 
						|
                  <tr>
 | 
						|
                    <td align="center"><code>3</code></td>
 | 
						|
                    <td>The <em>Size of Chunk #0</em> field is 8 bytes.
 | 
						|
                    </td>
 | 
						|
                  </tr>
 | 
						|
                </table>
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>2</code></td>
 | 
						|
              <td>If set, attribute creation order is tracked.</td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>3</code></td>
 | 
						|
              <td>If set, attribute creation order is indexed.</td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>4</code></td>
 | 
						|
              <td>If set, non-default attribute storage phase change
 | 
						|
                values are stored.</td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>5</code></td>
 | 
						|
              <td>If set, access, modification, change and birth times
 | 
						|
                are stored.</td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>6-7</code></td>
 | 
						|
              <td>Reserved</td>
 | 
						|
            </tr>
 | 
						|
	    </table></p>
 | 
						|
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Access Time</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This 32-bit value represents the number of seconds after the
 | 
						|
          UNIX epoch when the object’s raw data was last accessed
 | 
						|
          (in other  words, read or written).
 | 
						|
        </p>
 | 
						|
	    <p>This field is present if bit 5 of <em>flags</em> is set.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Modification Time</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This 32-bit value represents the number of seconds after
 | 
						|
          the UNIX epoch when the object’s raw data was last
 | 
						|
          modified (in other words, written).
 | 
						|
        </p>
 | 
						|
	    <p>This field is present if bit 5 of <em>flags</em> is set.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Change Time</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This 32-bit value represents the number of seconds after the
 | 
						|
          UNIX epoch when the object’s metadata was last changed.
 | 
						|
        </p>
 | 
						|
	    <p>This field is present if bit 5 of <em>flags</em> is set.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Birth Time</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This 32-bit value represents the number of seconds after the
 | 
						|
          UNIX epoch when the object was created.
 | 
						|
        </p>
 | 
						|
	    <p>This field is present if bit 5 of <em>flags</em> is set.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Maximum # of compact attributes</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This is the maximum number of attributes to store in the compact
 | 
						|
          format before switching to the indexed format.
 | 
						|
        </p>
 | 
						|
	    <p>This field is present if bit 4 of <em>flags</em> is set.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Minimum # of dense attributes</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This is the minimum number of attributes to store in the indexed
 | 
						|
          format before switching to the compact format.
 | 
						|
        </p>
 | 
						|
	    <p>This field is present if bit 4 of <em>flags</em> is set.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Size of Chunk #0</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>
 | 
						|
          This unsigned value specifies the number of bytes of header
 | 
						|
          message data following this field that contain object header
 | 
						|
          information.
 | 
						|
        </p>
 | 
						|
        <p>
 | 
						|
          This value does not include the size of object header
 | 
						|
          continuation blocks for this object elsewhere in the file.
 | 
						|
        </p>
 | 
						|
        <p>
 | 
						|
	      The length of this field varies depending on bits 0 and 1 of
 | 
						|
	      the <em>flags</em> field.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Header Message #n Type</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>Same format as version 1 of the object header, described above.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Size of Header Message #n Data</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This value specifies the number of bytes of header
 | 
						|
          message data following the header message type and length
 | 
						|
          information for the current message. The size of messages
 | 
						|
          in this version does <em>not</em> include any padding bytes.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Header Message #n Flags</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>Same format as version 1 of the object header, described above.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Header Message #n Creation Order</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This field stores the order that a message of a given type
 | 
						|
          was created in.
 | 
						|
        </p>
 | 
						|
	    <p>This field is present if bit 2 of <em>flags</em> is set.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Header Message #n Data</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>Same format as version 1 of the object header, described above.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Gap</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>A gap in an object header chunk is inferred by the end of the
 | 
						|
          messages for the chunk before the beginning of the chunk’s
 | 
						|
          checksum.  Gaps are always smaller than the size of an
 | 
						|
          object header message prefix (message type + message size +
 | 
						|
          message flags).
 | 
						|
        </p>
 | 
						|
        <p>Gaps are formed when a message (typically an attribute message)
 | 
						|
          in an earlier chunk is deleted and a message from a later
 | 
						|
          chunk that does not quite fit into the free space is moved
 | 
						|
          into the earlier chunk.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Checksum</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the checksum for the object header chunk.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<p>The header message types and the message data associated with
 | 
						|
  them compose the critical “metadata” about each object.  Some
 | 
						|
  header messages are required for each object while others are
 | 
						|
  optional.  Some optional header messages may also be repeated
 | 
						|
  several times in the header itself, the requirements and number
 | 
						|
  of times allowed in the header will be noted in each header
 | 
						|
  message description below.
 | 
						|
</p>
 | 
						|
 | 
						|
 | 
						|
<h3><a name="ObjectHeaderMessages">
 | 
						|
    IV.A.2. Disk Format: Level 2A2 - Data Object Header Messages</a></h3>
 | 
						|
 | 
						|
<p>Data object header messages are small pieces of metadata that are
 | 
						|
  stored in the data object header for each object in an HDF5 file.
 | 
						|
  Data object header messages provide the metadata required to describe
 | 
						|
  an object and its contents, as well as optional pieces of metadata
 | 
						|
  that annotate the meaning or purpose of the object.
 | 
						|
</p>
 | 
						|
 | 
						|
<p>Data object header messages are either stored directly in the data
 | 
						|
  object header for the object or are shared between multiple objects
 | 
						|
  in the file.  When a message is shared, a flag in the <em>Message Flags</em>
 | 
						|
  indicates that the actual <em>Message Data</em>
 | 
						|
  portion of that message is stored in another location (such as another
 | 
						|
  data object header, or a heap in the file) and the <em>Message Data</em>
 | 
						|
  field contains the information needed to locate the actual information
 | 
						|
  for the message.
 | 
						|
</p>
 | 
						|
 | 
						|
<p>
 | 
						|
  The format of shared message data is described here:</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Shared Message (Version 1)
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Version</td>
 | 
						|
	  <td>Type</td>
 | 
						|
	  <td colspan="2">Reserved (zero)</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Reserved (zero)</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Shared Message (Version 1)
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Version</p></td>
 | 
						|
	  <td><p>The version number is used when there are changes in the format
 | 
						|
          of a shared object message and is described here:
 | 
						|
	      <table class="list">
 | 
						|
	        <tr>
 | 
						|
		      <th width="20%" align="center">Version</th>
 | 
						|
		      <th width="80%" align="left">Description</th>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>0</code></td>
 | 
						|
		      <td>Never used.</td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>1</code></td>
 | 
						|
		      <td>Used by the library before version 1.6.1.
 | 
						|
              </td>
 | 
						|
	        </tr>
 | 
						|
	    </table></p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Type</p></td>
 | 
						|
	  <td><p>The type of shared message location:
 | 
						|
	      <table class="list">
 | 
						|
	        <tr>
 | 
						|
		      <th width="20%" align="center">Value</th>
 | 
						|
		      <th width="80%" align="left">Description</th>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>0</code></td>
 | 
						|
		      <td>Message stored in another object’s header (a <em>committed</em>
 | 
						|
                message).
 | 
						|
              </td>
 | 
						|
	        </tr>
 | 
						|
	    </table></p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Address</p></td>
 | 
						|
	  <td><p>The address of the object header
 | 
						|
          containing the message to be shared.</p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
 | 
						|
    <caption>
 | 
						|
      Layout: Shared Message (Version 2)
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Version</td>
 | 
						|
	  <td>Type</td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Shared Message (Version 2)
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Version</p></td>
 | 
						|
	  <td><p>The version number is used when there are changes in the format
 | 
						|
          of a shared object message and is described here:
 | 
						|
	      <table class="list">
 | 
						|
	        <tr>
 | 
						|
		      <th width="20%" align="center">Version</th>
 | 
						|
		      <th width="80%" align="left">Description</th>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>2</code></td>
 | 
						|
		      <td>Used by the library of version 1.6.1 and after.
 | 
						|
              </td>
 | 
						|
	        </tr>
 | 
						|
	    </table></p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Type</p></td>
 | 
						|
	  <td><p>The type of shared message location:
 | 
						|
	      <table class="list">
 | 
						|
	        <tr>
 | 
						|
		      <th width="20%" align="center">Value</th>
 | 
						|
		      <th width="80%" align="left">Description</th>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>0</code></td>
 | 
						|
		      <td>Message stored in another object’s header (a <em>committed</em>
 | 
						|
                message).
 | 
						|
              </td>
 | 
						|
	        </tr>
 | 
						|
	    </table></p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Address</p></td>
 | 
						|
	  <td><p>The address of the object header
 | 
						|
          containing the message to be shared.</p></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Shared Message (Version 3)
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Version</td>
 | 
						|
	  <td>Type</td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Location <em>(variable size)</em></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Shared Message (Version 3)
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Version</p></td>
 | 
						|
	  <td><p>The version number indicates changes in the format of shared
 | 
						|
	      object message and is described here:
 | 
						|
	      <table class="list">
 | 
						|
	        <tr>
 | 
						|
		      <th width="20%" align="center">Version</th>
 | 
						|
		      <th width="80%" align="left">Description</th>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>3</code></td>
 | 
						|
		      <td>Used by the library of version 1.8 and after.  In this
 | 
						|
                version, the <em>Type</em> field can indicate that
 | 
						|
                the message is stored in the fractal heap.
 | 
						|
              </td>
 | 
						|
	        </tr>
 | 
						|
	    </table></p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Type</p></td>
 | 
						|
	  <td><p>The type of shared message location:
 | 
						|
	      <table class="list">
 | 
						|
	        <tr>
 | 
						|
		      <th width="20%" align="center">Value</th>
 | 
						|
		      <th width="80%" align="left">Description</th>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>0</code></td>
 | 
						|
		      <td>Message is not shared and is not shareable.
 | 
						|
              </td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>1</code></td>
 | 
						|
		      <td>Message stored in file’s <em>shared object header message</em>
 | 
						|
                heap (a <em>shared</em> message).
 | 
						|
              </td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>2</code></td>
 | 
						|
		      <td>Message stored in another object’s header (a <em>committed</em>
 | 
						|
                message).
 | 
						|
              </td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>3</code></td>
 | 
						|
		      <td>Message stored is not shared, but is shareable.
 | 
						|
              </td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	    </table></p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Location</p></td>
 | 
						|
	  <td><p>This field contains either a <a href="#SizeOfOffsetsV0">
 | 
						|
            <em>Size of Offsets</em></a>-bytes address of the object header
 | 
						|
          containing the message to be shared, or an 8-byte fractal heap
 | 
						|
          ID for the message in the file’s <em>shared object header
 | 
						|
            message</em> heap.
 | 
						|
	    </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
 | 
						|
<p>The following is a list of currently defined header messages:
 | 
						|
</p>
 | 
						|
 | 
						|
<h4><a name="NILMessage">IV.A.2.a. The NIL Message</a></h4>
 | 
						|
 | 
						|
<!-- start msgdesc table -->
 | 
						|
<center>
 | 
						|
  <table class="msgdesc">
 | 
						|
    <tr><td colspan="2"><b>Header Message Name:</b> NIL</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Header Message Type:</b> 0x0000</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Status:</b> Optional; may be repeated.</td></tr>
 | 
						|
    <tr><td><b>Description:</b></td>
 | 
						|
      <td>The NIL message is used to indicate a message which is to be
 | 
						|
        ignored when reading the header messages for a data object.
 | 
						|
        [Possibly one which has been deleted for some reason.]
 | 
						|
    </td></tr>
 | 
						|
    <tr><td colspan="2"><b>Format of Data:</b> Unspecified</td></tr>
 | 
						|
</table></center>
 | 
						|
<!-- end msgdesc table -->
 | 
						|
 | 
						|
 | 
						|
<h4><a name="DataspaceMessage">IV.A.2.b. The Dataspace Message</a></h4>
 | 
						|
 | 
						|
<!-- start msgdesc table -->
 | 
						|
<center>
 | 
						|
  <table class="msgdesc">
 | 
						|
    <tr><td colspan="2"><b>Header Message Name:</b> Dataspace</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Header Message Type:</b> 0x0001</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Length:</b> Varies according to the number of
 | 
						|
        dimensions, as described in the following table.</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Status:</b> Required for dataset objects;
 | 
						|
        may not be repeated.</td></tr>
 | 
						|
    <tr><td><b>Description:</b></td>
 | 
						|
      <td>The dataspace message describes the number of dimensions (in
 | 
						|
        other words, “rank”) and size of each dimension that
 | 
						|
        the data object has. This message is only used for datasets which
 | 
						|
        have a simple, rectilinear, array-like layout; datasets requiring
 | 
						|
        a more complex layout are not yet supported.
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr><td colspan="2"><b>Format of Data:</b> See the tables
 | 
						|
        below.</td></tr>
 | 
						|
</table></center>
 | 
						|
<!-- end msgdesc table -->
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Dataspace Message - Version 1
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th>byte</th>
 | 
						|
	  <th>byte</th>
 | 
						|
	  <th>byte</th>
 | 
						|
	  <th>byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Version</td>
 | 
						|
	  <td>Dimensionality</td>
 | 
						|
	  <td>Flags</td>
 | 
						|
	  <td>Reserved</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Reserved</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Dimension #1 Size<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Dimension #n Size<sup>L</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Dimension #1 Maximum Size<sup>L</sup> <em>(optional)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Dimension #n Maximum Size<sup>L</sup> <em>(optional)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Permutation Index #1<sup>L</sup> <em>(optional)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Permutation Index #n<sup>L</sup> <em>(optional)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘L’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
          of Lengths</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Dataspace Message - Version 1
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Version</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This value is used to determine the format of the
 | 
						|
	      Dataspace Message.  When the format of the
 | 
						|
	      information in the message is changed, the version number
 | 
						|
	      is incremented and can be used to determine how the
 | 
						|
	      information in the object header is formatted.  This
 | 
						|
          document describes version one (1) (there was no version
 | 
						|
          zero (0)).
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Dimensionality</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This value is the number of dimensions that the data
 | 
						|
	      object has.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Flags</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This field is used to store flags to indicate the
 | 
						|
	      presence of parts of this message.  Bit 0 (the least
 | 
						|
	      significant bit) is used to indicate that maximum
 | 
						|
	      dimensions are present.  Bit 1 is used to indicate that
 | 
						|
	      permutation indices are present.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Dimension #n Size</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This value is the current size of the dimension of the
 | 
						|
	      data as stored in the file.  The first dimension stored in
 | 
						|
	      the list of dimensions is the slowest changing dimension
 | 
						|
	      and the last dimension stored is the fastest changing
 | 
						|
	      dimension.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Dimension #n Maximum Size</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This value is the maximum size of the dimension of the
 | 
						|
	      data as stored in the file.  This value may be the special
 | 
						|
          “<a href="#UnlimitedDim">unlimited</a>” size which indicates
 | 
						|
	      that the data may expand along this dimension indefinitely.
 | 
						|
          If these values are not stored, the maximum size of each
 | 
						|
          dimension is assumed to be the dimension’s current size.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Permutation Index #n</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This value is the index permutation used to map
 | 
						|
	      each dimension from the canonical representation to an
 | 
						|
	      alternate axis for each dimension.  If these values are
 | 
						|
	      not stored, the first dimension stored in the list of
 | 
						|
	      dimensions is the slowest changing dimension and the last
 | 
						|
	      dimension stored is the fastest changing dimension.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
<br />
 | 
						|
<p>Version 2 of the dataspace message dropped the optional
 | 
						|
  permutation index value support, as it was never implemented in the
 | 
						|
  HDF5 Library:</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Dataspace Message - Version 2
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th>byte</th>
 | 
						|
	  <th>byte</th>
 | 
						|
	  <th>byte</th>
 | 
						|
	  <th>byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Version</td>
 | 
						|
	  <td>Dimensionality</td>
 | 
						|
	  <td>Flags</td>
 | 
						|
	  <td>Type</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Dimension #1 Size<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
    </tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Dimension #n Size<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Dimension #1 Maximum Size<sup>L</sup> <em>(optional)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
    </tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Dimension #n Maximum Size<sup>L</sup> <em>(optional)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘L’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
          of Lengths</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Dataspace Message - Version 2
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Version</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This value is used to determine the format of the
 | 
						|
          Dataspace Message.  This field should be ‘2’ for version 2
 | 
						|
          format messages.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Dimensionality</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This value is the number of dimensions that the data object has.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Flags</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This field is used to store flags to indicate the
 | 
						|
          presence of parts of this message.  Bit 0 (the least
 | 
						|
          significant bit) is used to indicate that maximum
 | 
						|
          dimensions are present.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Type</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This field indicates the type of the dataspace:
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Value</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td>A <em>scalar</em> dataspace; in other words,
 | 
						|
                a dataspace with a single, dimensionless element.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>1</code></td>
 | 
						|
              <td>A <em>simple</em> dataspace; in other words,
 | 
						|
                a dataspace with a rank greater than 0 and an
 | 
						|
                appropriate number of dimensions.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>2</code></td>
 | 
						|
              <td>A <em>null</em> dataspace; in other words,
 | 
						|
                a dataspace with no elements.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
        </table></p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Dimension #n Size</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This value is the current size of the dimension of the
 | 
						|
          data as stored in the file.  The first dimension stored in
 | 
						|
          the list of dimensions is the slowest changing dimension
 | 
						|
          and the last dimension stored is the fastest changing
 | 
						|
          dimension.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Dimension #n Maximum Size</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This value is the maximum size of the dimension of the
 | 
						|
          data as stored in the file.  This value may be the special
 | 
						|
          “<a href="#UnlimitedDim">unlimited</a>” size which indicates
 | 
						|
          that the data may expand along this dimension indefinitely.
 | 
						|
          If these values are not stored, the maximum size of each
 | 
						|
          dimension is assumed to be the dimension’s current size.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
<!--
 | 
						|
    <h4><a name="DataSpaceMessage">Header Message Name: Complex Dataspace (Fiber Bundle?)</a></h4>
 | 
						|
 | 
						|
    <!-- start msgdesc table --
 | 
						|
         <center>
 | 
						|
           <table class="msgdesc">
 | 
						|
             <p><b>Header Message Name: ???????</b></td></tr>
 | 
						|
<b>Header Message Type: </b>0x0002<br />
 | 
						|
<b>Length:</b> Varies</td></tr>
 | 
						|
 | 
						|
<b>Status:</b> One of the <em>Simple Dataspace</em> or
 | 
						|
<em>Complex Dataspace</em> messages is required (but not both) and may
 | 
						|
not be repeated.<br /> <b>Description:</b> The
 | 
						|
<em>Dataspace</em> message describes space that the dataset is
 | 
						|
mapped onto in a more comprehensive way than the <em>Simple
 | 
						|
  Dimensionality</em> message is capable of handling.  The
 | 
						|
dataspace of a dataset encompasses the type of coordinate system
 | 
						|
used to locate the dataset’s elements as well as the structure and
 | 
						|
regularity of the coordinate system.  The dataspace also
 | 
						|
describes the number of dimensions which the dataset inhabits as
 | 
						|
well as a possible higher dimensional space in which the dataset
 | 
						|
is located within.
 | 
						|
 | 
						|
<br />
 | 
						|
<p><b>Format of Data:</b></p>
 | 
						|
 | 
						|
<center>
 | 
						|
  <table border cellpadding="4" width="80%">
 | 
						|
	<caption align="bottom">
 | 
						|
	  <b>HDF5 Dataspace Message Layout</b>
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr align="center">
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr align="center">
 | 
						|
	  <td colspan="4">Mesh Type</td>
 | 
						|
    </tr>
 | 
						|
	<tr align="center">
 | 
						|
	  <td colspan="4">Logical Dimensionality</td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</center>
 | 
						|
 | 
						|
<br />
 | 
						|
<dl>
 | 
						|
  <dt>The elements of the dimensionality message are described below:
 | 
						|
    <dd>
 | 
						|
	  <dl>
 | 
						|
	    <dt>Mesh Type: (unsigned 32-bit integer)
 | 
						|
	      <dd>This value indicates whether the grid is
 | 
						|
	        polar/spherical/cartesion,
 | 
						|
	        structured/unstructured and regular/irregular. <br />
 | 
						|
	        The mesh type value is broken up as follows: <br />
 | 
						|
 | 
						|
	        <br />
 | 
						|
	        <center>
 | 
						|
	          <table border cellpadding="4" width="80%">
 | 
						|
		        <caption align="bottom">
 | 
						|
		          <b>HDF5 Mesh-type Layout</b>
 | 
						|
	            </caption>
 | 
						|
 | 
						|
		        <tr align="center">
 | 
						|
		          <th width="25%">byte</th>
 | 
						|
		          <th width="25%">byte</th>
 | 
						|
		          <th width="25%">byte</th>
 | 
						|
		          <th width="25%">byte</th>
 | 
						|
                </tr>
 | 
						|
 | 
						|
		        <tr align="center">
 | 
						|
		          <td colspan="1">Mesh Embedding</td>
 | 
						|
		          <td colspan="1">Coordinate System</td>
 | 
						|
		          <td colspan="1">Structure</td>
 | 
						|
		          <td colspan="1">Regularity</td>
 | 
						|
                </tr>
 | 
						|
	          </table>
 | 
						|
	        </center>
 | 
						|
	        The following are the definitions of mesh-type bytes:
 | 
						|
	        <dl>
 | 
						|
	          <dt>Mesh Embedding
 | 
						|
	            <dd>This value indicates whether the dataset dataspace
 | 
						|
		          is located within
 | 
						|
		          another dataspace or not:
 | 
						|
		          <dl> <dl>
 | 
						|
		              <dt><STANDALONE>
 | 
						|
		                <dd>The dataset mesh is self-contained and is not
 | 
						|
		                  embedded in another mesh.
 | 
						|
		                  <dt><EMBEDDED>
 | 
						|
		                    <dd>The dataset’s dataspace is located within
 | 
						|
		                      another dataspace, as
 | 
						|
		                      described in information below.
 | 
						|
		          </dl> </dl>
 | 
						|
	              <dt>Coordinate System
 | 
						|
	                <dd>This value defines the type of coordinate system
 | 
						|
		              used for the mesh:
 | 
						|
		              <dl> <dl>
 | 
						|
		                  <dt><POLAR>
 | 
						|
		                    <dd>The last two dimensions are in polar
 | 
						|
		                      coordinates, higher dimensions are
 | 
						|
		                      cartesian.
 | 
						|
		                      <dt><SPHERICAL>
 | 
						|
		                        <dd>The last three dimensions are in spherical
 | 
						|
		                          coordinates, higher dimensions
 | 
						|
		                          are cartesian.
 | 
						|
		                          <dt><CARTESIAN>
 | 
						|
		                            <dd>All dimensions are in cartesian coordinates.
 | 
						|
		              </dl> </dl>
 | 
						|
	                  <dt>Structure
 | 
						|
	                    <dd>This value defines the locations of the grid-points
 | 
						|
		                  on the axes:
 | 
						|
		                  <dl> <dl>
 | 
						|
		                      <dt><STRUCTURED>
 | 
						|
		                        <dd>All grid-points are on integral, sequential
 | 
						|
		                          locations, starting from 0.
 | 
						|
		                          <dt><UNSTRUCTURED>
 | 
						|
		                            <dd>Grid-points locations in each dimension are
 | 
						|
		                              explicitly defined and
 | 
						|
		                              may be of any numeric datatype.
 | 
						|
		                  </dl> </dl>
 | 
						|
	                      <dt>Regularity
 | 
						|
	                        <dd>This value defines the locations of the dataset
 | 
						|
		                      points on the grid:
 | 
						|
		                      <dl> <dl>
 | 
						|
		                          <dt><REGULAR>
 | 
						|
		                            <dd>All dataset elements are located at the
 | 
						|
		                              grid-points defined.
 | 
						|
		                              <dt><IRREGULAR>
 | 
						|
		                                <dd>Each dataset element has a particular
 | 
						|
		                                  grid-location defined.
 | 
						|
		                      </dl> </dl>
 | 
						|
	        </dl>
 | 
						|
	        <p>The following grid combinations are currently allowed:</p>
 | 
						|
	        <dl> <dl>
 | 
						|
		        <dt><POLAR-STRUCTURED-REGULAR>
 | 
						|
		        <dt><SPHERICAL-STRUCTURED-REGULAR>
 | 
						|
		        <dt><CARTESIAN-STRUCTURED-REGULAR>
 | 
						|
		        <dt><POLAR-UNSTRUCTURED-REGULAR>
 | 
						|
		        <dt><SPHERICAL-UNSTRUCTURED-REGULAR>
 | 
						|
		        <dt><CARTESIAN-UNSTRUCTURED-REGULAR>
 | 
						|
		        <dt><CARTESIAN-UNSTRUCTURED-IRREGULAR>
 | 
						|
	        </dl> </dl>
 | 
						|
	        All of the above grid types can be embedded within another
 | 
						|
	        dataspace.
 | 
						|
	        <br /> <br />
 | 
						|
	        <dt>Logical Dimensionality: (unsigned 32-bit integer)
 | 
						|
	          <dd>This value is the number of dimensions that the dataset occupies.
 | 
						|
 | 
						|
	            <br />
 | 
						|
	            <center>
 | 
						|
	              <table border cellpadding="4" width="80%">
 | 
						|
		            <caption align="bottom">
 | 
						|
		              <b>HDF5 Dataspace Embedded Dimensionality Information</b>
 | 
						|
	                </caption>
 | 
						|
 | 
						|
		            <tr align="center">
 | 
						|
		              <th width="25%">byte</th>
 | 
						|
		              <th width="25%">byte</th>
 | 
						|
		              <th width="25%">byte</th>
 | 
						|
		              <th width="25%">byte</th>
 | 
						|
                    </tr>
 | 
						|
 | 
						|
		            <tr align="center">
 | 
						|
		              <td colspan="4">Embedded Dimensionality</td>
 | 
						|
                    </tr>
 | 
						|
		            <tr align="center">
 | 
						|
		              <td colspan="4">Embedded Dimension Size #1</td>
 | 
						|
                    </tr>
 | 
						|
		            <tr align="center">
 | 
						|
		              <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
                    </tr>
 | 
						|
		            <tr align="center">
 | 
						|
		              <td colspan="4">Embedded Dimension Size #n</td>
 | 
						|
                    </tr>
 | 
						|
		            <tr align="center">
 | 
						|
		              <td colspan="4">Embedded Origin Location #1</td>
 | 
						|
                    </tr>
 | 
						|
		            <tr align="center">
 | 
						|
		              <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
                    </tr>
 | 
						|
		            <tr align="center">
 | 
						|
		              <td colspan="4">Embedded Origin Location #n</td>
 | 
						|
                    </tr>
 | 
						|
	              </table>
 | 
						|
	            </center>
 | 
						|
 | 
						|
	            <dt>Embedded Dimensionality: (unsigned 32-bit integer)
 | 
						|
	              <dd>This value is the number of dimensions of the space the
 | 
						|
	                dataset is located within: in other words, a planar dataset
 | 
						|
                    located within a 3-D space, a 3-D dataset
 | 
						|
	                which is a subset of another 3-D space, and so on.
 | 
						|
	                <dt>Embedded Dimension Size: (unsigned 32-bit integer)
 | 
						|
	                  <dd>These values are the sizes of the dimensions of the
 | 
						|
	                    embedded dataspace
 | 
						|
	                    that the dataset is located within.
 | 
						|
	                    <dt>Embedded Origin Location: (unsigned 32-bit integer)
 | 
						|
	                      <dd>These values comprise the location of the dataset’s
 | 
						|
	                        origin within the embedded dataspace.
 | 
						|
	  </dl>
 | 
						|
</dl>
 | 
						|
[Comment: need some way to handle different orientations of the
 | 
						|
dataset dataspace
 | 
						|
within the embedded dataspace]<br />
 | 
						|
 | 
						|
<br />
 | 
						|
<center>
 | 
						|
  <table border cellpadding="4" width="80%">
 | 
						|
	<caption align="bottom">
 | 
						|
	  <b>HDF5 Dataspace Structured/Regular Grid Information</b>
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr align="center">
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr align="center">
 | 
						|
	  <td colspan="4">Logical Dimension Size #1</td>
 | 
						|
    </tr>
 | 
						|
	<tr align="center">
 | 
						|
	  <td colspan="4">Logical Dimension Maximum #1</td>
 | 
						|
    </tr>
 | 
						|
	<tr align="center">
 | 
						|
	  <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
    </tr>
 | 
						|
	<tr align="center">
 | 
						|
	  <td colspan="4">Logical Dimension Size #n</td>
 | 
						|
    </tr>
 | 
						|
	<tr align="center">
 | 
						|
	  <td colspan="4">Logical Dimension Maximum #n</td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</center>
 | 
						|
 | 
						|
<br />
 | 
						|
<dl>
 | 
						|
  <dt>The elements of the dimensionality message are described below:
 | 
						|
    <dd>
 | 
						|
	  <dl>
 | 
						|
	    <dt>Logical Dimension Size #n: (unsigned 32-bit integer)
 | 
						|
	      <dd>This value is the current size of the dimension of the
 | 
						|
	        data as stored in
 | 
						|
	        the file.  The first dimension stored in the list of
 | 
						|
	        dimensions is the slowest
 | 
						|
	        changing dimension and the last dimension stored is the
 | 
						|
	        fastest changing
 | 
						|
	        dimension.
 | 
						|
	        <dt>Logical Dimension Maximum #n: (unsigned 32-bit integer)
 | 
						|
	          <dd>This value is the maximum size of the dimension of the
 | 
						|
	            data as stored in
 | 
						|
	            the file.  This value may be the special value
 | 
						|
	            <UNLIMITED> which
 | 
						|
	            indicates that the data may expand along this dimension
 | 
						|
	            indefinitely.
 | 
						|
	  </dl>
 | 
						|
</dl>
 | 
						|
<br />
 | 
						|
<center>
 | 
						|
  <table border cellpadding="4" width="80%">
 | 
						|
	<caption align="bottom">
 | 
						|
	  <b>HDF5 Dataspace Structured/Irregular Grid Information</b>
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr align="center">
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr align="center">
 | 
						|
	  <td colspan="4"># of Grid Points in Dimension #1</td>
 | 
						|
    </tr>
 | 
						|
	<tr align="center">
 | 
						|
	  <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
    </tr>
 | 
						|
	<tr align="center">
 | 
						|
	  <td colspan="4"># of Grid Points in Dimension #n</td>
 | 
						|
    </tr>
 | 
						|
	<tr align="center">
 | 
						|
	  <td colspan="4">Datatype of Grid Point Locations</td>
 | 
						|
    </tr>
 | 
						|
	<tr align="center">
 | 
						|
	  <td colspan="4">Location of Grid Points in Dimension #1</td>
 | 
						|
    </tr>
 | 
						|
	<tr align="center">
 | 
						|
	  <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
    </tr>
 | 
						|
	<tr align="center">
 | 
						|
	  <td colspan="4">Location of Grid Points in Dimension #n</td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</center>
 | 
						|
 | 
						|
<br />
 | 
						|
<center>
 | 
						|
  <table border cellpadding="4" width="80%">
 | 
						|
	<caption align="bottom">
 | 
						|
	  <b>HDF5 Dataspace Unstructured Grid Information</b>
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr align="center">
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr align="center">
 | 
						|
	  <td colspan="4"># of Grid Points</td>
 | 
						|
    </tr>
 | 
						|
	<tr align="center">
 | 
						|
	  <td colspan="4">Datatype of Grid Point Locations</td>
 | 
						|
    </tr>
 | 
						|
	<tr align="center">
 | 
						|
	  <td colspan="4">Grid Point Locations<br />.<br />.<br /></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</center>
 | 
						|
-->
 | 
						|
 | 
						|
<h4><a name="LinkInfoMessage">IV.A.2.c. The Link Info Message</a></h4>
 | 
						|
 | 
						|
<!-- start msgdesc table -->
 | 
						|
<center>
 | 
						|
  <table class="msgdesc">
 | 
						|
    <tr><td colspan="2"><b>Header Message Name:</b> Link Info</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Header Message Type:</b> 0x002 </td></tr>
 | 
						|
    <tr><td colspan="2"><b>Length:</b> Varies </td></tr>
 | 
						|
    <tr><td colspan="2"><b>Status:</b> Optional; may not be
 | 
						|
        repeated. </td></tr>
 | 
						|
    <tr><td><b>Description:</b></td>
 | 
						|
      <td>The link info message tracks variable information about the
 | 
						|
        current state of the links for a “new style”
 | 
						|
        group’s behavior. Variable information will be stored in
 | 
						|
        this message and constant information will be stored in the
 | 
						|
        <a href="#GroupInfoMessage">Group Info</a> message.
 | 
						|
    </td></tr>
 | 
						|
    <tr><td colspan="2"><b>Format of Data:</b> See the tables
 | 
						|
        below.</td></tr>
 | 
						|
</table></center>
 | 
						|
<!-- end msgdesc table -->
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Link Info
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Version</td>
 | 
						|
	  <td>Flags</td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Maximum Creation Index <em>(8 bytes, optional)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Fractal Heap Address<sup>O</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Address of v2 B-tree for Name Index<sup>O</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Address of v2 B-tree for Creation Order Index<sup>O</sup> <em>(optional)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Link Info
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Version</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>The version number for this message. This document describes
 | 
						|
          version 0.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Flags</p></td>
 | 
						|
	  <td><p>This field determines various optional aspects of the link
 | 
						|
          info message:
 | 
						|
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Bit</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td>If set, creation order for the links is tracked.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>1</code></td>
 | 
						|
              <td>If set, creation order for the links is indexed.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>2-7</code></td>
 | 
						|
              <td>Reserved</td>
 | 
						|
            </tr>
 | 
						|
	    </table></p>
 | 
						|
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Maximum Creation Index</p></td>
 | 
						|
	  <td><p>This 64-bit value is the maximum creation order index value
 | 
						|
          stored for a link in this group.</p>
 | 
						|
	    <p>This field is present if bit 0 of <em>flags</em> is set.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Fractal Heap Address</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>
 | 
						|
          This is the address of the fractal heap to store dense links.
 | 
						|
          Each link stored in the fractal heap is stored as a
 | 
						|
          <a href="#LinkMessage">Link Message</a>.
 | 
						|
        </p>
 | 
						|
        <p>
 | 
						|
          If there are no links in the group, or the group’s links
 | 
						|
          are stored “compactly” (as object header messages), this
 | 
						|
          value will be the <a href="#UndefinedAddress">undefined
 | 
						|
            address</a>.
 | 
						|
        </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Address of v2 B-tree for Name Index</p></td>
 | 
						|
	  <td><p>This is the address of the version 2 B-tree to index names of links.</p>
 | 
						|
        <p>If there are no links in the group, or the group’s links
 | 
						|
          are stored “compactly” (as object header messages), this
 | 
						|
          value will be the <a href="#UndefinedAddress">undefined
 | 
						|
            address</a>.
 | 
						|
        </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Address of v2 B-tree for Creation Order Index</p></td>
 | 
						|
	  <td><p>This is the address of the version 2 B-tree to index creation order of links.</p>
 | 
						|
        <p>If there are no links in the group, or the group’s links
 | 
						|
          are stored “compactly” (as object header messages), this
 | 
						|
          value will be the <a href="#UndefinedAddress">undefined
 | 
						|
            address</a>.
 | 
						|
        </p>
 | 
						|
	    <p>This field exists if bit 1 of <em>flags</em> is set.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
 | 
						|
<h4><a name="DatatypeMessage">IV.A.2.d. The Datatype Message</a></h4>
 | 
						|
 | 
						|
<!-- start msgdesc table -->
 | 
						|
<center>
 | 
						|
  <table class="msgdesc">
 | 
						|
    <tr><td colspan="2"><b>Header Message Name:</b> Datatype</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Header Message Type:</b> 0x0003
 | 
						|
    </td></tr>
 | 
						|
    <tr><td colspan="2"><b>Length:</b> Variable</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Status:</b> Required for dataset or committed
 | 
						|
        datatype (formerly named datatype) objects; may not be repeated.
 | 
						|
    </td></tr>
 | 
						|
    <tr><td><b>Description:</b></td>
 | 
						|
      <td><p>The datatype message defines the datatype for each element
 | 
						|
          of a dataset or a common datatype for sharing between multiple
 | 
						|
          datasets.  A datatype can describe an atomic type like a fixed-
 | 
						|
          or floating-point type or more complex types like a C struct
 | 
						|
          (compound datatype), array (array datatype), or C++ vector
 | 
						|
          (variable-length datatype).</p>
 | 
						|
        <p>Datatype messages that are part of a dataset object do not
 | 
						|
          describe how elements are related to one another; the dataspace
 | 
						|
          message is used for that purpose. Datatype messages that are part of
 | 
						|
          a committed datatype (formerly named datatype) message describe
 | 
						|
          a common datatype that can be shared by multiple datasets in the
 | 
						|
          file.</p>
 | 
						|
    </td></tr>
 | 
						|
    <tr><td colspan="2"><b>Format of Data:</b> See the tables
 | 
						|
        below.</td></tr>
 | 
						|
</table></center>
 | 
						|
<!-- end msgdesc table -->
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Datatype Message
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Class and Version</td>
 | 
						|
	  <td>Class Bit Field, Bits 0-7</td>
 | 
						|
	  <td>Class Bit Field, Bits 8-15</td>
 | 
						|
	  <td>Class Bit Field, Bits 16-23</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Size</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br /><br />Properties<br /><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Datatype Message
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Class and Version</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>The version of the datatype message and the datatype’s class
 | 
						|
          information are packed together in this field.  The version
 | 
						|
          number is packed in the top 4 bits of the field and the class
 | 
						|
          is contained in the bottom 4 bits.
 | 
						|
        </p>
 | 
						|
        <p>The version number information is used for changes in the
 | 
						|
          format of the datatype message and is described here:
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Version</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td>Never used
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>1</code></td>
 | 
						|
              <td>Used by early versions of the library to encode
 | 
						|
                compound datatypes with explicit array fields.
 | 
						|
                See the compound datatype description below for
 | 
						|
                further details.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>2</code></td>
 | 
						|
              <td>Used when an array datatype needs to be encoded.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>3</code></td>
 | 
						|
              <td>Used when a VAX byte-ordered type needs to be
 | 
						|
                encoded.  Packs various other datatype classes more
 | 
						|
                efficiently also.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>4</code></td>
 | 
						|
              <td>Used to encode the revised reference datatype.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
        </table></p>
 | 
						|
 | 
						|
        <p>The class of the datatype determines the format for the class
 | 
						|
          bit field and properties portion of the datatype message, which
 | 
						|
          are described below.  The
 | 
						|
          following classes are currently defined:
 | 
						|
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Value</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td><a href="#ClassFixedPoint">Fixed-Point</a></td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>1</code></td>
 | 
						|
              <td><a href="#ClassFloatingPoint">Floating-Point</a></td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>2</code></td>
 | 
						|
              <td> <a href="#ClassTime">Time</a></td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>3</code></td>
 | 
						|
              <td><a href="#ClassString">String</a></td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>4</code></td>
 | 
						|
              <td><a href="#ClassBitField">Bit field</a></td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>5</code></td>
 | 
						|
              <td><a href="#ClassOpaque">Opaque</a></td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>6</code></td>
 | 
						|
              <td><a href="#ClassCompound">Compound</a></td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>7</code></td>
 | 
						|
              <td><a href="#ClassReference">Reference</a></td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>8</code></td>
 | 
						|
              <td><a href="#ClassEnum">Enumerated</a></td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>9</code></td>
 | 
						|
              <td><a href="#ClassVarLen">Variable-Length</a></td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>10</code></td>
 | 
						|
              <td><a href="#ClassArray">Array</a></td>
 | 
						|
            </tr>
 | 
						|
        </table></p>
 | 
						|
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Class Bit Fields</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>The information in these bit fields is specific to each datatype
 | 
						|
          class and is described below.  All bits not defined for a
 | 
						|
          datatype class are set to zero.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Size</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>The size of a datatype element in bytes.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Properties</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This variable-sized sequence of bytes encodes information
 | 
						|
          specific to each datatype class and is described for each class
 | 
						|
          below.  If there is no property information specified for a
 | 
						|
          datatype class, the size of this field is zero bytes.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<a name="ClassFixedPoint"></a>
 | 
						|
  <p>Class specific information for the Fixed-point Numbers class
 | 
						|
    (Class 0):</p>
 | 
						|
 | 
						|
  <div align="center">
 | 
						|
    <table class="desc">
 | 
						|
      <caption>
 | 
						|
        Bits: Fixed-point Bit Field Description
 | 
						|
      </caption>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <th width="10%">Bits</th>
 | 
						|
	    <th>Meaning</th>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>0</p></td>
 | 
						|
	    <td><p><b>Byte Order.</b> If zero, byte order is little-endian;
 | 
						|
	        otherwise, byte order is big endian.</p></td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>1, 2</p></td>
 | 
						|
	    <td><p><b>Padding type.</b>  Bit 1 is the lo_pad bit and bit 2
 | 
						|
	        is the hi_pad bit.  If a datum has unused bits at either
 | 
						|
	        end, then the lo_pad or hi_pad bit is copied to those
 | 
						|
	        locations.</p></td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>3</p></td>
 | 
						|
	    <td><p><b>Signed.</b> If this bit is set then the fixed-point
 | 
						|
	        number is in 2’s complement form.</p></td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>4-23</p></td>
 | 
						|
	    <td><p>Reserved (zero).</p></td>
 | 
						|
	  </tr>
 | 
						|
    </table>
 | 
						|
  </div>
 | 
						|
 | 
						|
  <br />
 | 
						|
  <div align="center">
 | 
						|
    <table class="format">
 | 
						|
      <caption>
 | 
						|
        Layout: Fixed-point Property Description
 | 
						|
      </caption>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <th width="25%">Byte</th>
 | 
						|
	    <th width="25%">Byte</th>
 | 
						|
	    <th width="25%">Byte</th>
 | 
						|
	    <th width="25%">Byte</th>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="2">Bit Offset</td>
 | 
						|
	    <td colspan="2">Bit Precision</td>
 | 
						|
	  </tr>
 | 
						|
    </table>
 | 
						|
  </div>
 | 
						|
 | 
						|
  <br />
 | 
						|
  <div align="center">
 | 
						|
    <table class="desc">
 | 
						|
      <caption>
 | 
						|
        Fields: Fixed-point Property Description
 | 
						|
      </caption>
 | 
						|
	  <tr>
 | 
						|
        <th width="30%">Field Name</th>
 | 
						|
        <th>Description</th>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>Bit Offset</p></td>
 | 
						|
	    <td>
 | 
						|
          <p>The bit offset of the first significant bit of the fixed-point
 | 
						|
            value within the datatype.  The bit offset specifies the number
 | 
						|
            of bits “to the right of” the value (which are set to the
 | 
						|
            lo_pad bit value).
 | 
						|
          </p>
 | 
						|
        </td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>Bit Precision</p></td>
 | 
						|
	    <td>
 | 
						|
          <p>The number of bits of precision of the fixed-point value
 | 
						|
            within the datatype.  This value, combined with the datatype
 | 
						|
            element’s size and the Bit Offset field specifies the number
 | 
						|
            of bits “to the left of” the value (which are set to the
 | 
						|
            hi_pad bit value).
 | 
						|
          </p>
 | 
						|
        </td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
    </table>
 | 
						|
  </div>
 | 
						|
 | 
						|
 | 
						|
  <br />
 | 
						|
  <br />
 | 
						|
  <a name="ClassFloatingPoint"></a>
 | 
						|
    <p>Class specific information for the Floating-point Numbers class
 | 
						|
      (Class 1):</p>
 | 
						|
 | 
						|
    <div align="center">
 | 
						|
      <table class="desc">
 | 
						|
        <caption>
 | 
						|
          Bits: Floating-point Bit Field Description
 | 
						|
        </caption>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <th width="10%">Bits</th>
 | 
						|
	      <th>Meaning</th>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>0, 6</p></td>
 | 
						|
	      <td><p><b>Byte Order.</b> These two non-contiguous bits specify the
 | 
						|
              “endianness” of the bytes in the datatype element.
 | 
						|
              <table class="list">
 | 
						|
                <tr>
 | 
						|
                  <th width="10%" align="center">Bit 6</th>
 | 
						|
                  <th width="10%" align="center">Bit 0</th>
 | 
						|
                  <th width="80%" align="left">Description</th>
 | 
						|
                </tr>
 | 
						|
 | 
						|
                <tr>
 | 
						|
                  <td align="center"><code>0</code></td>
 | 
						|
                  <td align="center"><code>0</code></td>
 | 
						|
                  <td>Byte order is little-endian
 | 
						|
                  </td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center"><code>0</code></td>
 | 
						|
                  <td align="center"><code>1</code></td>
 | 
						|
                  <td>Byte order is big-endian
 | 
						|
                  </td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center"><code>1</code></td>
 | 
						|
                  <td align="center"><code>0</code></td>
 | 
						|
                  <td>Reserved
 | 
						|
                  </td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center"><code>1</code></td>
 | 
						|
                  <td align="center"><code>1</code></td>
 | 
						|
                  <td>Byte order is VAX-endian
 | 
						|
                  </td>
 | 
						|
                </tr>
 | 
						|
            </table></p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>1, 2, 3</p></td>
 | 
						|
	      <td><p><b>Padding type.</b>  Bit 1 is the low bits pad type, bit 2
 | 
						|
	          is the high bits pad type, and bit 3 is the internal bits
 | 
						|
	          pad type.  If a datum has unused bits at either end or between
 | 
						|
	          the sign bit, exponent, or mantissa, then the value of bit
 | 
						|
	          1, 2, or 3 is copied to those locations.</p></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>4-5</p></td>
 | 
						|
	      <td><p><b>Mantissa Normalization.</b> This 2-bit bit field specifies
 | 
						|
              how the most significant bit of the mantissa is managed.
 | 
						|
              <table class="list">
 | 
						|
                <tr>
 | 
						|
                  <th width="20%" align="center">Value</th>
 | 
						|
                  <th width="80%" align="left">Description</th>
 | 
						|
                </tr>
 | 
						|
 | 
						|
                <tr>
 | 
						|
                  <td align="center"><code>0</code></td>
 | 
						|
                  <td>No normalization
 | 
						|
                  </td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center"><code>1</code></td>
 | 
						|
                  <td>The most significant bit of the mantissa is always set
 | 
						|
                    (except for 0.0).
 | 
						|
                  </td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center"><code>2</code></td>
 | 
						|
                  <td>The most significant bit of the mantissa is not stored,
 | 
						|
                    but is implied to be set.
 | 
						|
                  </td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center"><code>3</code></td>
 | 
						|
                  <td>Reserved.
 | 
						|
                  </td>
 | 
						|
                </tr>
 | 
						|
            </table></p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>7</p></td>
 | 
						|
	      <td><p>Reserved (zero).</p></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>8-15</p></td>
 | 
						|
	      <td><p><b>Sign Location.</b> This is the bit position of the sign
 | 
						|
	          bit.  Bits are numbered with the least significant bit zero.</p></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>16-23</p></td>
 | 
						|
	      <td><p>Reserved (zero).</p></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
      </table>
 | 
						|
    </div>
 | 
						|
 | 
						|
    <br />
 | 
						|
    <div align="center">
 | 
						|
      <table class="format">
 | 
						|
        <caption>
 | 
						|
          Layout: Floating-point Property Description
 | 
						|
        </caption>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <th width="25%">Byte</th>
 | 
						|
	      <th width="25%">Byte</th>
 | 
						|
	      <th width="25%">Byte</th>
 | 
						|
	      <th width="25%">Byte</th>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="2">Bit Offset</td>
 | 
						|
	      <td colspan="2">Bit Precision</td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td>Exponent Location</td>
 | 
						|
	      <td>Exponent Size</td>
 | 
						|
	      <td>Mantissa Location</td>
 | 
						|
	      <td>Mantissa Size</td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4">Exponent Bias</td>
 | 
						|
	    </tr>
 | 
						|
      </table>
 | 
						|
    </div>
 | 
						|
 | 
						|
    <br />
 | 
						|
    <div align="center">
 | 
						|
      <table class="desc">
 | 
						|
        <caption>
 | 
						|
          Fields: Floating-point Property Description
 | 
						|
        </caption>
 | 
						|
	    <tr>
 | 
						|
          <th width="30%">Field Name</th>
 | 
						|
          <th>Description</th>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Bit Offset</p></td>
 | 
						|
	      <td>
 | 
						|
            <p>The bit offset of the first significant bit of the floating-point
 | 
						|
              value within the datatype.  The bit offset specifies the number
 | 
						|
              of bits “to the right of” the value.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Bit Precision</p></td>
 | 
						|
	      <td>
 | 
						|
            <p>The number of bits of precision of the floating-point value
 | 
						|
              within the datatype.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Exponent Location</p></td>
 | 
						|
	      <td>
 | 
						|
            <p>The bit position of the exponent field.  Bits are numbered with
 | 
						|
              the least significant bit number zero.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Exponent Size</p></td>
 | 
						|
	      <td>
 | 
						|
            <p>The size of the exponent field in bits.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Mantissa Location</p></td>
 | 
						|
	      <td>
 | 
						|
            <p>The bit position of the mantissa field.  Bits are numbered with
 | 
						|
              the least significant bit number zero.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Mantissa Size</p></td>
 | 
						|
	      <td>
 | 
						|
            <p>The size of the mantissa field in bits.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Exponent Bias</p></td>
 | 
						|
	      <td>
 | 
						|
            <p>The bias of the exponent field.
 | 
						|
            </p>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
      </table>
 | 
						|
    </div>
 | 
						|
 | 
						|
 | 
						|
    <br />
 | 
						|
    <br />
 | 
						|
    <a name="ClassTime"></a>
 | 
						|
      <p>Class specific information for the Time class (Class 2):</p>
 | 
						|
 | 
						|
 | 
						|
      <div align="center">
 | 
						|
        <table class="desc">
 | 
						|
          <caption>
 | 
						|
            Bits: Time Bit Field Description
 | 
						|
          </caption>
 | 
						|
 | 
						|
	      <tr>
 | 
						|
	        <th width="10%">Bits</th>
 | 
						|
	        <th>Meaning</th>
 | 
						|
	      </tr>
 | 
						|
 | 
						|
	      <tr>
 | 
						|
	        <td><p>0</p></td>
 | 
						|
	        <td><p><b>Byte Order.</b> If zero, byte order is little-endian;
 | 
						|
	            otherwise, byte order is big endian.</p></td>
 | 
						|
	      </tr>
 | 
						|
 | 
						|
	      <tr>
 | 
						|
	        <td><p>1-23</p></td>
 | 
						|
	        <td><p>Reserved (zero).</p></td>
 | 
						|
	      </tr>
 | 
						|
        </table>
 | 
						|
      </div>
 | 
						|
 | 
						|
      <br />
 | 
						|
      <div align="center">
 | 
						|
        <table class="format">
 | 
						|
          <caption>
 | 
						|
            Layout: Time Property Description
 | 
						|
          </caption>
 | 
						|
 | 
						|
	      <tr>
 | 
						|
	        <th width="25%">Byte</th>
 | 
						|
	        <th width="25%">Byte</th>
 | 
						|
	      </tr>
 | 
						|
 | 
						|
	      <tr>
 | 
						|
	        <td colspan="2">Bit Precision</td>
 | 
						|
	      </tr>
 | 
						|
        </table>
 | 
						|
      </div>
 | 
						|
 | 
						|
      <br />
 | 
						|
      <div align="center">
 | 
						|
        <table class="desc">
 | 
						|
          <caption>
 | 
						|
            Fields: Time Property Description
 | 
						|
          </caption>
 | 
						|
	      <tr>
 | 
						|
            <th width="30%">Field Name</th>
 | 
						|
            <th>Description</th>
 | 
						|
	      </tr>
 | 
						|
 | 
						|
	      <tr>
 | 
						|
	        <td><p>Bit Precision</p></td>
 | 
						|
	        <td>
 | 
						|
              <p>The number of bits of precision of the time value.
 | 
						|
              </p>
 | 
						|
            </td>
 | 
						|
	      </tr>
 | 
						|
 | 
						|
        </table>
 | 
						|
      </div>
 | 
						|
 | 
						|
 | 
						|
      <br />
 | 
						|
      <a name="ClassString"></a>
 | 
						|
        <p>Class specific information for the Strings class (Class 3):</p>
 | 
						|
 | 
						|
 | 
						|
        <div align="center">
 | 
						|
          <table class="desc">
 | 
						|
            <caption>
 | 
						|
              Bits: String Bit Field Description
 | 
						|
            </caption>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
	          <th width="10%">Bits</th>
 | 
						|
	          <th>Meaning</th>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
	          <td><p>0-3</p></td>
 | 
						|
	          <td><p><b>Padding type.</b>  This four-bit value determines the
 | 
						|
	              type of padding to use for the string.  The values are:
 | 
						|
 | 
						|
                  <table class="list">
 | 
						|
                    <tr>
 | 
						|
                      <th width="20%" align="center">Value</th>
 | 
						|
                      <th width="80%" align="left">Description</th>
 | 
						|
                    </tr>
 | 
						|
 | 
						|
                    <tr>
 | 
						|
                      <td align="center"><code>0</code></td>
 | 
						|
                      <td>Null Terminate: A zero byte marks the end of the
 | 
						|
                        string and is guaranteed to be present after
 | 
						|
                        converting a long string to a short string.  When
 | 
						|
                        converting a short string to a long string the value is
 | 
						|
                        padded with additional null characters as necessary.
 | 
						|
                      </td>
 | 
						|
                    </tr>
 | 
						|
 | 
						|
                    <tr>
 | 
						|
                      <td align="center"><code>1</code></td>
 | 
						|
                      <td>Null Pad: Null characters are added to the end of
 | 
						|
                        the value during conversions from short values to long
 | 
						|
                        values but conversion in the opposite direction simply
 | 
						|
                        truncates the value.
 | 
						|
                      </td>
 | 
						|
                    </tr>
 | 
						|
 | 
						|
                    <tr>
 | 
						|
                      <td align="center"><code>2</code></td>
 | 
						|
                      <td>Space Pad: Space characters are added to the end of
 | 
						|
                        the value during conversions from short values to long
 | 
						|
                        values but conversion in the opposite direction simply
 | 
						|
                        truncates the value.  This is the Fortran
 | 
						|
                        representation of the string.
 | 
						|
                      </td>
 | 
						|
                    </tr>
 | 
						|
 | 
						|
                    <tr>
 | 
						|
                      <td align="center"><code>3-15</code></td>
 | 
						|
                      <td>Reserved
 | 
						|
                      </td>
 | 
						|
                    </tr>
 | 
						|
                </table></p>
 | 
						|
              </td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
	          <td><p>4-7</p></td>
 | 
						|
	          <td><p><b>Character Set.</b>  The character set used to
 | 
						|
	              encode the string.
 | 
						|
                  <table class="list">
 | 
						|
                    <tr>
 | 
						|
                      <th width="20%" align="center">Value</th>
 | 
						|
                      <th width="80%" align="left">Description</th>
 | 
						|
                    </tr>
 | 
						|
 | 
						|
                    <tr>
 | 
						|
                      <td align="center"><code>0</code></td>
 | 
						|
                      <td>ASCII character set encoding
 | 
						|
                      </td>
 | 
						|
                    </tr>
 | 
						|
 | 
						|
                    <tr>
 | 
						|
                      <td align="center"><code>1</code></td>
 | 
						|
                      <td>UTF-8 character set encoding
 | 
						|
                      </td>
 | 
						|
                    </tr>
 | 
						|
 | 
						|
                    <tr>
 | 
						|
                      <td align="center"><code>2-15</code></td>
 | 
						|
                      <td>Reserved
 | 
						|
                      </td>
 | 
						|
                    </tr>
 | 
						|
                </table></p>
 | 
						|
              </td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
	          <td><p>8-23</p></td>
 | 
						|
	          <td><p>Reserved (zero).</p></td>
 | 
						|
	        </tr>
 | 
						|
          </table>
 | 
						|
        </div>
 | 
						|
 | 
						|
        <p>There are no properties defined for the string class.
 | 
						|
        </p>
 | 
						|
 | 
						|
        <br />
 | 
						|
        <br />
 | 
						|
        <a name="ClassBitField"></a>
 | 
						|
          <p>Class specific information for the Bit Fields class (Class 4):</p>
 | 
						|
 | 
						|
          <div align="center">
 | 
						|
            <table class="desc">
 | 
						|
              <caption>
 | 
						|
                Bits: Bitfield Bit Field Description
 | 
						|
              </caption>
 | 
						|
 | 
						|
	          <tr>
 | 
						|
	            <th width="10%">Bits</th>
 | 
						|
	            <th>Meaning</th>
 | 
						|
	          </tr>
 | 
						|
 | 
						|
	          <tr>
 | 
						|
	            <td><p>0</p></td>
 | 
						|
	            <td><p><b>Byte Order.</b> If zero, byte order is little-endian;
 | 
						|
	                otherwise, byte order is big endian.</p></td>
 | 
						|
	          </tr>
 | 
						|
 | 
						|
	          <tr>
 | 
						|
	            <td><p>1, 2</p></td>
 | 
						|
	            <td><p><b>Padding type.</b>  Bit 1 is the lo_pad type and bit 2
 | 
						|
	                is the hi_pad type.  If a datum has unused bits at either
 | 
						|
	                end, then the lo_pad or hi_pad bit is copied to those
 | 
						|
	                locations.</p></td>
 | 
						|
	          </tr>
 | 
						|
 | 
						|
	          <tr>
 | 
						|
	            <td><p>3-23</p></td>
 | 
						|
	            <td><p>Reserved (zero).</p></td>
 | 
						|
	          </tr>
 | 
						|
            </table>
 | 
						|
          </div>
 | 
						|
 | 
						|
          <br />
 | 
						|
          <div align="center">
 | 
						|
            <table class="format">
 | 
						|
              <caption>
 | 
						|
                Layout: Bit Field Property Description
 | 
						|
              </caption>
 | 
						|
 | 
						|
	          <tr>
 | 
						|
	            <th width="25%">Byte</th>
 | 
						|
	            <th width="25%">Byte</th>
 | 
						|
	            <th width="25%">Byte</th>
 | 
						|
	            <th width="25%">Byte</th>
 | 
						|
	          </tr>
 | 
						|
 | 
						|
	          <tr>
 | 
						|
	            <td colspan="2">Bit Offset</td>
 | 
						|
	            <td colspan="2">Bit Precision</td>
 | 
						|
	          </tr>
 | 
						|
            </table>
 | 
						|
          </div>
 | 
						|
 | 
						|
          <br />
 | 
						|
          <div align="center">
 | 
						|
            <table class="desc">
 | 
						|
              <caption>
 | 
						|
                Fields: Bit Field Property Description
 | 
						|
              </caption>
 | 
						|
	          <tr>
 | 
						|
                <th width="30%">Field Name</th>
 | 
						|
                <th>Description</th>
 | 
						|
	          </tr>
 | 
						|
 | 
						|
	          <tr>
 | 
						|
	            <td><p>Bit Offset</p></td>
 | 
						|
	            <td>
 | 
						|
                  <p>The bit offset of the first significant bit of the bit field
 | 
						|
                    within the datatype.  The bit offset specifies the number
 | 
						|
                    of bits “to the right of” the value.
 | 
						|
                  </p>
 | 
						|
                </td>
 | 
						|
	          </tr>
 | 
						|
 | 
						|
	          <tr>
 | 
						|
	            <td><p>Bit Precision</p></td>
 | 
						|
	            <td>
 | 
						|
                  <p>The number of bits of precision of the bit field
 | 
						|
                    within the datatype.
 | 
						|
                  </p>
 | 
						|
                </td>
 | 
						|
	          </tr>
 | 
						|
            </table>
 | 
						|
          </div>
 | 
						|
 | 
						|
 | 
						|
          <br />
 | 
						|
          <br />
 | 
						|
          <a name="ClassOpaque"></a>
 | 
						|
            <p>Class specific information for the Opaque class (Class 5):</p>
 | 
						|
 | 
						|
            <div align="center">
 | 
						|
              <table class="desc">
 | 
						|
                <caption>
 | 
						|
                  Bits: Opaque Bit Field Description
 | 
						|
                </caption>
 | 
						|
 | 
						|
	            <tr>
 | 
						|
	              <th width="10%">Bits</th>
 | 
						|
	              <th>Meaning</th>
 | 
						|
	            </tr>
 | 
						|
 | 
						|
	            <tr>
 | 
						|
	              <td><p>0-7</p></td>
 | 
						|
	              <td><p>Length of ASCII tag in bytes.</p></td>
 | 
						|
	            </tr>
 | 
						|
 | 
						|
	            <tr>
 | 
						|
	              <td><p>8-23</p></td>
 | 
						|
	              <td><p>Reserved (zero).</p></td>
 | 
						|
	            </tr>
 | 
						|
              </table>
 | 
						|
            </div>
 | 
						|
 | 
						|
            <br />
 | 
						|
            <div align="center">
 | 
						|
              <table class="format">
 | 
						|
                <caption>
 | 
						|
                  Layout: Opaque Property Description
 | 
						|
                </caption>
 | 
						|
 | 
						|
	            <tr>
 | 
						|
	              <th width="25%">Byte</th>
 | 
						|
	              <th width="25%">Byte</th>
 | 
						|
	              <th width="25%">Byte</th>
 | 
						|
	              <th width="25%">Byte</th>
 | 
						|
	            </tr>
 | 
						|
 | 
						|
	            <tr>
 | 
						|
	              <td colspan="4"><br />ASCII Tag<br />
 | 
						|
	                <br /></td>
 | 
						|
	            </tr>
 | 
						|
              </table>
 | 
						|
            </div>
 | 
						|
 | 
						|
            <br />
 | 
						|
            <div align="center">
 | 
						|
              <table class="desc">
 | 
						|
                <caption>
 | 
						|
                  Fields: Opaque Property Description
 | 
						|
                </caption>
 | 
						|
	            <tr>
 | 
						|
                  <th width="30%">Field Name</th>
 | 
						|
                  <th>Description</th>
 | 
						|
	            </tr>
 | 
						|
 | 
						|
	            <tr>
 | 
						|
	              <td><p>ASCII Tag</p></td>
 | 
						|
	              <td>
 | 
						|
                    <p>This NUL-terminated string provides a description for the
 | 
						|
                      opaque type.  It is NUL-padded to a multiple of 8 bytes.
 | 
						|
                    </p>
 | 
						|
                  </td>
 | 
						|
	            </tr>
 | 
						|
              </table>
 | 
						|
            </div>
 | 
						|
 | 
						|
 | 
						|
            <br />
 | 
						|
            <br />
 | 
						|
            <a name="ClassCompound"></a>
 | 
						|
              <p>Class specific information for the Compound class (Class 6):</p>
 | 
						|
 | 
						|
              <div align="center">
 | 
						|
                <table class="desc">
 | 
						|
                  <caption>
 | 
						|
                    Bits: Compound Bit Field Description
 | 
						|
                  </caption>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <th width="10%">Bits</th>
 | 
						|
	                <th>Meaning</th>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td><p>0-15</p></td>
 | 
						|
	                <td><p><b>Number of Members.</b> This field contains the number
 | 
						|
	                    of members defined for the compound datatype.  The member
 | 
						|
	                    definitions are listed in the Properties field of the data
 | 
						|
	                    type message.</p></td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td><p>16-23</p></td>
 | 
						|
	                <td><p>Reserved (zero).</p></td>
 | 
						|
	              </tr>
 | 
						|
                </table>
 | 
						|
              </div>
 | 
						|
 | 
						|
 | 
						|
              <p>The Properties field of a compound datatype is a list of the
 | 
						|
                member definitions of the compound datatype.  The member
 | 
						|
                definitions appear one after another with no intervening bytes.
 | 
						|
                The member types are described with a (recursively) encoded datatype
 | 
						|
                message.</p>
 | 
						|
 | 
						|
              <p>Note that the property descriptions are different for different
 | 
						|
                versions of the datatype version.  Additionally note that the version
 | 
						|
                0 datatype encoding is deprecated and has been replaced with later
 | 
						|
                encodings in versions of the HDF5 Library from the 1.4 release
 | 
						|
                onward.</p>
 | 
						|
 | 
						|
 | 
						|
              <div align="center">
 | 
						|
                <table class="format">
 | 
						|
                  <caption>
 | 
						|
                    Layout: Compound Properties Description for Datatype Version 1
 | 
						|
                  </caption>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <th width="25%">Byte</th>
 | 
						|
	                <th width="25%">Byte</th>
 | 
						|
	                <th width="25%">Byte</th>
 | 
						|
	                <th width="25%">Byte</th>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4"><br />Name<br /><br /></td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">Byte Offset of Member</td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td>Dimensionality</td>
 | 
						|
	                <td colspan="3">Reserved (zero)</td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">Dimension Permutation</td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">Reserved (zero)</td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">Dimension #1 Size (required)</td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">Dimension #2 Size (required)</td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">Dimension #3 Size (required)</td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">Dimension #4 Size (required)</td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4"><br />Member Type Message<br /><br /></td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
                </table>
 | 
						|
              </div>
 | 
						|
 | 
						|
              <br />
 | 
						|
              <div align="center">
 | 
						|
                <table class="desc">
 | 
						|
                  <caption>
 | 
						|
                    Fields: Compound Properties Description for Datatype Version 1
 | 
						|
                  </caption>
 | 
						|
	              <tr>
 | 
						|
                    <th width="30%">Field Name</th>
 | 
						|
                    <th>Description</th>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td><p>Name</p></td>
 | 
						|
	                <td>
 | 
						|
                      <p>This NUL-terminated string provides a description for the
 | 
						|
                        opaque type.  It is NUL-padded to a multiple of 8 bytes.
 | 
						|
                      </p>
 | 
						|
                    </td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td><p>Byte Offset of Member</p></td>
 | 
						|
	                <td>
 | 
						|
                      <p>This is the byte offset of the member within the datatype.
 | 
						|
                      </p>
 | 
						|
                    </td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td><p>Dimensionality</p></td>
 | 
						|
	                <td>
 | 
						|
                      <p>If set to zero, this field indicates a scalar member.  If set
 | 
						|
                        to a value greater than zero, this field indicates that the
 | 
						|
                        member is an array of values.  For array members, the size of
 | 
						|
                        the array is indicated by the ‘Size of Dimension n’ field in
 | 
						|
                        this message.
 | 
						|
                      </p>
 | 
						|
                    </td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td><p>Dimension Permutation</p></td>
 | 
						|
	                <td>
 | 
						|
                      <p>This field was intended to allow an array field to have
 | 
						|
                        its dimensions permuted, but this was never implemented.
 | 
						|
                        This field should always be set to zero.
 | 
						|
                      </p>
 | 
						|
                    </td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td><p>Dimension #n Size</p></td>
 | 
						|
	                <td>
 | 
						|
                      <p>This field is the size of a dimension of the array field as
 | 
						|
                        stored in the file.  The first dimension stored in the list of
 | 
						|
                        dimensions is the slowest changing dimension and the last
 | 
						|
                        dimension stored is the fastest changing dimension.
 | 
						|
                      </p>
 | 
						|
                    </td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td><p>Member Type Message</p></td>
 | 
						|
	                <td>
 | 
						|
                      <p>This field is a datatype message describing the datatype of
 | 
						|
                        the member.
 | 
						|
                      </p>
 | 
						|
                    </td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
                </table>
 | 
						|
              </div>
 | 
						|
 | 
						|
              <br />
 | 
						|
              <br />
 | 
						|
              <br />
 | 
						|
              <div align="center">
 | 
						|
                <table class="format">
 | 
						|
                  <caption>
 | 
						|
                    Layout: Compound Properties Description for Datatype Version 2
 | 
						|
                  </caption>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <th width="25%">Byte</th>
 | 
						|
	                <th width="25%">Byte</th>
 | 
						|
	                <th width="25%">Byte</th>
 | 
						|
	                <th width="25%">Byte</th>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4"><br />Name<br /><br /></td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">Byte Offset of Member</td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4"><br />Member Type Message<br /><br /></td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
                </table>
 | 
						|
              </div>
 | 
						|
 | 
						|
              <br />
 | 
						|
              <div align="center">
 | 
						|
                <table class="desc">
 | 
						|
                  <caption>
 | 
						|
                    Fields: Compound Properties Description for Datatype Version 2
 | 
						|
                  </caption>
 | 
						|
	              <tr>
 | 
						|
                    <th width="30%">Field Name</th>
 | 
						|
                    <th>Description</th>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td><p>Name</p></td>
 | 
						|
	                <td>
 | 
						|
                      <p>This NUL-terminated string provides a description for the
 | 
						|
                        opaque type.  It is NUL-padded to a multiple of 8 bytes.
 | 
						|
                      </p>
 | 
						|
                    </td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td><p>Byte Offset of Member</p></td>
 | 
						|
	                <td>
 | 
						|
                      <p>This is the byte offset of the member within the datatype.
 | 
						|
                      </p>
 | 
						|
                    </td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td><p>Member Type Message</p></td>
 | 
						|
	                <td>
 | 
						|
                      <p>This field is a datatype message describing the datatype of
 | 
						|
                        the member.
 | 
						|
                      </p>
 | 
						|
                    </td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
                </table>
 | 
						|
              </div>
 | 
						|
 | 
						|
 | 
						|
              <br />
 | 
						|
              <br />
 | 
						|
              <br />
 | 
						|
              <div align="center">
 | 
						|
                <table class="format">
 | 
						|
                  <caption>
 | 
						|
                    Layout: Compound Properties Description for Datatype Version 3
 | 
						|
                  </caption>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <th width="25%">Byte</th>
 | 
						|
	                <th width="25%">Byte</th>
 | 
						|
	                <th width="25%">Byte</th>
 | 
						|
	                <th width="25%">Byte</th>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4"><br />Name<br /><br /></td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">Byte Offset of Member <em>(variable size)</em></td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4"><br />Member Type Message<br /><br /></td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
                </table>
 | 
						|
              </div>
 | 
						|
 | 
						|
              <br />
 | 
						|
              <div align="center">
 | 
						|
                <table class="desc">
 | 
						|
                  <caption>
 | 
						|
                    Fields: Compound Properties Description for Datatype Version 3
 | 
						|
                  </caption>
 | 
						|
	              <tr>
 | 
						|
                    <th width="30%">Field Name</th>
 | 
						|
                    <th>Description</th>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td><p>Name</p></td>
 | 
						|
	                <td><p>This NUL-terminated string provides a description for the
 | 
						|
                        opaque type. It is <em>not</em> NUL-padded to a multiple of 8
 | 
						|
                        bytes.</p></td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
                    <td><p>Byte Offset of Member</p></td>
 | 
						|
                    <td><p>This is the byte offset of the member within the datatype.
 | 
						|
                        The field size is the minimum number of bytes necessary,
 | 
						|
                        based on the size of the datatype element. For example, a
 | 
						|
                        datatype element size of less than 256 bytes uses a 1 byte
 | 
						|
                        length, a datatype element size of 256-65535 bytes uses a
 | 
						|
                        2 byte length, and so on.</p></td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td><p>Member Type Message</p></td>
 | 
						|
	                <td><p>This field is a datatype message describing the datatype of
 | 
						|
                        the member.</p></td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
                </table>
 | 
						|
              </div>
 | 
						|
 | 
						|
 | 
						|
              <br />
 | 
						|
              <br />
 | 
						|
              <a name="ClassReference"></a>
 | 
						|
                <p>Class specific information for the Reference class (Class 7):</p>
 | 
						|
 | 
						|
                <div align="center">
 | 
						|
                  <table class="desc">
 | 
						|
                    <caption>
 | 
						|
                      Bits: Reference Bit Field Description for Datatype Version < 4
 | 
						|
                    </caption>
 | 
						|
 | 
						|
	                <tr>
 | 
						|
	                  <th width="10%">Bits</th>
 | 
						|
	                  <th>Meaning</th>
 | 
						|
	                </tr>
 | 
						|
 | 
						|
	                <tr>
 | 
						|
	                  <td><p>0-3</p></td>
 | 
						|
	                  <td><p><b>Type.</b> This four-bit value contains the reference types which are supported for
 | 
						|
                          backward compatibility.  The values defined are:
 | 
						|
 | 
						|
                          <table class="list">
 | 
						|
                            <tr>
 | 
						|
                              <th width="20%" align="center">Value</th>
 | 
						|
                              <th width="80%" align="left">Description</th>
 | 
						|
                            </tr>
 | 
						|
 | 
						|
                            <tr>
 | 
						|
                              <td align="center"><code>0</code></td>
 | 
						|
                              <td>Object Reference (H5R_OBJECT1): A reference to another object in this
 | 
						|
                                HDF5 file.
 | 
						|
                              </td>
 | 
						|
                            </tr>
 | 
						|
 | 
						|
                            <tr>
 | 
						|
                              <td align="center"><code>1</code></td>
 | 
						|
                              <td>Dataset Region Reference (H5R_DATASET_REGION1): A reference to a region within
 | 
						|
                                a dataset in this HDF5 file.
 | 
						|
                              </td>
 | 
						|
                            </tr>
 | 
						|
 | 
						|
                            <tr>
 | 
						|
                              <td align="center"><code>2-15</code></td>
 | 
						|
                              <td>Reserved
 | 
						|
                              </td>
 | 
						|
                            </tr>
 | 
						|
                        </table></p>
 | 
						|
 | 
						|
                      </td>
 | 
						|
	                </tr>
 | 
						|
 | 
						|
	                <tr>
 | 
						|
	                  <td><p>4-23</p></td>
 | 
						|
	                  <td><p>Reserved (zero).</p></td>
 | 
						|
	                </tr>
 | 
						|
                  </table>
 | 
						|
                </div>
 | 
						|
 | 
						|
                <br />
 | 
						|
                <div align="center">
 | 
						|
                  <table class="desc">
 | 
						|
                    <caption>
 | 
						|
                      Bits: Reference Bit Field Description for Datatype Version 4
 | 
						|
                    </caption>
 | 
						|
 | 
						|
	                <tr>
 | 
						|
	                  <th width="10%">Bits</th>
 | 
						|
	                  <th>Meaning</th>
 | 
						|
	                </tr>
 | 
						|
 | 
						|
	                <tr>
 | 
						|
	                  <td><p>0-3</p></td>
 | 
						|
	                  <td><p><b>Type.</b> This four-bit value contains the revised reference types.
 | 
						|
                          The values defined are:
 | 
						|
 | 
						|
                          <table class="list">
 | 
						|
                            <tr>
 | 
						|
                              <th width="20%" align="center">Value</th>
 | 
						|
                              <th width="80%" align="left">Description</th>
 | 
						|
                            </tr>
 | 
						|
 | 
						|
                            <tr>
 | 
						|
                              <td align="center"><code>2</code></td>
 | 
						|
                              <td>Object Reference (H5R_OBJECT2): A reference to another object
 | 
						|
                                in this file or an external file.
 | 
						|
                              </td>
 | 
						|
                            </tr>
 | 
						|
 | 
						|
                            <tr>
 | 
						|
                              <td align="center"><code>3</code></td>
 | 
						|
                              <td>Dataset Region Reference (H5R_DATASET_REGION2): A reference to a region within
 | 
						|
                                a dataset in this file or an external file.
 | 
						|
                              </td>
 | 
						|
                            </tr>
 | 
						|
 | 
						|
                            <tr>
 | 
						|
                              <td align="center"><code>4</code></td>
 | 
						|
                              <td>Attribute Reference (H5R_ATTR): A reference to an attribute attached to an
 | 
						|
                                object in this file or an external file.
 | 
						|
                              </td>
 | 
						|
                            </tr>
 | 
						|
 | 
						|
                            <tr>
 | 
						|
                              <td align="center"><code>5-15</code></td>
 | 
						|
                              <td>Reserved
 | 
						|
                              </td>
 | 
						|
                            </tr>
 | 
						|
                        </table></p>
 | 
						|
 | 
						|
                      </td>
 | 
						|
	                </tr>
 | 
						|
 | 
						|
	                <tr>
 | 
						|
	                  <td><p>4-7</p></td>
 | 
						|
	                  <td><p><b>Version.</b> This four-bit value contains the version for encoding
 | 
						|
                          the revised reference types.  The values defined are:
 | 
						|
                          <table class="list">
 | 
						|
                            <tr>
 | 
						|
                              <th width="20%" align="center">Value</th>
 | 
						|
                              <th width="80%" align="left">Description</th>
 | 
						|
                            </tr>
 | 
						|
 | 
						|
                            <tr>
 | 
						|
                              <td align="center"><code>0</code></td>
 | 
						|
                              <td>Unused
 | 
						|
                              </td>
 | 
						|
                            </tr>
 | 
						|
 | 
						|
                            <tr>
 | 
						|
                              <td align="center"><code>1</code></td>
 | 
						|
                              <td>The version for encoding the revised reference types: Object Reference (2),
 | 
						|
                                Dataset Region Reference (3) and Attribute Reference (4).
 | 
						|
                              </td>
 | 
						|
                            </tr>
 | 
						|
 | 
						|
                            <tr>
 | 
						|
                              <td align="center"><code>2-15</code></td>
 | 
						|
                              <td>Reserved
 | 
						|
                              </td>
 | 
						|
                            </tr>
 | 
						|
 | 
						|
                        </table></p>
 | 
						|
 | 
						|
                      </td>
 | 
						|
	                </tr>
 | 
						|
 | 
						|
	                <tr>
 | 
						|
	                  <td><p>8-23</p></td>
 | 
						|
	                  <td><p>Reserved (zero).</p></td>
 | 
						|
	                </tr>
 | 
						|
                  </table>
 | 
						|
                </div>
 | 
						|
 | 
						|
                <p>There are no properties defined for the reference class.
 | 
						|
                </p>
 | 
						|
 | 
						|
 | 
						|
                <br />
 | 
						|
                <br />
 | 
						|
                <a name="ClassEnum"></a>
 | 
						|
                  <p>Class specific information for the Enumeration class (Class 8):</p>
 | 
						|
 | 
						|
                  <div align="center">
 | 
						|
                    <table class="desc">
 | 
						|
                      <caption>
 | 
						|
                        Bits: Enumeration Bit Field Description
 | 
						|
                      </caption>
 | 
						|
 | 
						|
	                  <tr>
 | 
						|
	                    <th width="10%">Bits</th>
 | 
						|
	                    <th>Meaning</th>
 | 
						|
	                  </tr>
 | 
						|
 | 
						|
	                  <tr>
 | 
						|
	                    <td><p>0-15</p></td>
 | 
						|
	                    <td><p><b>Number of Members.</b> The number of name/value
 | 
						|
	                        pairs defined for the enumeration type.</p></td>
 | 
						|
	                  </tr>
 | 
						|
 | 
						|
	                  <tr>
 | 
						|
	                    <td><p>16-23</p></td>
 | 
						|
	                    <td><p>Reserved (zero).</p></td>
 | 
						|
	                  </tr>
 | 
						|
                    </table>
 | 
						|
                  </div>
 | 
						|
 | 
						|
                  <br />
 | 
						|
                  <br />
 | 
						|
                  <div align="center">
 | 
						|
                    <table class="format">
 | 
						|
                      <caption>
 | 
						|
                        Layout: Enumeration Property Description for Datatype Versions
 | 
						|
                        1 and 2
 | 
						|
                      </caption>
 | 
						|
 | 
						|
	                  <tr>
 | 
						|
	                    <th width="25%">Byte</th>
 | 
						|
	                    <th width="25%">Byte</th>
 | 
						|
	                    <th width="25%">Byte</th>
 | 
						|
	                    <th width="25%">Byte</th>
 | 
						|
	                  </tr>
 | 
						|
 | 
						|
	                  <tr>
 | 
						|
	                    <td colspan="4"><br />Base Type<br /><br /></td>
 | 
						|
	                  </tr>
 | 
						|
 | 
						|
	                  <tr>
 | 
						|
	                    <td colspan="4"><br />Names<br /><br /></td>
 | 
						|
	                  </tr>
 | 
						|
 | 
						|
	                  <tr>
 | 
						|
	                    <td colspan="4"><br />Values<br /><br /></td>
 | 
						|
                      </tr>
 | 
						|
 | 
						|
                    </table>
 | 
						|
                  </div>
 | 
						|
 | 
						|
                  <br />
 | 
						|
                  <div align="center">
 | 
						|
                    <table class="desc">
 | 
						|
                      <caption>
 | 
						|
                        Fields: Enumeration Property Description for Datatype Versions
 | 
						|
                        1 and 2
 | 
						|
                      </caption>
 | 
						|
	                  <tr>
 | 
						|
                        <th width="30%">Field Name</th>
 | 
						|
                        <th>Description</th>
 | 
						|
	                  </tr>
 | 
						|
 | 
						|
	                  <tr>
 | 
						|
	                    <td><p>Base Type</p></td>
 | 
						|
	                    <td>
 | 
						|
                          <p>Each enumeration type is based on some parent type, usually an
 | 
						|
                            integer. The information for that parent type is described
 | 
						|
                            recursively by this field.
 | 
						|
                          </p>
 | 
						|
                        </td>
 | 
						|
	                  </tr>
 | 
						|
 | 
						|
	                  <tr>
 | 
						|
	                    <td><p>Names</p></td>
 | 
						|
	                    <td>
 | 
						|
                          <p>The name for each name/value pair. Each name is stored as a null
 | 
						|
                            terminated ASCII string in a multiple of eight bytes. The names
 | 
						|
                            are in no particular order.
 | 
						|
                          </p>
 | 
						|
                        </td>
 | 
						|
	                  </tr>
 | 
						|
 | 
						|
	                  <tr>
 | 
						|
	                    <td><p>Values</p></td>
 | 
						|
	                    <td>
 | 
						|
                          <p>The list of values in the same order as the names.  The values
 | 
						|
                            are packed (no inter-value padding) and the size of each value
 | 
						|
                            is determined by the parent type.
 | 
						|
                          </p>
 | 
						|
                        </td>
 | 
						|
	                  </tr>
 | 
						|
 | 
						|
                    </table>
 | 
						|
                  </div>
 | 
						|
 | 
						|
                  <br />
 | 
						|
                  <br />
 | 
						|
                  <br />
 | 
						|
                  <div align="center">
 | 
						|
                    <table class="format">
 | 
						|
                      <caption>
 | 
						|
                        Layout: Enumeration Property Description for Datatype Version 3
 | 
						|
                      </caption>
 | 
						|
 | 
						|
	                  <tr>
 | 
						|
	                    <th width="25%">Byte</th>
 | 
						|
	                    <th width="25%">Byte</th>
 | 
						|
	                    <th width="25%">Byte</th>
 | 
						|
	                    <th width="25%">Byte</th>
 | 
						|
	                  </tr>
 | 
						|
 | 
						|
	                  <tr>
 | 
						|
	                    <td colspan="4"><br />Base Type<br /><br /></td>
 | 
						|
	                  </tr>
 | 
						|
 | 
						|
	                  <tr>
 | 
						|
	                    <td colspan="4"><br />Names<br /><br /></td>
 | 
						|
	                  </tr>
 | 
						|
 | 
						|
	                  <tr>
 | 
						|
	                    <td colspan="4"><br />Values<br /><br /></td>
 | 
						|
                      </tr>
 | 
						|
 | 
						|
                    </table>
 | 
						|
                  </div>
 | 
						|
 | 
						|
                  <br />
 | 
						|
                  <div align="center">
 | 
						|
                    <table class="desc">
 | 
						|
                      <caption>
 | 
						|
                        Fields: Enumeration Property Description for Datatype Version 3
 | 
						|
                      </caption>
 | 
						|
	                  <tr>
 | 
						|
                        <th width="30%">Field Name</th>
 | 
						|
                        <th>Description</th>
 | 
						|
	                  </tr>
 | 
						|
 | 
						|
	                  <tr>
 | 
						|
	                    <td><p>Base Type</p></td>
 | 
						|
	                    <td>
 | 
						|
                          <p>Each enumeration type is based on some parent type, usually an
 | 
						|
                            integer. The information for that parent type is described
 | 
						|
                            recursively by this field.
 | 
						|
                          </p>
 | 
						|
                        </td>
 | 
						|
	                  </tr>
 | 
						|
 | 
						|
	                  <tr>
 | 
						|
	                    <td><p>Names</p></td>
 | 
						|
	                    <td>
 | 
						|
                          <p>The name for each name/value pair. Each name is stored as a null
 | 
						|
                            terminated ASCII string, <em>not</em> padded to a multiple of
 | 
						|
                            eight bytes. The names are in no particular order.
 | 
						|
                          </p>
 | 
						|
                        </td>
 | 
						|
	                  </tr>
 | 
						|
 | 
						|
	                  <tr>
 | 
						|
	                    <td><p>Values</p></td>
 | 
						|
	                    <td>
 | 
						|
                          <p>The list of values in the same order as the names.  The values
 | 
						|
                            are packed (no inter-value padding) and the size of each value
 | 
						|
                            is determined by the parent type.
 | 
						|
                          </p>
 | 
						|
                        </td>
 | 
						|
	                  </tr>
 | 
						|
 | 
						|
                    </table>
 | 
						|
                  </div>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
                  <br />
 | 
						|
                  <a name="ClassVarLen"></a>
 | 
						|
                    <p>Class specific information for the Variable-length class (Class 9):</p>
 | 
						|
 | 
						|
                    <div align="center">
 | 
						|
                      <table class="desc">
 | 
						|
                        <caption>
 | 
						|
                          Bits: Variable-length Bit Field Description
 | 
						|
                        </caption>
 | 
						|
 | 
						|
	                    <tr>
 | 
						|
	                      <th width="10%">Bits</th>
 | 
						|
	                      <th>Meaning</th>
 | 
						|
	                    </tr>
 | 
						|
 | 
						|
	                    <tr>
 | 
						|
	                      <td><p>0-3</p></td>
 | 
						|
	                      <td><p><b>Type.</b> This four-bit value contains the type of
 | 
						|
                              variable-length datatype described.  The values defined are:
 | 
						|
 | 
						|
                              <table class="list">
 | 
						|
                                <tr>
 | 
						|
                                  <th width="20%" align="center">Value</th>
 | 
						|
                                  <th width="80%" align="left">Description</th>
 | 
						|
                                </tr>
 | 
						|
 | 
						|
                                <tr>
 | 
						|
                                  <td align="center"><code>0</code></td>
 | 
						|
                                  <td>Sequence: A variable-length sequence of any datatype.
 | 
						|
                                    Variable-length sequences do not have padding or
 | 
						|
                                    character set information.
 | 
						|
                                  </td>
 | 
						|
                                </tr>
 | 
						|
 | 
						|
                                <tr>
 | 
						|
                                  <td align="center"><code>1</code></td>
 | 
						|
                                  <td>String: A variable-length sequence of characters.
 | 
						|
                                    Variable-length strings have padding and character set
 | 
						|
                                    information.
 | 
						|
                                  </td>
 | 
						|
                                </tr>
 | 
						|
 | 
						|
                                <tr>
 | 
						|
                                  <td align="center"><code>2-15</code></td>
 | 
						|
                                  <td>Reserved
 | 
						|
                                  </td>
 | 
						|
                                </tr>
 | 
						|
                            </table></p>
 | 
						|
 | 
						|
                          </td>
 | 
						|
	                    </tr>
 | 
						|
 | 
						|
	                    <tr>
 | 
						|
	                      <td><p>4-7</p></td>
 | 
						|
	                      <td><p><b>Padding type.</b> (variable-length string only)
 | 
						|
                              This four-bit value determines the type of padding
 | 
						|
                              used for variable-length strings.  The values are the same
 | 
						|
                              as for the string padding type, as follows:
 | 
						|
                              <table class="list">
 | 
						|
                                <tr>
 | 
						|
                                  <th width="20%" align="center">Value</th>
 | 
						|
                                  <th width="80%" align="left">Description</th>
 | 
						|
                                </tr>
 | 
						|
 | 
						|
                                <tr>
 | 
						|
                                  <td align="center"><code>0</code></td>
 | 
						|
                                  <td>Null terminate: A zero byte marks the end of a string
 | 
						|
                                    and is guaranteed to be present after converting a long
 | 
						|
                                    string to a short string.  When converting a short string
 | 
						|
                                    to a long string, the value is padded with additional null
 | 
						|
                                    characters as necessary.
 | 
						|
                                  </td>
 | 
						|
                                </tr>
 | 
						|
 | 
						|
                                <tr>
 | 
						|
                                  <td align="center"><code>1</code></td>
 | 
						|
                                  <td>Null pad: Null characters are added to the end of the
 | 
						|
                                    value during conversion from a short string to a longer
 | 
						|
                                    string.  Conversion from a long string to a shorter string
 | 
						|
                                    simply truncates the value.
 | 
						|
                                  </td>
 | 
						|
                                </tr>
 | 
						|
 | 
						|
                                <tr>
 | 
						|
                                  <td align="center"><code>2</code></td>
 | 
						|
                                  <td>Space pad: Space characters are added to the end of the
 | 
						|
                                    value during conversion from a short string to a longer
 | 
						|
                                    string.  Conversion from a long string to a shorter string
 | 
						|
                                    simply truncates the value.  This is the Fortran
 | 
						|
                                    representation of the string.
 | 
						|
                                  </td>
 | 
						|
                                </tr>
 | 
						|
 | 
						|
                                <tr>
 | 
						|
                                  <td align="center"><code>3-15</code></td>
 | 
						|
                                  <td>Reserved
 | 
						|
                                  </td>
 | 
						|
                                </tr>
 | 
						|
                            </table></p>
 | 
						|
 | 
						|
                            <p>This value is set to zero for variable-length sequences.</p>
 | 
						|
 | 
						|
                          </td>
 | 
						|
	                    </tr>
 | 
						|
 | 
						|
	                    <tr>
 | 
						|
	                      <td><p>8-11</p></td>
 | 
						|
	                      <td><p><b>Character Set.</b> (variable-length string only)
 | 
						|
                              This four-bit value specifies the character set
 | 
						|
                              to be used for encoding the string:
 | 
						|
                              <table class="list">
 | 
						|
                                <tr>
 | 
						|
                                  <th width="20%" align="center">Value</th>
 | 
						|
                                  <th width="80%" align="left">Description</th>
 | 
						|
                                </tr>
 | 
						|
 | 
						|
                                <tr>
 | 
						|
                                  <td align="center"><code>0</code></td>
 | 
						|
                                  <td>ASCII character set encoding
 | 
						|
                                  </td>
 | 
						|
                                </tr>
 | 
						|
 | 
						|
                                <tr>
 | 
						|
                                  <td align="center"><code>1</code></td>
 | 
						|
                                  <td>UTF-8 character set encoding
 | 
						|
                                  </td>
 | 
						|
                                </tr>
 | 
						|
 | 
						|
                                <tr>
 | 
						|
                                  <td align="center"><code>2-15</code></td>
 | 
						|
                                  <td>Reserved
 | 
						|
                                  </td>
 | 
						|
                                </tr>
 | 
						|
                            </table></p>
 | 
						|
 | 
						|
                            <p>This value is set to zero for variable-length sequences.</p>
 | 
						|
 | 
						|
                          </td>
 | 
						|
	                    </tr>
 | 
						|
 | 
						|
	                    <tr>
 | 
						|
	                      <td><p>12-23</p></td>
 | 
						|
	                      <td><p>Reserved (zero).</p></td>
 | 
						|
	                    </tr>
 | 
						|
                      </table>
 | 
						|
                    </div>
 | 
						|
 | 
						|
                    <br />
 | 
						|
                    <div align="center">
 | 
						|
                      <table class="format">
 | 
						|
                        <caption>
 | 
						|
                          Layout: Variable-length Property Description
 | 
						|
                        </caption>
 | 
						|
 | 
						|
                        <tr>
 | 
						|
                          <th width="25%">Byte</th>
 | 
						|
                          <th width="25%">Byte</th>
 | 
						|
                          <th width="25%">Byte</th>
 | 
						|
                          <th width="25%">Byte</th>
 | 
						|
                        </tr>
 | 
						|
 | 
						|
                        <tr>
 | 
						|
                          <td colspan="4"><br />Base Type<br /><br /></td>
 | 
						|
                        </tr>
 | 
						|
 | 
						|
                      </table>
 | 
						|
                    </div>
 | 
						|
 | 
						|
                    <br />
 | 
						|
                    <div align="center">
 | 
						|
                      <table class="desc">
 | 
						|
                        <caption>
 | 
						|
                          Fields: Variable-length Property Description
 | 
						|
                        </caption>
 | 
						|
	                    <tr>
 | 
						|
                          <th width="10%">Field Name</th>
 | 
						|
                          <th>Description</th>
 | 
						|
	                    </tr>
 | 
						|
 | 
						|
	                    <tr>
 | 
						|
	                      <td><p>Base Type</p></td>
 | 
						|
	                      <td>
 | 
						|
                            <p>Each variable-length type is based on some parent type.  The
 | 
						|
                              information for that parent type is described recursively by
 | 
						|
                              this field.
 | 
						|
                            </p>
 | 
						|
                          </td>
 | 
						|
	                    </tr>
 | 
						|
 | 
						|
                      </table>
 | 
						|
                    </div>
 | 
						|
 | 
						|
 | 
						|
                    <br />
 | 
						|
                    <br />
 | 
						|
                    <a name="ClassArray"></a>
 | 
						|
                      <p>Class specific information for the Array class (Class 10):</p>
 | 
						|
 | 
						|
                      <p>There are no bit fields defined for the array class.
 | 
						|
                      </p>
 | 
						|
 | 
						|
                      <p>Note that the dimension information defined in the property for this
 | 
						|
                        datatype class is independent of dataspace information for a dataset.
 | 
						|
                        The dimension information here describes the dimensionality of the
 | 
						|
                        information within a data element (or a component of an element, if the
 | 
						|
                        array datatype is nested within another datatype) and the dataspace for a
 | 
						|
                        dataset describes the size and locations of the elements in a dataset.
 | 
						|
                      </p>
 | 
						|
 | 
						|
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="format">
 | 
						|
                          <caption>
 | 
						|
                            Layout: Array Property Description for Datatype Version 2
 | 
						|
                          </caption>
 | 
						|
 | 
						|
                          <tr>
 | 
						|
                            <th width="25%">Byte</th>
 | 
						|
                            <th width="25%">Byte</th>
 | 
						|
                            <th width="25%">Byte</th>
 | 
						|
                            <th width="25%">Byte</th>
 | 
						|
                          </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td>Dimensionality</td>
 | 
						|
	                        <td colspan="3">Reserved (zero)</td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">Dimension #1 Size</td>
 | 
						|
	                      </tr>
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	                      </tr>
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">Dimension #n Size</td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">Permutation Index #1</td>
 | 
						|
	                      </tr>
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	                      </tr>
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">Permutation Index #n</td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
                          <tr>
 | 
						|
                            <td colspan="4"><br />Base Type<br /><br /></td>
 | 
						|
                          </tr>
 | 
						|
 | 
						|
                        </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
                      <br />
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="desc">
 | 
						|
                          <caption>
 | 
						|
                            Fields: Array Property Description for Datatype Version 2
 | 
						|
                          </caption>
 | 
						|
	                      <tr>
 | 
						|
                            <th width="30%">Field Name</th>
 | 
						|
                            <th>Description</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Dimensionality</p></td>
 | 
						|
	                        <td>
 | 
						|
                              <p>This value is the number of dimensions that the array has.
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Dimension #n Size</p></td>
 | 
						|
	                        <td>
 | 
						|
                              <p>This value is the size of the dimension of the array
 | 
						|
	                            as stored in the file.  The first dimension stored in
 | 
						|
	                            the list of dimensions is the slowest changing dimension
 | 
						|
	                            and the last dimension stored is the fastest changing
 | 
						|
	                            dimension.
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Permutation Index #n</p></td>
 | 
						|
	                        <td>
 | 
						|
                              <p>This value is the index permutation used to map
 | 
						|
                                each dimension from the canonical representation to an
 | 
						|
                                alternate axis for each dimension. Currently, dimension
 | 
						|
                                permutations are not supported, and these indices should
 | 
						|
                                be set to the index position minus one. In other words,
 | 
						|
                                the first dimension should be set to 0, the second dimension
 | 
						|
                                should be set to 1, and so on.
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Base Type</p></td>
 | 
						|
	                        <td>
 | 
						|
                              <p>Each array type is based on some parent type.  The
 | 
						|
                                information for that parent type is described recursively by
 | 
						|
                                this field.
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
                        </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
                      <br />
 | 
						|
                      <br />
 | 
						|
                      <br />
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="format">
 | 
						|
                          <caption>
 | 
						|
                            Layout: Array Property Description for Datatype Version 3
 | 
						|
                          </caption>
 | 
						|
 | 
						|
                          <tr>
 | 
						|
                            <th width="25%">Byte</th>
 | 
						|
                            <th width="25%">Byte</th>
 | 
						|
                            <th width="25%">Byte</th>
 | 
						|
                            <th width="25%">Byte</th>
 | 
						|
                          </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td>Dimensionality</td>
 | 
						|
                            <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">Dimension #1 Size</td>
 | 
						|
	                      </tr>
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	                      </tr>
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">Dimension #n Size</td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
                          <tr>
 | 
						|
                            <td colspan="4"><br />Base Type<br /><br /></td>
 | 
						|
                          </tr>
 | 
						|
 | 
						|
                        </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
                      <br />
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="desc">
 | 
						|
                          <caption>
 | 
						|
                            Fields: Array Property Description for Datatype Version 3
 | 
						|
                          </caption>
 | 
						|
	                      <tr>
 | 
						|
                            <th width="30%">Field Name</th>
 | 
						|
                            <th>Description</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Dimensionality</p></td>
 | 
						|
	                        <td>
 | 
						|
                              <p>This value is the number of dimensions that the array has.
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Dimension #n Size</p></td>
 | 
						|
	                        <td>
 | 
						|
                              <p>This value is the size of the dimension of the array
 | 
						|
	                            as stored in the file.  The first dimension stored in
 | 
						|
	                            the list of dimensions is the slowest changing dimension
 | 
						|
	                            and the last dimension stored is the fastest changing
 | 
						|
	                            dimension.
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Base Type</p></td>
 | 
						|
	                        <td>
 | 
						|
                              <p>Each array type is based on some parent type.  The
 | 
						|
                                information for that parent type is described recursively by
 | 
						|
                                this field.
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
                        </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
                      <h4><a name="OldFillValueMessage">IV.A.2.e. The Data Storage -
 | 
						|
                          Fill Value (Old) Message</a></h4>
 | 
						|
 | 
						|
                      <!-- start msgdesc table -->
 | 
						|
                      <center>
 | 
						|
                        <table class="msgdesc">
 | 
						|
                          <tr><td colspan="2"><b>Header Message Name:</b> Fill Value
 | 
						|
                              (old)</td></tr>
 | 
						|
                          <tr><td colspan="2"><b>Header Message Type:</b> 0x0004</td></tr>
 | 
						|
                          <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
 | 
						|
                          <tr><td colspan="2"><b>Status:</b> Optional; may not be
 | 
						|
                              repeated.</td></tr>
 | 
						|
                          <tr><td><b>Description:</b></td>
 | 
						|
                            <td><p>The fill value message stores a single data value which
 | 
						|
                                is returned to the application when an uninitialized data element
 | 
						|
                                is read from a dataset. The fill value is interpreted with the
 | 
						|
                                same datatype as the dataset. If no fill value message is present
 | 
						|
                                then a fill value of all zero bytes is assumed.</p>
 | 
						|
                              <p>This fill value message is deprecated in favor of the
 | 
						|
                                “new” fill value message (Message Type 0x0005) and
 | 
						|
                                is only written to the file for forward compatibility with
 | 
						|
                                versions of the HDF5 Library before the 1.6.0 version.
 | 
						|
                                Additionally, it only appears for datasets with a user-defined
 | 
						|
                                fill value (as opposed to the library default fill value or an
 | 
						|
                                explicitly set “undefined” fill value).</p>
 | 
						|
                          </td></tr>
 | 
						|
                          <tr><td colspan="2"><b>Format of Data:</b> See the tables
 | 
						|
                              below.</td></tr>
 | 
						|
                      </table></center>
 | 
						|
                      <!-- end msgdesc table -->
 | 
						|
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="format">
 | 
						|
                          <caption>
 | 
						|
                            Layout: Fill Value Message (Old)
 | 
						|
                          </caption>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">Size</td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4"><br />Fill Value <em>(optional, variable size)</em><br /><br /></td>
 | 
						|
	                      </tr>
 | 
						|
                        </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
                      <br />
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="desc">
 | 
						|
                          <caption>
 | 
						|
                            Fields: Fill Value Message (Old)
 | 
						|
                          </caption>
 | 
						|
	                      <tr>
 | 
						|
                            <th width="30%">Field Name</th>
 | 
						|
                            <th>Description</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Size</p></td>
 | 
						|
	                        <td>
 | 
						|
                              <p>This is the size of the Fill Value field in bytes.
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Fill Value</p></td>
 | 
						|
	                        <td>
 | 
						|
                              <p>The fill value.  The bytes of the fill value are interpreted
 | 
						|
                                using the same datatype as for the dataset.
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
                        </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
 | 
						|
                      <h4><a name="FillValueMessage">IV.A.2.f. The Data Storage -
 | 
						|
                          Fill Value Message</a></h4>
 | 
						|
 | 
						|
                      <!-- start msgdesc table -->
 | 
						|
                      <center>
 | 
						|
                        <table class="msgdesc">
 | 
						|
                          <tr><td colspan="2"><b>Header Message Name:</b> Fill
 | 
						|
                              Value</td></tr>
 | 
						|
                          <tr><td colspan="2"><b>Header Message Type:</b> 0x0005</td></tr>
 | 
						|
                          <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
 | 
						|
                          <tr><td colspan="2"><b>Status:</b> Required for dataset objects;
 | 
						|
                              may not be repeated.</td></tr>
 | 
						|
                          <tr><td><b>Description:</b></td>
 | 
						|
                            <td>The fill value message stores a single data value which is
 | 
						|
                              returned to the application when an uninitialized data element
 | 
						|
                              is read from a dataset. The fill value is interpreted with the
 | 
						|
                              same datatype as the dataset.</td></tr>
 | 
						|
                          <tr><td colspan="2"><b>Format of Data:</b> See the tables
 | 
						|
                              below.</td></tr>
 | 
						|
                      </table></center>
 | 
						|
                      <!-- end msgdesc table -->
 | 
						|
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="format">
 | 
						|
                          <caption>
 | 
						|
                            Layout: Fill Value Message - Versions 1 and 2
 | 
						|
                          </caption>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td>Version</td>
 | 
						|
	                        <td>Space Allocation Time</td>
 | 
						|
	                        <td>Fill Value Write Time</td>
 | 
						|
	                        <td>Fill Value Defined</td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">Size <em>(optional)</em></td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4"><br />Fill Value <em>(optional, variable size)</em><br /><br /></td>
 | 
						|
	                      </tr>
 | 
						|
                        </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
                      <br />
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="desc">
 | 
						|
                          <caption>
 | 
						|
                            Fields: Fill Value Message - Versions 1 and 2
 | 
						|
                          </caption>
 | 
						|
	                      <tr>
 | 
						|
                            <th width="30%">Field Name</th>
 | 
						|
                            <th>Description</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Version</p></td>
 | 
						|
	                        <td>
 | 
						|
                              <p>The version number information is used for changes in the
 | 
						|
                                format of the fill value message and is described here:
 | 
						|
                                <table class="list">
 | 
						|
                                  <tr>
 | 
						|
                                    <th width="20%" align="center">Version</th>
 | 
						|
                                    <th width="80%" align="left">Description</th>
 | 
						|
                                  </tr>
 | 
						|
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>0</code></td>
 | 
						|
                                    <td>Never used
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>1</code></td>
 | 
						|
                                    <td>Initial version of this message.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>2</code></td>
 | 
						|
                                    <td>In this version, the Size and Fill Value fields are
 | 
						|
                                      only present if the Fill Value Defined field is set
 | 
						|
                                      to 1.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>3</code></td>
 | 
						|
                                    <td>This version packs the other fields in the message
 | 
						|
                                      more efficiently than version 2.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                              </table></p>
 | 
						|
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Space Allocation Time</p></td>
 | 
						|
	                        <td>
 | 
						|
                              <p>When the storage space for the dataset’s raw data will be
 | 
						|
                                allocated.  The allowed values are:
 | 
						|
                                <table class="list">
 | 
						|
                                  <tr>
 | 
						|
                                    <th width="20%" align="center">Value</th>
 | 
						|
                                    <th width="80%" align="left">Description</th>
 | 
						|
                                  </tr>
 | 
						|
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>0</code></td>
 | 
						|
                                    <td>Not used.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>1</code></td>
 | 
						|
                                    <td>Early allocation.  Storage space for the entire dataset
 | 
						|
                                      should be allocated in the file when the dataset is
 | 
						|
                                      created.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>2</code></td>
 | 
						|
                                    <td>Late allocation.  Storage space for the entire dataset
 | 
						|
                                      should not be allocated until the dataset is written
 | 
						|
                                      to.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>3</code></td>
 | 
						|
                                    <td>Incremental allocation.  Storage space for the
 | 
						|
                                      dataset should not be allocated until the portion
 | 
						|
                                      of the dataset is written to.  This is currently
 | 
						|
                                      used in conjunction with chunked data storage for
 | 
						|
                                      datasets.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                              </table></p>
 | 
						|
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Fill Value Write Time</p></td>
 | 
						|
	                        <td>
 | 
						|
                              <p>At the time that storage space for the dataset’s raw data is
 | 
						|
                                allocated, this value indicates whether the fill value should
 | 
						|
                                be written to the raw data storage elements.  The allowed values
 | 
						|
                                are:
 | 
						|
                                <table class="list">
 | 
						|
                                  <tr>
 | 
						|
                                    <th width="20%" align="center">Value</th>
 | 
						|
                                    <th width="80%" align="left">Description</th>
 | 
						|
                                  </tr>
 | 
						|
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>0</code></td>
 | 
						|
                                    <td>On allocation.  The fill value is always written to
 | 
						|
                                      the raw data storage when the storage space is allocated.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>1</code></td>
 | 
						|
                                    <td>Never.  The fill value should never be written to
 | 
						|
                                      the raw data storage.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>2</code></td>
 | 
						|
                                    <td>Fill value written if set by user.  The fill value
 | 
						|
                                      will be written to the raw data storage when the storage
 | 
						|
                                      space is allocated only if the user explicitly set
 | 
						|
                                      the fill value.  If the fill value is the library
 | 
						|
                                      default or is undefined, it will not be written to
 | 
						|
                                      the raw data storage.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                              </table></p>
 | 
						|
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Fill Value Defined</p></td>
 | 
						|
	                        <td>
 | 
						|
                              <p>This value indicates if a fill value is defined for this
 | 
						|
                                dataset.  If this value is 0, the fill value is undefined.
 | 
						|
                                If this value is 1, a fill value is defined for this dataset.
 | 
						|
                                For version 2 or later of the fill value message, this value
 | 
						|
                                controls the presence of the Size and Fill Value fields.
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Size</p></td>
 | 
						|
	                        <td>
 | 
						|
                              <p>This is the size of the Fill Value field in bytes.  This field
 | 
						|
                                is not present if the Version field is greater than 1,
 | 
						|
                                and the Fill Value Defined field is set to 0.
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Fill Value</p></td>
 | 
						|
	                        <td>
 | 
						|
                              <p>The fill value.  The bytes of the fill value are interpreted
 | 
						|
                                using the same datatype as for the dataset.  This field is
 | 
						|
                                not present if the Version field is greater than 1,
 | 
						|
                                and the Fill Value Defined field is set to 0.
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
                        </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
                      <br />
 | 
						|
                      <br />
 | 
						|
                      <br />
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="format">
 | 
						|
                          <caption>
 | 
						|
                            Layout: Fill Value Message - Version 3
 | 
						|
                          </caption>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td>Version</td>
 | 
						|
	                        <td>Flags</td>
 | 
						|
                            <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">Size <em>(optional)</em></td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4"><br />Fill Value <em>(optional, variable size)</em><br /><br /></td>
 | 
						|
	                      </tr>
 | 
						|
                        </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
                      <br />
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="desc">
 | 
						|
                          <caption>
 | 
						|
                            Fields: Fill Value Message - Version 3
 | 
						|
                          </caption>
 | 
						|
	                      <tr>
 | 
						|
                            <th width="30%">Field Name</th>
 | 
						|
                            <th>Description</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Version</p></td>
 | 
						|
	                        <td>
 | 
						|
                              <p>The version number information is used for changes in the
 | 
						|
                                format of the fill value message and is described here:
 | 
						|
                                <table class="list">
 | 
						|
                                  <tr>
 | 
						|
                                    <th width="20%" align="center">Version</th>
 | 
						|
                                    <th width="80%" align="left">Description</th>
 | 
						|
                                  </tr>
 | 
						|
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>0</code></td>
 | 
						|
                                    <td>Never used
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>1</code></td>
 | 
						|
                                    <td>Initial version of this message.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>2</code></td>
 | 
						|
                                    <td>In this version, the Size and Fill Value fields are
 | 
						|
                                      only present if the Fill Value Defined field is set
 | 
						|
                                      to 1.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>3</code></td>
 | 
						|
                                    <td>This version packs the other fields in the message
 | 
						|
                                      more efficiently than version 2.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                              </table></p>
 | 
						|
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Flags</p></td>
 | 
						|
	                        <td>
 | 
						|
                              <p>When the storage space for the dataset’s raw data will be
 | 
						|
                                allocated.  The allowed values are:
 | 
						|
                                <table class="list">
 | 
						|
                                  <tr>
 | 
						|
                                    <th width="20%" align="center">Bits</th>
 | 
						|
                                    <th width="80%" align="left">Description</th>
 | 
						|
                                  </tr>
 | 
						|
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>0-1</code></td>
 | 
						|
                                    <td>Space Allocation Time, with the same
 | 
						|
                                      values as versions 1 and 2 of the message.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>2-3</code></td>
 | 
						|
                                    <td>Fill Value Write Time, with the same
 | 
						|
                                      values as versions 1 and 2 of the message.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>4</code></td>
 | 
						|
                                    <td>Fill Value Undefined, indicating that the fill
 | 
						|
                                      value has been marked as “undefined” for this dataset.
 | 
						|
                                      Bits 4 and 5 cannot both be set.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>5</code></td>
 | 
						|
                                    <td>Fill Value Defined, with the same values as
 | 
						|
                                      versions 1 and 2 of the message.
 | 
						|
                                      Bits 4 and 5 cannot both be set.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>6-7</code></td>
 | 
						|
                                    <td>Reserved (zero).
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                              </table></p>
 | 
						|
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Size</p></td>
 | 
						|
	                        <td>
 | 
						|
                              <p>This is the size of the Fill Value field in bytes.  This field
 | 
						|
                                is not present if the Version field is greater than 1,
 | 
						|
                                and the Fill Value Defined flag is set to 0.
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Fill Value</p></td>
 | 
						|
	                        <td>
 | 
						|
                              <p>The fill value.  The bytes of the fill value are interpreted
 | 
						|
                                using the same datatype as for the dataset.  This field is
 | 
						|
                                not present if the Version field is greater than 1,
 | 
						|
                                and the Fill Value Defined flag is set to 0.
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
                        </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
 | 
						|
                      <h4><a name="LinkMessage">IV.A.2.g. The Link Message</a></h4>
 | 
						|
 | 
						|
                      <!-- start msgdesc table -->
 | 
						|
                      <center>
 | 
						|
                        <table class="msgdesc">
 | 
						|
                          <tr><td colspan="2"><b>Header Message Name:</b> Link</td></tr>
 | 
						|
                          <tr><td colspan="2"><b>Header Message Type:</b> 0x0006</td></tr>
 | 
						|
                          <tr><td colspan="2"><b>Length:</b> Varies </td></tr>
 | 
						|
                          <tr><td colspan="2"><b>Status:</b> Optional; may be
 | 
						|
                              repeated. </td></tr>
 | 
						|
                          <tr><td><b>Description:</b></td>
 | 
						|
                            <td><p>This message encodes the information for a link in a
 | 
						|
                                group’s object header, when the group is storing its links
 | 
						|
                                “compactly”, or in the group’s fractal heap,
 | 
						|
                                when the group is storing its links “densely”.</p>
 | 
						|
                              <p>A group is storing its links compactly when the fractal heap
 | 
						|
                                address in the <em><a href="#LinkInfoMessage">Link Info
 | 
						|
                                    Message</a></em> is set to the “undefined address”
 | 
						|
                                value.</p></td></tr>
 | 
						|
                          <tr><td colspan="2"><b>Format of Data:</b> See the tables
 | 
						|
                              below.</td></tr>
 | 
						|
                      </table></center>
 | 
						|
                      <!-- end msgdesc table -->
 | 
						|
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="format">
 | 
						|
                          <caption>
 | 
						|
                            Layout: Link Message
 | 
						|
                          </caption>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td>Version</td>
 | 
						|
	                        <td>Flags</td>
 | 
						|
	                        <td>Link type <em>(optional)</em></td>
 | 
						|
                            <td bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	                      </tr>
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4"><br />Creation Order <em>(8 bytes, optional)</em><br /><br /></td>
 | 
						|
	                      </tr>
 | 
						|
	                      <tr>
 | 
						|
	                        <td>Link Name Character Set <em>(optional)</em></td>
 | 
						|
	                        <td>Length of Link Name (variable size)</td>
 | 
						|
                            <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	                      </tr>
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">Link Name (variable size)</td>
 | 
						|
	                      </tr>
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4"><br />Link Information (variable size)<br /><br /></td>
 | 
						|
	                      </tr>
 | 
						|
                        </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
                      <br />
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="desc">
 | 
						|
                          <caption>
 | 
						|
                            Fields: Link Message
 | 
						|
                          </caption>
 | 
						|
	                      <tr>
 | 
						|
                            <th width="30%">Field Name</th>
 | 
						|
                            <th>Description</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Version</p></td>
 | 
						|
	                        <td><p>The version number for this message. This document describes version 1.</p>
 | 
						|
	                        </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Flags</p></td>
 | 
						|
	                        <td><p>This field contains information about the link and controls
 | 
						|
                                the presence of other fields below.
 | 
						|
                                <table class="list">
 | 
						|
                                  <tr>
 | 
						|
                                    <th width="20%" align="center">Bits</th>
 | 
						|
                                    <th width="80%" align="left">Description</th>
 | 
						|
                                  </tr>
 | 
						|
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>0-1</code></td>
 | 
						|
                                    <td>Determines the size of the <em>Length of Link Name</em>
 | 
						|
                                      field.
 | 
						|
                                      <table class="list">
 | 
						|
                                        <tr>
 | 
						|
                                          <th width="20%" align="center">Value</th>
 | 
						|
                                          <th width="80%" align="left">Description</th>
 | 
						|
                                        </tr>
 | 
						|
 | 
						|
                                        <tr>
 | 
						|
                                          <td align="center"><code>0</code></td>
 | 
						|
                                          <td>The size of the <em>Length of Link Name</em>
 | 
						|
                                            field is 1 byte.
 | 
						|
                                          </td>
 | 
						|
                                        </tr>
 | 
						|
                                        <tr>
 | 
						|
                                          <td align="center"><code>1</code></td>
 | 
						|
                                          <td>The size of the <em>Length of Link Name</em>
 | 
						|
                                            field is 2 bytes.
 | 
						|
                                          </td>
 | 
						|
                                        </tr>
 | 
						|
                                        <tr>
 | 
						|
                                          <td align="center"><code>2</code></td>
 | 
						|
                                          <td>The size of the <em>Length of Link Name</em>
 | 
						|
                                            field is 4 bytes.
 | 
						|
                                          </td>
 | 
						|
                                        </tr>
 | 
						|
                                        <tr>
 | 
						|
                                          <td align="center"><code>3</code></td>
 | 
						|
                                          <td>The size of the <em>Length of Link Name</em>
 | 
						|
                                            field is 8 bytes.
 | 
						|
                                          </td>
 | 
						|
                                        </tr>
 | 
						|
                                      </table>
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>2</code></td>
 | 
						|
                                    <td>Creation Order Field Present: if set, the <em>Creation
 | 
						|
                                        Order</em> field is present.  If not set, creation order
 | 
						|
                                      information is not stored for links in this group.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>3</code></td>
 | 
						|
                                    <td>Link Type Field Present: if set, the link is not
 | 
						|
                                      a hard link and the <em>Link Type</em> field is present.
 | 
						|
                                      If not set, the link is a hard link.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>4</code></td>
 | 
						|
                                    <td>Link Name Character Set Field Present: if set, the
 | 
						|
                                      link name is not represented with the ASCII character
 | 
						|
                                      set and the <em>Link Name Character Set</em> field is
 | 
						|
                                      present.  If not set, the link name is represented with
 | 
						|
                                      the ASCII character set.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>5-7</code></td>
 | 
						|
                                    <td>Reserved (zero).
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                              </table></p>
 | 
						|
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Link type</p></td>
 | 
						|
	                        <td><p>This is the link class type and can be one of the following
 | 
						|
                                values:
 | 
						|
                                <table class="list">
 | 
						|
                                  <tr>
 | 
						|
                                    <th width="20%" align="center">Value</th>
 | 
						|
                                    <th width="80%" align="left">Description</th>
 | 
						|
                                  </tr>
 | 
						|
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>0</code></td>
 | 
						|
                                    <td>A hard link (should never be stored in the file)
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>1</code></td>
 | 
						|
                                    <td>A soft link.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>2-63</code></td>
 | 
						|
                                    <td>Reserved for future HDF5 internal use.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>64</code></td>
 | 
						|
                                    <td>An external link.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>65-255</code></td>
 | 
						|
                                    <td>Reserved, but available for user-defined link types.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                              </table></p>
 | 
						|
 | 
						|
	                          <p>This field is present if bit 3 of <em>Flags</em> is set.</p>
 | 
						|
	                        </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Creation Order</p></td>
 | 
						|
	                        <td><p>This 64-bit value is an index of the link’s creation time within
 | 
						|
                                the group.  Values start at 0 when the group is created an increment
 | 
						|
                                by one for each link added to the group.  Removing a link from a
 | 
						|
                                group does not change existing links’ creation order field.
 | 
						|
                              </p>
 | 
						|
	                          <p>This field is present if bit 2 of <em>Flags</em> is set.</p>
 | 
						|
	                        </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Link Name Character Set</p></td>
 | 
						|
	                        <td><p>This is the character set for encoding the link’s name:
 | 
						|
                                <table class="list">
 | 
						|
                                  <tr>
 | 
						|
                                    <th width="20%" align="center">Value</th>
 | 
						|
                                    <th width="80%" align="left">Description</th>
 | 
						|
                                  </tr>
 | 
						|
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>0</code></td>
 | 
						|
                                    <td>ASCII character set encoding (this should never be stored
 | 
						|
                                      in the file)
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>1</code></td>
 | 
						|
                                    <td>UTF-8 character set encoding
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                              </table></p>
 | 
						|
 | 
						|
	                          <p>This field is present if bit 4 of <em>Flags</em> is set.</p>
 | 
						|
	                        </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Length of link name</p></td>
 | 
						|
	                        <td><p>This is the length of the link’s name.  The size of this field
 | 
						|
	                            depends on bits 0 and 1 of <em>Flags</em>.</p>
 | 
						|
	                        </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Link name</p></td>
 | 
						|
	                        <td><p>This is the name of the link, non-NULL terminated.</p>
 | 
						|
	                        </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Link information</p></td>
 | 
						|
	                        <td><p>The format of this field depends on the <em>link type</em>.</p>
 | 
						|
                              <p>For <b>hard</b> links, the field is formatted as follows:
 | 
						|
 | 
						|
                                <table class="list">
 | 
						|
                                  <tr>
 | 
						|
                                    <td width="20%"><i><a href="#SizeOfOffsetsV0">
 | 
						|
                                          Size of Offsets</a></i> bytes:</td>
 | 
						|
                                    <td width="80%">The address of the object header for the object that the
 | 
						|
                                      link points to.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                </table>
 | 
						|
                              </p>
 | 
						|
 | 
						|
                              <p>
 | 
						|
                                For <b>soft</b> links, the field is formatted as follows:
 | 
						|
 | 
						|
                                <table class="list">
 | 
						|
                                  <tr>
 | 
						|
                                    <td width="20%">Bytes 1-2:</td>
 | 
						|
                                    <td width="80%">Length of soft link value.</td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td><em>Length of soft link value</em> bytes:</td>
 | 
						|
                                    <td>A non-NULL-terminated string storing the value of the
 | 
						|
                                      soft link.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                </table>
 | 
						|
                              </p>
 | 
						|
 | 
						|
                              <p>
 | 
						|
                                For <b>external</b> links, the field is formatted as follows:
 | 
						|
 | 
						|
                                <table class="list">
 | 
						|
                                  <tr>
 | 
						|
                                    <td width="20%">Bytes 1-2:</td>
 | 
						|
                                    <td width="80%">Length of external link value.</td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td><em>Length of external link value</em> bytes:</td>
 | 
						|
                                    <td>The first byte contains the version number in the
 | 
						|
                                      upper 4 bits and flags in the lower 4 bits for the external
 | 
						|
                                      link. Both version and flags are defined to be zero in
 | 
						|
                                      this document. The remaining bytes consist of two
 | 
						|
                                      NULL-terminated strings, with no padding between them.
 | 
						|
                                      The first string is the name of the HDF5 file containing
 | 
						|
                                      the object linked to and the second string is the full path
 | 
						|
                                      to the object linked to, within the HDF5 file’s
 | 
						|
                                      group hierarchy.
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                </table>
 | 
						|
                              </p>
 | 
						|
 | 
						|
                              <p>
 | 
						|
                                For <b>user-defined</b> links, the field is formatted as follows:
 | 
						|
 | 
						|
                                <table class="list">
 | 
						|
                                  <tr>
 | 
						|
                                    <td width="20%">Bytes 1-2:</td>
 | 
						|
                                    <td width="80%">Length of user-defined data.</td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td><em>Length of user-defined link value</em> bytes:</td>
 | 
						|
                                    <td>The data supplied for the user-defined link type.</td>
 | 
						|
                                  </tr>
 | 
						|
                                </table>
 | 
						|
                              </p>
 | 
						|
 | 
						|
                            </td>
 | 
						|
                          </tr>
 | 
						|
                        </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
                      <h4><a name="ExternalFileListMessage">IV.A.2.h. The Data Storage -
 | 
						|
                          External Data Files Message</a></h4>
 | 
						|
 | 
						|
                      <!-- start msgdesc table -->
 | 
						|
                      <center>
 | 
						|
                        <table class="msgdesc">
 | 
						|
                          <tr><td colspan="2"><b>Header Message Name:</b> External
 | 
						|
                              Data Files</td></tr>
 | 
						|
                          <tr><td colspan="2"><b>Header Message Type:</b> 0x0007</td></tr>
 | 
						|
                          <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
 | 
						|
                          <tr><td colspan="2"><b>Status:</b> Optional; may not be
 | 
						|
                              repeated.</td></tr>
 | 
						|
                          <tr><td><b>Description:</b></td>
 | 
						|
                            <td>The external data storage message indicates that the data
 | 
						|
                              for an object is stored outside the HDF5 file. The filename of
 | 
						|
                              the object is stored as a Universal Resource Location (URL) of
 | 
						|
                              the actual filename containing the data. An external file list
 | 
						|
                              record also contains the byte offset of the start of the data
 | 
						|
                              within the file and the amount of space reserved in the file
 | 
						|
                              for that data.</td></tr>
 | 
						|
                          <tr><td colspan="2"><b>Format of Data:</b> See the tables
 | 
						|
                              below.</td></tr>
 | 
						|
                      </table></center>
 | 
						|
                      <!-- end msgdesc table -->
 | 
						|
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="format">
 | 
						|
                          <caption>
 | 
						|
                            Layout: External File List Message
 | 
						|
                          </caption>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td>Version</td>
 | 
						|
	                        <td colspan="3">Reserved (zero)</td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="2">Allocated Slots</td>
 | 
						|
	                        <td colspan="2">Used Slots</td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4"><br />Heap Address<sup>O</sup><br /><br /></td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4"><br />Slot Definitions...<br /><br /></td>
 | 
						|
	                      </tr>
 | 
						|
                        </table>
 | 
						|
 | 
						|
                        <table class="note">
 | 
						|
                          <tr>
 | 
						|
                            <td width="60%"> </td>
 | 
						|
                            <td width="40%">
 | 
						|
                              (Items marked with an ‘O’ in the above table are
 | 
						|
                              of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
                                of Offsets</a> field in the superblock.)
 | 
						|
                          </td></tr>
 | 
						|
                        </table>
 | 
						|
 | 
						|
                      </div>
 | 
						|
 | 
						|
                      <br />
 | 
						|
                      <div align="center">
 | 
						|
	                    <table class="desc">
 | 
						|
                          <caption>
 | 
						|
                            Fields: External File List Message
 | 
						|
                          </caption>
 | 
						|
	                      <tr>
 | 
						|
	                        <th width="30%">Field Name</th>
 | 
						|
	                        <th>Description</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Version</p></td>
 | 
						|
	                        <td>
 | 
						|
	                          <p>The version number information is used for changes in the format of
 | 
						|
                                External Data Storage Message and is described here:
 | 
						|
		                        <table class="list">
 | 
						|
		                          <tr>
 | 
						|
			                        <th width="20%" align="center">Version</th>
 | 
						|
			                        <th width="80%" align="left">Description</th>
 | 
						|
		                          </tr>
 | 
						|
		                          <tr>
 | 
						|
			                        <td align="center"><code>0</code></td>
 | 
						|
			                        <td>Never used.</td>
 | 
						|
		                          </tr>
 | 
						|
		                          <tr>
 | 
						|
			                        <td align="center"><code>1</code></td>
 | 
						|
			                        <td>The current version used by the library.</td>
 | 
						|
		                          </tr>
 | 
						|
		                      </table></p>
 | 
						|
 | 
						|
	                        </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Allocated Slots</p></td>
 | 
						|
	                        <td>
 | 
						|
	                          <p>The total number of slots allocated in the message.  Its value must be at least as
 | 
						|
		                        large as the value contained in the Used Slots field. (The current library simply
 | 
						|
		                        uses the number of Used Slots for this message)</p>
 | 
						|
	                        </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Used Slots</p></td>
 | 
						|
	                        <td>
 | 
						|
	                          <p>The number of initial slots which contains valid information.</p>
 | 
						|
	                        </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Heap Address</p></td>
 | 
						|
	                        <td>
 | 
						|
	                          <p>This is the address of a local heap which contains the names for the external
 | 
						|
		                        files (The local heap information can be found in Disk Format Level 1D in this
 | 
						|
		                        document).  The name at offset zero in the heap is always the empty string.</p>
 | 
						|
	                        </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Slot Definitions</p></td>
 | 
						|
	                        <td>
 | 
						|
	                          <p>The slot definitions are stored in order according to the array addresses they
 | 
						|
		                        represent.</p>
 | 
						|
	                        </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                    </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
                      <br />
 | 
						|
                      <br />
 | 
						|
                      <br />
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="format">
 | 
						|
                          <caption>
 | 
						|
                            Layout: External File List Slot
 | 
						|
                          </caption>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4"><br />Name Offset in Local Heap<sup>L</sup><br /><br /></td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4"><br />Offset in External Data File<sup>L</sup><br /><br /></td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4"><br />Data Size in External File<sup>L</sup><br /><br /></td>
 | 
						|
	                      </tr>
 | 
						|
                        </table>
 | 
						|
 | 
						|
                        <table class="note">
 | 
						|
                          <tr>
 | 
						|
                            <td width="60%"> </td>
 | 
						|
                            <td width="40%">
 | 
						|
                              (Items marked with an ‘L’ in the above table are
 | 
						|
                              of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
                                of Lengths</a> field in the superblock.)
 | 
						|
                          </td></tr>
 | 
						|
                        </table>
 | 
						|
 | 
						|
                      </div>
 | 
						|
 | 
						|
                      <br />
 | 
						|
                      <div align="center">
 | 
						|
	                    <table class="desc">
 | 
						|
                          <caption>
 | 
						|
                            Fields: External File List Slot
 | 
						|
                          </caption>
 | 
						|
	                      <tr>
 | 
						|
	                        <th width="30%">Field Name</th>
 | 
						|
	                        <th>Description</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Name Offset in Local Heap</p></td>
 | 
						|
	                        <td>
 | 
						|
		                      <p>The byte offset within the local name heap for the name
 | 
						|
	    	                    of the file.  File names are stored as a URL which has a
 | 
						|
	    	                    protocol name, a host name, a port number, and a file
 | 
						|
	    	                    name:
 | 
						|
		                        <code><em>protocol</em>:<em>port</em>//<em>host</em>/<em>file</em></code>.
 | 
						|
		                        If the protocol is omitted then “file:” is assumed.  If
 | 
						|
		                        the port number is omitted then a default port for that
 | 
						|
		                        protocol is used.  If both the protocol and the port
 | 
						|
		                        number are omitted then the colon can also be omitted. If
 | 
						|
		                        the double slash and host name are omitted then
 | 
						|
		                        “localhost” is assumed.  The file name is the only
 | 
						|
		                        mandatory part, and if the leading slash is missing then
 | 
						|
		                        it is relative to the application’s current working
 | 
						|
		                        directory (the use of relative names is not
 | 
						|
		                        recommended).
 | 
						|
                              </p>
 | 
						|
	                        </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Offset in External Data File</p></td>
 | 
						|
	                        <td>
 | 
						|
	  	                      <p>This is the byte offset to the start of the data in the
 | 
						|
	                            specified file. For files that contain data for a single
 | 
						|
	                            dataset this will usually be zero.</p>
 | 
						|
	                        </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Data Size in External File</p></td>
 | 
						|
	                        <td>
 | 
						|
		                      <p>This is the total number of bytes reserved in the
 | 
						|
		                        specified file for raw data storage.  For a file that
 | 
						|
		                        contains exactly one complete dataset which is not
 | 
						|
		                        extendable, the size will usually be the exact size of the
 | 
						|
		                        dataset.  However, by making the size larger one allows
 | 
						|
		                        HDF5 to extend the dataset. The size can be set to a value
 | 
						|
		                        larger than the entire file since HDF5 will read zeroes
 | 
						|
		                        past the end of the file without failing.</p>
 | 
						|
	                        </td>
 | 
						|
	                      </tr>
 | 
						|
	                    </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
 | 
						|
                      <h4><a name="LayoutMessage">IV.A.2.i. The Data Layout Message</a></h4>
 | 
						|
 | 
						|
                      <!-- start msgdesc table -->
 | 
						|
                      <center>
 | 
						|
                        <table class="msgdesc">
 | 
						|
                          <tr><td colspan="2"><b>Header Message Name:</b> Data Layout</td></tr>
 | 
						|
                          <tr><td colspan="2"><b>Header Message Type:</b> 0x0008</td></tr>
 | 
						|
                          <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
 | 
						|
                          <tr><td colspan="2"><b>Status:</b> Required for datasets; may not
 | 
						|
                              be repeated.</td></tr>
 | 
						|
                          <tr><td><b>Description:</b></td>
 | 
						|
                            <td>The Data Layout message
 | 
						|
                              describes how the elements of a multi-dimensional array are stored
 | 
						|
                              in the HDF5 file. Four types of data layout are supported:
 | 
						|
                              <ol>
 | 
						|
                                <li>Contiguous: The array is stored in one contiguous area of
 | 
						|
                                  the file. This layout requires that the size of the array be
 | 
						|
                                  constant: data manipulations such as chunking, compression,
 | 
						|
                                  checksums, or encryption are not permitted. The message stores
 | 
						|
                                  the total storage size of the array. The offset of an element
 | 
						|
                                  from the beginning of the storage area is computed as in a C
 | 
						|
                                  array.</li>
 | 
						|
                                <li>Chunked: The array domain is regularly decomposed into
 | 
						|
                                  chunks, and each chunk is allocated and stored separately. This
 | 
						|
                                  layout supports arbitrary element traversals, compression,
 | 
						|
                                  encryption, and checksums (these features are described
 | 
						|
                                  in other messages). The message stores the size of a chunk
 | 
						|
                                  instead of the size of the entire array; the storage size of
 | 
						|
                                  the entire array can be calculated by traversing the chunk index
 | 
						|
                                  that stores the chunk addresses.</li>
 | 
						|
                                <li>Compact: The array is stored in one contiguous block as
 | 
						|
                                  part of this object header message.</li>
 | 
						|
                                <li>Virtual: This is only supported for version 4 of the Data
 | 
						|
                                  Layout message. The message stores information that is used to
 | 
						|
                                  locate the global heap collection containing the Virtual Dataset
 | 
						|
                                  (VDS) mapping information. The mapping associates the VDS to
 | 
						|
                                  the source dataset elements that are stored across a collection
 | 
						|
                                  of HDF5 files.</li>
 | 
						|
                          </ol></td></tr>
 | 
						|
                          <tr><td colspan="2"><b>Format of Data:</b> See the tables
 | 
						|
                              below.</td></tr>
 | 
						|
                      </table></center>
 | 
						|
                      <!-- end msgdesc table -->
 | 
						|
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="format">
 | 
						|
                          <caption>
 | 
						|
                            Layout: Data Layout Message (Versions 1 and 2)
 | 
						|
                          </caption>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td>Version</td>
 | 
						|
	                        <td>Dimensionality</td>
 | 
						|
	                        <td>Layout Class</td>
 | 
						|
	                        <td>Reserved <em>(zero)</em></td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">Reserved <em>(zero)</em></td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4"><br />Data Address<sup>O</sup> <em>(optional)</em><br /><br /></td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">Dimension 1 Size</td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">Dimension 2 Size</td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">...</td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">Dimension #n Size</td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">Dataset Element Size <em>(optional)</em></td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">Compact Data Size <em>(optional)</em></td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4"><br />Compact Data... <em>(variable size, optional)</em><br /><br /></td>
 | 
						|
	                      </tr>
 | 
						|
                        </table>
 | 
						|
 | 
						|
                        <table class="note">
 | 
						|
                          <tr>
 | 
						|
                            <td width="60%"> </td>
 | 
						|
                            <td width="40%">
 | 
						|
                              (Items marked with an ‘O’ in the above table are
 | 
						|
                              of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
                                of Offsets</a> field in the superblock.)
 | 
						|
                          </td></tr>
 | 
						|
                        </table>
 | 
						|
 | 
						|
                      </div>
 | 
						|
 | 
						|
                      <br />
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="desc">
 | 
						|
                          <caption>
 | 
						|
                            Fields: Data Layout Message (Versions 1 and 2)
 | 
						|
                          </caption>
 | 
						|
	                      <tr>
 | 
						|
	                        <th width="30%">Field Name</th>
 | 
						|
	                        <th>Description</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Version</p></td>
 | 
						|
	                        <td>
 | 
						|
	                          <p>The version number information is used for changes in the format of the data
 | 
						|
	                            layout message and is described here:
 | 
						|
	                            <table class="list">
 | 
						|
		                          <tr>
 | 
						|
		                            <th width="20%" align="center">Version</th>
 | 
						|
		                            <th width="80%" align="left">Description</th>
 | 
						|
		                          </tr>
 | 
						|
 | 
						|
		                          <tr>
 | 
						|
		                            <td align="center"><code>0</code></td>
 | 
						|
		                            <td>Never used.</td>
 | 
						|
		                          </tr>
 | 
						|
 | 
						|
		                          <tr>
 | 
						|
		                            <td align="center"><code>1</code></td>
 | 
						|
		                            <td>Used by version 1.4 and before of the library to encode layout information.
 | 
						|
		                              Data space is always allocated when the data set is created.</td>
 | 
						|
		                          </tr>
 | 
						|
 | 
						|
		                          <tr>
 | 
						|
		                            <td align="center"><code>2</code></td>
 | 
						|
		                            <td>Used by version 1.6.[0,1,2] of the library to encode layout information.
 | 
						|
		                              Data space is allocated only when it is necessary.</td>
 | 
						|
		                          </tr>
 | 
						|
	                          </table></p>
 | 
						|
	                        </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Dimensionality</p></td>
 | 
						|
	                        <td><p>An array has a fixed dimensionality.  This field
 | 
						|
	                            specifies the number of dimension size fields later in the
 | 
						|
	                            message. The value stored for chunked storage is 1 greater than
 | 
						|
                                the number of dimensions in the dataset’s dataspace.
 | 
						|
                                For example, 2 is stored for a 1 dimensional dataset.
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Layout Class</p></td>
 | 
						|
	                        <td><p>The layout class specifies the type of storage for the data
 | 
						|
                                and how the other fields of the layout message are to be
 | 
						|
                                interpreted.
 | 
						|
 | 
						|
	                            <table class="list">
 | 
						|
		                          <tr>
 | 
						|
		                            <th width="20%" align="center">Value</th>
 | 
						|
		                            <th width="80%" align="left">Description</th>
 | 
						|
		                          </tr>
 | 
						|
 | 
						|
		                          <tr>
 | 
						|
		                            <td align="center"><code>0</code></td>
 | 
						|
		                            <td>Compact Storage
 | 
						|
                                    </td>
 | 
						|
		                          </tr>
 | 
						|
 | 
						|
		                          <tr>
 | 
						|
		                            <td align="center"><code>1</code></td>
 | 
						|
		                            <td>Contiguous Storage
 | 
						|
                                    </td>
 | 
						|
		                          </tr>
 | 
						|
 | 
						|
		                          <tr>
 | 
						|
		                            <td align="center"><code>2</code></td>
 | 
						|
		                            <td>Chunked Storage
 | 
						|
                                    </td>
 | 
						|
		                          </tr>
 | 
						|
	                            </table>
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Data Address</p></td>
 | 
						|
	                        <td><p>For contiguous storage, this is the address of the raw
 | 
						|
	                            data in the file.  For chunked storage this is the address
 | 
						|
	                            of the <a href="#V1Btrees">v1 B-tree</a> that is used to look up the addresses of the
 | 
						|
	                            chunks.  This field is not present for compact storage.
 | 
						|
                                If the version for this message is greater than 1, the address
 | 
						|
                                may have the “undefined address” value, to indicate that
 | 
						|
                                storage has not yet been allocated for this array.</p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Dimension #n Size</p></td>
 | 
						|
	                        <td><p>For contiguous and compact storage the dimensions define
 | 
						|
                                the entire size of the array while for chunked storage they define
 | 
						|
                                the size of a single chunk.  In all cases, they are in units of
 | 
						|
                                array elements (not bytes).  The first dimension stored in the list
 | 
						|
                                of dimensions is the slowest changing dimension and the last
 | 
						|
                                dimension stored is the fastest changing dimension.
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Dataset Element Size</p></td>
 | 
						|
	                        <td><p>The size of a dataset element, in bytes.  This field is only
 | 
						|
                                present for chunked storage.
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Compact Data Size</p></td>
 | 
						|
	                        <td><p>This field is only present for compact data storage.
 | 
						|
                                It contains the size of the raw data for the dataset array, in
 | 
						|
                                bytes.</p>
 | 
						|
                            </td>
 | 
						|
                          </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Compact Data</p></td>
 | 
						|
	                        <td><p>This field is only present for compact data storage.
 | 
						|
                                It contains the raw data for the dataset array.</p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
                        </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
                      <br />
 | 
						|
                      <p>Version 3 of this message re-structured the format into specific
 | 
						|
                        properties that are required for each layout class.</p>
 | 
						|
 | 
						|
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="format">
 | 
						|
                          <caption>
 | 
						|
                            Layout: Data Layout Message (Version 3)
 | 
						|
                          </caption>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td>Version</td>
 | 
						|
	                        <td>Layout Class</td>
 | 
						|
                            <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4"><br />Properties <em>(variable size)</em><br /><br /></td>
 | 
						|
	                      </tr>
 | 
						|
                        </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
                      <br />
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="desc">
 | 
						|
                          <caption>
 | 
						|
                            Fields: Data Layout Message (Version 3)
 | 
						|
                          </caption>
 | 
						|
	                      <tr>
 | 
						|
	                        <th width="30%">Field Name</th>
 | 
						|
	                        <th>Description</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Version</p></td>
 | 
						|
	                        <td>
 | 
						|
	                          <p>The version number information is used for changes in the format of layout message
 | 
						|
	                            and is described here:
 | 
						|
	                            <table class="list">
 | 
						|
		                          <tr>
 | 
						|
		                            <th width="20%" align="center">Version</th>
 | 
						|
		                            <th width="80%" align="left">Description</th>
 | 
						|
		                          </tr>
 | 
						|
 | 
						|
		                          <tr>
 | 
						|
		                            <td align="center"><code>3</code></td>
 | 
						|
		                            <td>Used by the version 1.6.3 and later of the library to store properties
 | 
						|
		                              for each layout class.</td>
 | 
						|
		                          </tr>
 | 
						|
	                          </table></p>
 | 
						|
	                        </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Layout Class</p></td>
 | 
						|
	                        <td><p>The layout class specifies the type of storage for the data
 | 
						|
                                and how the other fields of the layout message are to be
 | 
						|
                                interpreted.
 | 
						|
	                            <table class="list">
 | 
						|
		                          <tr>
 | 
						|
		                            <th width="20%" align="center">Value</th>
 | 
						|
		                            <th width="80%" align="left">Description</th>
 | 
						|
		                          </tr>
 | 
						|
 | 
						|
		                          <tr>
 | 
						|
		                            <td align="center"><code>0</code></td>
 | 
						|
		                            <td>Compact Storage
 | 
						|
                                    </td>
 | 
						|
		                          </tr>
 | 
						|
 | 
						|
		                          <tr>
 | 
						|
		                            <td align="center"><code>1</code></td>
 | 
						|
		                            <td>Contiguous Storage
 | 
						|
                                    </td>
 | 
						|
		                          </tr>
 | 
						|
 | 
						|
		                          <tr>
 | 
						|
		                            <td align="center"><code>2</code></td>
 | 
						|
		                            <td>Chunked Storage
 | 
						|
                                    </td>
 | 
						|
		                          </tr>
 | 
						|
	                            </table>
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Properties</p></td>
 | 
						|
	                        <td><p>This variable-sized field encodes information specific to each
 | 
						|
                                layout class and is described below.  If there is no property
 | 
						|
                                information specified for a layout class, the size of this field
 | 
						|
                                is zero bytes.</p></td>
 | 
						|
	                      </tr>
 | 
						|
                        </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
                      <br />
 | 
						|
                      <a name="CompactStorage"></a>
 | 
						|
                      <p>Class-specific information for compact storage (layout class 0):  (Note: The dimensionality information
 | 
						|
                        is in the Dataspace message)</p>
 | 
						|
 | 
						|
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="format">
 | 
						|
                          <caption>
 | 
						|
                            Layout: Compact Storage Property Description
 | 
						|
                          </caption>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="2">Size</td>
 | 
						|
                            <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4"><br />Raw Data... <em>(variable size)</em><br /><br /></td>
 | 
						|
	                      </tr>
 | 
						|
                        </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
                      <br />
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="desc">
 | 
						|
                          <caption>
 | 
						|
                            Fields: Compact Storage Property Description
 | 
						|
                          </caption>
 | 
						|
	                      <tr>
 | 
						|
                            <th width="30%">Field Name</th>
 | 
						|
                            <th>Description</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Size</p></td>
 | 
						|
	                        <td><p>This field contains the size of the raw data for the dataset
 | 
						|
                                array, in bytes.
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Raw Data</p></td>
 | 
						|
	                        <td><p>This field contains the raw data for the dataset array.</p></td>
 | 
						|
	                      </tr>
 | 
						|
                        </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
 | 
						|
                      <br />
 | 
						|
                      <a name="ContiguousStorage"></a>
 | 
						|
                      <p>Class-specific information for contiguous storage (layout class 1):
 | 
						|
                        (Note: The dimensionality information is in the Dataspace message)</p>
 | 
						|
 | 
						|
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="format">
 | 
						|
                          <caption>
 | 
						|
                            Layout: Contiguous Storage Property Description
 | 
						|
                          </caption>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4"><br />Size<sup>L</sup><br /><br /></td>
 | 
						|
	                      </tr>
 | 
						|
                        </table>
 | 
						|
 | 
						|
                        <table class="note">
 | 
						|
                          <tr>
 | 
						|
                            <td width="60%"> </td>
 | 
						|
                            <td width="40%">
 | 
						|
                              (Items marked with an ‘O’ in the above table are
 | 
						|
                              of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
                                of Offsets</a> field in the superblock.)
 | 
						|
                          </td></tr>
 | 
						|
                          <tr>
 | 
						|
                            <td> </td>
 | 
						|
                            <td>
 | 
						|
                              (Items marked with an ‘L’ in the above table are
 | 
						|
                              of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
                                of Lengths</a> field in the superblock.)
 | 
						|
                          </td></tr>
 | 
						|
                        </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
                      <br />
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="desc">
 | 
						|
                          <caption>
 | 
						|
                            Fields: Contiguous Storage Property Description
 | 
						|
                          </caption>
 | 
						|
	                      <tr>
 | 
						|
                            <th width="30%">Field Name</th>
 | 
						|
                            <th>Description</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Address</p></td>
 | 
						|
	                        <td><p>This is the address of the raw data in the file.
 | 
						|
                                The address may have the “undefined address” value, to indicate
 | 
						|
                                that storage has not yet been allocated for this array.</p></td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Size</p></td>
 | 
						|
	                        <td><p>This field contains the size allocated to store the raw data,
 | 
						|
                                in bytes.
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
                        </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
 | 
						|
                      <br />
 | 
						|
                      <p>Class-specific information for chunked storage (layout class 2):</p>
 | 
						|
 | 
						|
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="format">
 | 
						|
                          <caption>
 | 
						|
                            Layout: Chunked Storage Property Description
 | 
						|
                          </caption>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td>Dimensionality</td>
 | 
						|
                            <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">Dimension 0 Size</td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">Dimension 1 Size</td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">...</td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">Dimension #n Size</td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4">Dataset Element Size</td>
 | 
						|
	                      </tr>
 | 
						|
                        </table>
 | 
						|
 | 
						|
                        <table class="note">
 | 
						|
                          <tr>
 | 
						|
                            <td width="60%"> </td>
 | 
						|
                            <td width="40%">
 | 
						|
                              (Items marked with an ‘O’ in the above table are
 | 
						|
                              of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
                                of Offsets</a> field in the superblock.)
 | 
						|
                          </td></tr>
 | 
						|
                        </table>
 | 
						|
 | 
						|
                      </div>
 | 
						|
 | 
						|
                      <br />
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="desc">
 | 
						|
                          <caption>
 | 
						|
                            Fields: Chunked Storage Property Description
 | 
						|
                          </caption>
 | 
						|
	                      <tr>
 | 
						|
                            <th width="30%">Field Name</th>
 | 
						|
                            <th>Description</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Dimensionality</p></td>
 | 
						|
	                        <td><p>A chunk has a fixed dimensionality.  This field specifies
 | 
						|
	                            the number of dimension size fields later in the message.</p></td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Address</p></td>
 | 
						|
	                        <td><p>This is the address of the <a href="#V1Btrees">v1 B-tree</a>
 | 
						|
	                            that is used to look up the
 | 
						|
                                addresses of the chunks that actually store portions of the array
 | 
						|
                                data.  The address may have the “undefined address” value, to
 | 
						|
                                indicate that storage has not yet been allocated for this array.</p></td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Dimension #n Size</p></td>
 | 
						|
	                        <td><p>These values define the dimension size of a single chunk, in
 | 
						|
                                units of array elements (not bytes).  The first dimension stored in
 | 
						|
                                the list of dimensions is the slowest changing dimension and the
 | 
						|
                                last dimension stored is the fastest changing dimension.
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Dataset Element Size</p></td>
 | 
						|
	                        <td><p>The size of a dataset element, in bytes.
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
                        </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
 | 
						|
                      <br />
 | 
						|
 | 
						|
                      <p><a name="DataLayoutV4">
 | 
						|
                          Version 4</a> of this message is similar to version 3 but has
 | 
						|
                        additional information for the virtual layout class as well as
 | 
						|
                        indexing information for the chunked layout class.</p>
 | 
						|
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="format">
 | 
						|
                          <caption>
 | 
						|
                            Layout: Data Layout Message (Version 4)
 | 
						|
                          </caption>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                        <th width="25%">byte</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td>Version</td>
 | 
						|
	                        <td>Layout Class</td>
 | 
						|
                            <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted
 | 
						|
                                only to align table nicely</em></td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td colspan="4"><br />Properties <em>(variable size)</em><br /><br /></td>
 | 
						|
	                      </tr>
 | 
						|
                        </table>
 | 
						|
                      </div>
 | 
						|
 | 
						|
                      <br />
 | 
						|
                      <div align="center">
 | 
						|
                        <table class="desc">
 | 
						|
                          <caption>
 | 
						|
                            Fields: Data Layout Message (Version 4)
 | 
						|
                          </caption>
 | 
						|
	                      <tr>
 | 
						|
	                        <th width="30%">Field Name</th>
 | 
						|
	                        <th>Description</th>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Version</p></td>
 | 
						|
	                        <td>
 | 
						|
	                          <p>The value for this field is 4 and is used by version 1.10.0
 | 
						|
                                and later of the library to store properties for each layout
 | 
						|
                                class and indexing information for the chunked layout.
 | 
						|
	                          </p>
 | 
						|
	                        </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Layout Class</p></td>
 | 
						|
	                        <td><p>The layout class specifies the type of storage for the data
 | 
						|
                                and how the other fields of the layout message are to be
 | 
						|
                                interpreted.
 | 
						|
	                            <table class="list">
 | 
						|
                                  <tr>
 | 
						|
                                    <th width="20%" align="center">Value</th>
 | 
						|
                                    <th width="80%" align="left">Description</th>
 | 
						|
                                  </tr>
 | 
						|
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>0</code></td>
 | 
						|
                                    <td>Compact Storage
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>1</code></td>
 | 
						|
                                    <td>Contiguous Storage
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>2</code></td>
 | 
						|
                                    <td>Chunked Storage
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="center"><code>3</code></td>
 | 
						|
                                    <td>Virtual Storage
 | 
						|
                                    </td>
 | 
						|
                                  </tr>
 | 
						|
                                </table>
 | 
						|
                              </p>
 | 
						|
                            </td>
 | 
						|
	                      </tr>
 | 
						|
 | 
						|
	                      <tr>
 | 
						|
	                        <td><p>Properties</p></td>
 | 
						|
	                        <td><p>This variable-sized field encodes information specific to a
 | 
						|
                                layout class as follows:
 | 
						|
	                            <table class="list">
 | 
						|
                                  <tr>
 | 
						|
                                    <th align="left" width="20%">Layout Class</th>
 | 
						|
                                    <th align="left" width="80%">Description</th>
 | 
						|
                                  </tr>
 | 
						|
 | 
						|
                                  <tr>
 | 
						|
                                    <td align="left">Compact Storage</td>
 | 
						|
                                    <td>See <a href="#CompactStorage">Compact Storage
 | 
						|
                                        Property Description</i></a> for the version 3
 | 
						|
Data Layout message.
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td align="left">Contiguous Storage</td>
 | 
						|
  <td>See <a href="#ContiguousStorage">Contiguous Storage
 | 
						|
      Property Description</i></a> for the version 3
 | 
						|
Data Layout message.
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td align="left">Chunked Storage</td>
 | 
						|
  <td>See <a href="#ChunkedStorage">Chunked Storage
 | 
						|
      Property Description</i></a> below.
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td align="left">Virtual Storage</td>
 | 
						|
  <td>See <a href="#VirtualStorage">Virtual Storage
 | 
						|
      Property Description</i></a> below.
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
</table>
 | 
						|
 | 
						|
</p></td>
 | 
						|
</tr>
 | 
						|
</table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<a name="ChunkedStorage"></a>
 | 
						|
<p>Class-specific information for chunked storage (layout
 | 
						|
  class 2):</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Chunked Storage Property Description
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Flags</td>
 | 
						|
	  <td>Dimensionality</td>
 | 
						|
	  <td>Dimension Size Encoded Length</td>
 | 
						|
      <td colspan="1" bgcolor="#DDDDDD"><em>This space inserted to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Dimension 0 Size <em>(variable size)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Dimension 1 Size <em>(variable size)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">...</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Dimension #n Size <em>(variable size)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Chunk Indexing Type</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Indexing Type Information <em>(variable size)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Chunked Storage Property Description
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Flags</p></td>
 | 
						|
	  <td><p>This is the chunked layout feature flag:</p>
 | 
						|
 | 
						|
	    <table class="list">
 | 
						|
		  <tr>
 | 
						|
		    <th width="55%" align="left">Value</th>
 | 
						|
		    <th width="45%" align="left">Description</th>
 | 
						|
		  </tr>
 | 
						|
 | 
						|
		  <tr>
 | 
						|
		    <td align="left"><code>DONT_FILTER_PARTIAL_BOUND_CHUNKS (bit 0)</code></td>
 | 
						|
		    <td>Do not apply filter to a partial edge chunk.
 | 
						|
 | 
						|
            </td>
 | 
						|
		  </tr>
 | 
						|
 | 
						|
		  <tr>
 | 
						|
		    <td align="left"><code>SINGLE_INDEX_WITH_FILTER (bit 1)</code></td>
 | 
						|
		    <td>A filtered chunk for <i>Single Chunk</i> indexing.
 | 
						|
            </td>
 | 
						|
		  </tr>
 | 
						|
 | 
						|
	    </table>
 | 
						|
 | 
						|
	  </td>
 | 
						|
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Dimensionality</p></td>
 | 
						|
	  <td><p>A chunk has fixed dimension.  This field specifies
 | 
						|
	      the number of <em>Dimension Size</em> fields later in the message.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Dimension Size Encoded Length</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This is the size in bytes used to encode <em>Dimension Size</em>.
 | 
						|
        </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Dimension #n Size</p></td>
 | 
						|
	  <td><p>These values define the dimension size of a single chunk, in
 | 
						|
          units of array elements (not bytes).  The first dimension stored in
 | 
						|
          the list of dimensions is the slowest changing dimension and the
 | 
						|
          last dimension stored is the fastest changing dimension.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Chunk Indexing Type</p></td>
 | 
						|
	  <td><p>There are five indexing types used to look up addresses
 | 
						|
          of the chunks. For more information on each type, see
 | 
						|
          <a href="#AppendixC">“Appendix C: Types of Indexes for
 | 
						|
            Dataset Chunks.”</a>
 | 
						|
	      <table class="list">
 | 
						|
		    <tr>
 | 
						|
		      <th width="20%" align="center">Value</th>
 | 
						|
		      <th width="80%" align="left">Description</th>
 | 
						|
		    </tr>
 | 
						|
 | 
						|
		    <tr>
 | 
						|
		      <td align="center"><code>1</code></td>
 | 
						|
		      <td><a href="#SingleChunk"><i>Single Chunk</i></a> indexing type.
 | 
						|
              </td>
 | 
						|
		    </tr>
 | 
						|
 | 
						|
		    <tr>
 | 
						|
		      <td align="center"><code>2</code></td>
 | 
						|
		      <td><a href="#Implicit"><i>Implicit</i></a> indexing type.
 | 
						|
              </td>
 | 
						|
		    </tr>
 | 
						|
 | 
						|
		    <tr>
 | 
						|
		      <td align="center"><code>3</code></td>
 | 
						|
		      <td><a href="#FixedArray"><i>Fixed Array</i></a> indexing type.
 | 
						|
              </td>
 | 
						|
		    </tr>
 | 
						|
 | 
						|
		    <tr>
 | 
						|
		      <td align="center"><code>4</code></td>
 | 
						|
		      <td><a href="#ExtensibleArray"><i>Extensible Array</i></a> indexing type.
 | 
						|
              </td>
 | 
						|
		    </tr>
 | 
						|
 | 
						|
		    <tr>
 | 
						|
		      <td align="center"><code>5</code></td>
 | 
						|
		      <td><a href="#V2Btrees"><i>Version 2 B-tree</i></a> indexing type.
 | 
						|
              </td>
 | 
						|
		    </tr>
 | 
						|
 | 
						|
	      </table>
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Indexing Type Information</p></td>
 | 
						|
	  <td><p>This variable-sized field encodes information specific to
 | 
						|
          an indexing type. More information on what is encoded with
 | 
						|
          each type can be found below this table.
 | 
						|
          <ul>
 | 
						|
            <li>See <a href="#IndexInfoSingle"><i>Single Chunk</i></a> below.</li>
 | 
						|
            <li>See <a href="#IndexInfoImplicit"><i>Implicit</i></a> below.</li>
 | 
						|
            <li>See <a href="#IndexInfoFixed"><i>Fixed Array</i></a> below.</li>
 | 
						|
            <li>See <a href="#IndexInfoExtensible"><i>Extensible Array</i></a> below.</li>
 | 
						|
            <li>See <a href="#IndexInfoV2Btrees"><i>Version 2 B-tree</i></a> below.</li>
 | 
						|
          </ul>
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Address</p></td>
 | 
						|
	  <td><p>This is the address specific to an indexing type.
 | 
						|
		  The address may be undefined if the chunk or index storage is not allocated yet.
 | 
						|
	      <table class="list">
 | 
						|
		    <tr>
 | 
						|
		      <th width="40%" align="left">Value</th>
 | 
						|
		      <th width="60%" align="left">Description</th>
 | 
						|
		    </tr>
 | 
						|
 | 
						|
		    <tr>
 | 
						|
		      <td align="left"><i>Single Chunk index</i></td>
 | 
						|
		      <td align="left">Address of the single chunk.</td>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td align="left"><i>Implicit index</i></td>
 | 
						|
	  <td align="left">Address of the array of dataset chunks.</td>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td align="left"><i>Fixed Array index</i></td>
 | 
						|
  <td align="left">Address of the index.</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td align="left"><i>Extensible Array index</i></td>
 | 
						|
  <td align="left">Address of the index.</td>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td align="left"><i>Version 2 B-tree index</i></td>
 | 
						|
  <td align="left">Address of the index.</td>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
</table>
 | 
						|
 | 
						|
</p>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
</table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
 | 
						|
<ol>
 | 
						|
  <li>
 | 
						|
    <a name="IndexInfoSingle"></a>
 | 
						|
      Index-specific information for <i>Single Chunk</i>:
 | 
						|
  </li>
 | 
						|
 | 
						|
  <p>The following information exists only when the chunk is filtered.
 | 
						|
    In other words, when <code>DONT_FILTER_PARTIAL_BOUND_CHUNKS</code>
 | 
						|
    (bit 0) is enabled in the field <em>flags</em>.</p>
 | 
						|
 | 
						|
  <div align="center">
 | 
						|
    <table class="format">
 | 
						|
      <caption>
 | 
						|
        Layout: Single Chunk Indexing Information
 | 
						|
      </caption>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4"><br />Size of filtered chunk<sup>L</sup><br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4">Filters for chunk</td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
    </table>
 | 
						|
 | 
						|
    <table class="note">
 | 
						|
      <tr>
 | 
						|
        <td width="55%"> </td>
 | 
						|
        <td width="45%"> <!-- width is slightly different: these
 | 
						|
                              tables are part of an ordered list; see <ol> tags. -->
 | 
						|
            (Items marked with an ‘L’ in the above table are
 | 
						|
            of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
              of Lengths</a> field in the superblock.)
 | 
						|
      </td></tr>
 | 
						|
    </table>
 | 
						|
  </div>
 | 
						|
 | 
						|
  <br />
 | 
						|
  <div align="center">
 | 
						|
    <table class="desc">
 | 
						|
      <caption>
 | 
						|
        Fields: Single Chunk Indexing Information
 | 
						|
      </caption>
 | 
						|
	  <tr>
 | 
						|
        <th width="30%">Field Name</th>
 | 
						|
        <th>Description</th>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>Size of filtered chunk</p></td>
 | 
						|
	    <td><p>This field is the size of a filtered chunk.</p></td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>Filters for chunk</p></td>
 | 
						|
	    <td><p>This field contains filters for the chunk.</p></td>
 | 
						|
	  </tr>
 | 
						|
    </table>
 | 
						|
  </div>
 | 
						|
</p>
 | 
						|
 | 
						|
<br />
 | 
						|
 | 
						|
<li>
 | 
						|
  <a name="IndexInfoImplicit"></a>
 | 
						|
    Index-specific information for <i>Implicit</i>:
 | 
						|
</li>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Implicit Indexing Information
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td colspan="4" bgcolor="#DDDDDD">
 | 
						|
        <em>No specific indexing information</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<li>
 | 
						|
  <a name="IndexInfoFixed"></a>
 | 
						|
    Index-specific information for <i>Fixed Array</i>:
 | 
						|
</li>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Fixed Array Indexing Information
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="1">Page Bits</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Fixed Array Indexing Information
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Page Bits</p></td>
 | 
						|
	  <td><p>This field contains the number of bits needed to store the
 | 
						|
	      maximum number of elements in a data block page.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
</p>
 | 
						|
 | 
						|
<br />
 | 
						|
<li>
 | 
						|
  <a name="IndexInfoExtensible"></a>
 | 
						|
    Index-specific information for <i>Extensible Array</i>:
 | 
						|
</li>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Extensible Array Indexing Information
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Max Bits</td>
 | 
						|
	  <td>Index Elements</td>
 | 
						|
	  <td>Min Pointers</td>
 | 
						|
	  <td>Min Elements</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<td colspan="2">Page Bits</td>
 | 
						|
    <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
</tr>
 | 
						|
 | 
						|
</table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Extensible Array Indexing Information
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Max Bits</p></td>
 | 
						|
	  <td><p>This field contains the number of bits needed to store the maximum number of elements
 | 
						|
          in the array.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Index Elements</p></td>
 | 
						|
	  <td><p>This field contains the number of elements to store in the
 | 
						|
          index block.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Min Pointers</p></td>
 | 
						|
	  <td><p>This field contains the minimum number of data block pointers
 | 
						|
          for a superblock.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Min Elements</p></td>
 | 
						|
	  <td><p>This field contains the minimum number of elements per data block.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Page Bits</p></td>
 | 
						|
	  <td><p>This field contains the number of bits needed to store the
 | 
						|
	      maximum number of elements in a data block page.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
</p>
 | 
						|
<br />
 | 
						|
 | 
						|
<li>
 | 
						|
  <a name="IndexInfoV2Btrees"></a>
 | 
						|
    Index-specific information for <i>Version 2 B-tree</i>:
 | 
						|
</li>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Version 2 B-tree Indexing Information
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Node Size</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Split Percent</td>
 | 
						|
	  <td>Merge Percent</td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD">
 | 
						|
        <em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Version 2 B-tree Indexing Information
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Node Size</p></td>
 | 
						|
	  <td><p>This field is the size in bytes of a B-tree node.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Split Percent</p></td>
 | 
						|
	  <td><p>This field is the percentage full of a B-tree node at which to split the node.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Merge Percent</p></td>
 | 
						|
	  <td><p>This field is the percentage full of a B-tree node at which to merge the node.</p></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
</ol>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
<br />
 | 
						|
<a name="VirtualStorage"></a>
 | 
						|
<p>
 | 
						|
  Class-specific information for virtual storage (layout class 3):</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Virtual Storage Property Description
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Index</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Virtual Storage Property Description
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Address</p></td>
 | 
						|
	  <td><p>This is the address of the global heap collection where
 | 
						|
          the VDS mapping entries are stored.
 | 
						|
	      See <a href="#GlobalHeapVDS">“Disk Format: Level 1F -
 | 
						|
            Global Heap Block for Virtual Datasets.”</a>
 | 
						|
	  </p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Index</p></td>
 | 
						|
	  <td><p>This is the index of the data object within the global heap collection.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h4><a name="BogusMessage">IV.A.2.j. The Bogus Message</a></h4>
 | 
						|
 | 
						|
<!-- start msgdesc table -->
 | 
						|
<center>
 | 
						|
  <table class="msgdesc">
 | 
						|
    <tr><td colspan="2"><b>Header Message Name:</b> Bogus</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Header Message Type:</b> 0x0009</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Length:</b> 4 bytes</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Status:</b> For testing only; should never
 | 
						|
        be stored in a valid file.</td></tr>
 | 
						|
    <tr><td><b>Description:</b></td>
 | 
						|
      <td>This message is used for testing the HDF5 Library’s
 | 
						|
        response to an “unknown” message type and should
 | 
						|
        never be encountered in a valid HDF5 file.</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Format of Data:</b> See the tables
 | 
						|
        below.</td></tr>
 | 
						|
</table></center>
 | 
						|
<!-- end msgdesc table -->
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Bogus Message
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Bogus Value</td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Bogus Message
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
	  <th width="30%">Field Name</th>
 | 
						|
	  <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Bogus Value</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>This value should always be: <code>0xdeadbeef</code>.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h4><a name="GroupInfoMessage">IV.A.2.k. The Group Info Message
 | 
						|
</a></h4>
 | 
						|
 | 
						|
<!-- start msgdesc table -->
 | 
						|
<center>
 | 
						|
  <table class="msgdesc">
 | 
						|
    <tr><td colspan="2"><b>Header Message Name:</b> Group Info</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Header Message Type:</b> 0x000A</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Status:</b> Optional; may not be
 | 
						|
        repeated.</td></tr>
 | 
						|
    <tr><td><b>Description:</b></td>
 | 
						|
      <td><p>This message stores information for the constants defining
 | 
						|
          a “new style” group’s behavior. Constant
 | 
						|
          information will be stored in this message and variable
 | 
						|
          information will be stored in the
 | 
						|
          <a href="#LinkInfoMessage">Link Info</a> message.</p>
 | 
						|
        <p>Note: the “estimated entry” information below is
 | 
						|
          used when determining the size of the object header for the
 | 
						|
          group when it is created.</p></td></tr>
 | 
						|
    <tr><td colspan="2"><b>Format of Data:</b> See the tables
 | 
						|
        below.</td></tr>
 | 
						|
</table></center>
 | 
						|
<!-- end msgdesc table -->
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Group Info Message
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Version</td>
 | 
						|
	  <td>Flags</td>
 | 
						|
	  <td colspan="2">Link Phase Change: Maximum Compact Value <em>(optional)</em></td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="2">Link Phase Change: Minimum Dense Value <em>(optional)</em></td>
 | 
						|
	  <td colspan="2">Estimated Number of Entries <em>(optional)</em></td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="2">Estimated Link Name Length of Entries <em>(optional)</em></td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Group Info Message
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Version</p></td>
 | 
						|
	  <td><p>The version number for this message. This document describes version 0.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Flags</p></td>
 | 
						|
	  <td><p>This is the group information flag with the following definition:
 | 
						|
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Bit</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td>If set, link phase change values are stored.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>1</code></td>
 | 
						|
              <td>If set, the estimated entry information is non-default
 | 
						|
                and is stored.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>2-7</code></td>
 | 
						|
              <td>Reserved</td>
 | 
						|
            </tr>
 | 
						|
	    </table></p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Link Phase Change: Maximum Compact Value</p></td>
 | 
						|
	  <td><p>The is the maximum number of links to store “compactly” (in
 | 
						|
          the group’s object header).</p>
 | 
						|
	    <p>This field is present if bit 0 of <em>Flags</em> is set.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Link Phase Change: Minimum Dense Value</p></td>
 | 
						|
	  <td><p>This is the minimum number of links to store “densely” (in
 | 
						|
          the group’s fractal heap).  The fractal heap’s address is
 | 
						|
          located in the <a href="#LinkInfoMessage">Link Info</a>
 | 
						|
          message.</p>
 | 
						|
	    <p>This field is present if bit 0 of <em>Flags</em> is set.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Estimated Number of Entries</p></td>
 | 
						|
	  <td><p>This is the estimated number of entries in groups.</p>
 | 
						|
	    <p>If this field is not present, the default value of <code>4</code>
 | 
						|
          will be used for the estimated number of group entries.</p>
 | 
						|
	    <p>This field is present if bit 1 of <em>Flags</em> is set.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Estimated Link Name Length of Entries</p></td>
 | 
						|
	  <td><p>This is the estimated length of entry name.</p>
 | 
						|
	    <p>If this field is not present, the default value of <code>8</code>
 | 
						|
          will be used for the estimated link name length of group entries.</p>
 | 
						|
	    <p>This field is present if bit 1 of <em>Flags</em> is set.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
<!--    </p> -->
 | 
						|
 | 
						|
<h4><a name="FilterMessage">IV.A.2.l. The Data Storage - Filter
 | 
						|
    Pipeline Message</a></h4>
 | 
						|
 | 
						|
<!-- start msgdesc table -->
 | 
						|
<center>
 | 
						|
  <table class="msgdesc">
 | 
						|
    <tr><td colspan="2"><b>Header Message Name:</b>
 | 
						|
        Data Storage - Filter Pipeline</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Header Message Type:</b> 0x000B</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Status:</b> Optional; may not be
 | 
						|
        repeated.</td></tr>
 | 
						|
    <tr><td><b>Description:</b></td>
 | 
						|
      <td><p>This message describes the filter pipeline which should
 | 
						|
          be applied to the data stream by providing filter identification
 | 
						|
          numbers, flags, a name, and client data.</p>
 | 
						|
        <p>This message may be present in the object headers of both
 | 
						|
          dataset and group objects. For datasets, it specifies the
 | 
						|
          filters to apply to raw data. For groups, it specifies the
 | 
						|
          filters to apply to the group’s fractal heap. Currently,
 | 
						|
          only datasets using chunked data storage use the filter
 | 
						|
          pipeline on their raw data.</p></td></tr>
 | 
						|
    <tr><td colspan="2"><b>Format of Data:</b> See the tables
 | 
						|
        below.</td></tr>
 | 
						|
</table></center>
 | 
						|
<!-- end msgdesc table -->
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Filter Pipeline Message - Version 1
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Version</td>
 | 
						|
	  <td>Number of Filters</td>
 | 
						|
	  <td colspan="2">Reserved (zero)</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Reserved (zero)</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Filter Description List <em>(variable size)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Filter Pipeline Message - Version 1
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Version</p></td>
 | 
						|
	  <td><p>The version number for this message.  This table
 | 
						|
	      describes version 1.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Number of Filters</p></td>
 | 
						|
	  <td><p>The total number of filters described in this
 | 
						|
	      message. The maximum possible number of filters in a
 | 
						|
	      message is 32.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Filter Description List</p></td>
 | 
						|
	  <td><p>A description of each filter.  A filter description
 | 
						|
	      appears in the next table.</p></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Filter Description - Version 1
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="2">Filter Identification Value</td>
 | 
						|
	  <td colspan="2">Name Length</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="2">Flags</td>
 | 
						|
	  <td colspan="2">Number Client Data Values</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Name <em>(variable size, optional)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Client Data <em>(variable size, optional)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Padding <em>(variable size, optional)</em></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Filter Description - Version 1
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Filter Identification Value</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>
 | 
						|
          This value, often referred to as a filter identifier,
 | 
						|
          is designed to be a unique identifier for the filter.
 | 
						|
          Values from zero through 32,767 are reserved for filters
 | 
						|
          supported by The HDF Group in the HDF5 Library and for
 | 
						|
          filters requested and supported by third parties.
 | 
						|
          Filters supported by The HDF Group are documented immediately
 | 
						|
          below.  Information on 3rd-party filters can be found at
 | 
						|
          The HDF Group’s
 | 
						|
          <a href="http://www.hdfgroup.org/services/contributions.html">
 | 
						|
            Contributions</a> page.</p>
 | 
						|
 | 
						|
        <p>
 | 
						|
          To request a filter identifier, please contact
 | 
						|
          The HDF Group’s Help Desk at
 | 
						|
          <img src="Graphics/help.png" valign="middle" height="14"
 | 
						|
               alt="The HDF Group Help Desk">.
 | 
						|
          You will be asked to provide the following information:</p>
 | 
						|
        <ol>
 | 
						|
          <li>Contact information for the developer requesting the
 | 
						|
            new identifier</li>
 | 
						|
          <li>A short description of the new filter</li>
 | 
						|
          <li>Links to any relevant information, including licensing
 | 
						|
            information</li>
 | 
						|
        </ol>
 | 
						|
        <p>
 | 
						|
          Values from 32768 to 65535 are reserved for non-distributed uses
 | 
						|
          (for example, internal company usage) or for application usage
 | 
						|
          when testing a feature. The HDF Group does not track or document
 | 
						|
          the use of the filters with identifiers from this range.</p>
 | 
						|
 | 
						|
        <p>
 | 
						|
          The filters currently in library version 1.8.0 are
 | 
						|
	      listed below:
 | 
						|
 | 
						|
	      <table class="list">
 | 
						|
	        <tr>
 | 
						|
		      <th width="20%" align="center">Identification</th>
 | 
						|
		      <th width="15%" align="left">Name</th>
 | 
						|
		      <th width="65%" align="left">Description</th>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>0</code></td>
 | 
						|
		      <td>N/A</td>
 | 
						|
		      <td>Reserved</td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>1</code></td>
 | 
						|
		      <td>deflate</td>
 | 
						|
		      <td>GZIP deflate compression</td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>2</code></td>
 | 
						|
		      <td>shuffle</td>
 | 
						|
		      <td>Data element shuffling</td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>3</code></td>
 | 
						|
		      <td>fletcher32</td>
 | 
						|
		      <td>Fletcher32 checksum</td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>4</code></td>
 | 
						|
		      <td>szip</td>
 | 
						|
		      <td>SZIP compression</td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>5</code></td>
 | 
						|
		      <td>nbit</td>
 | 
						|
		      <td>N-bit packing</td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>6</code></td>
 | 
						|
		      <td>scaleoffset</td>
 | 
						|
		      <td>Scale and offset encoded values</td>
 | 
						|
	        </tr>
 | 
						|
	      </table>
 | 
						|
      </p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Name Length</p></td>
 | 
						|
	  <td><p>Each filter has an optional null-terminated ASCII name
 | 
						|
	      and this field holds the length of the name including the
 | 
						|
	      null termination padded with nulls to be a multiple of
 | 
						|
	      eight. If the filter has no name then a value of zero is
 | 
						|
	      stored in this field.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Flags</p></td>
 | 
						|
	  <td><p>The flags indicate certain properties for a filter.  The
 | 
						|
	      bit values defined so far are:
 | 
						|
	      <table class="list">
 | 
						|
	        <tr>
 | 
						|
		      <th width="20%" align="center">Bit</th>
 | 
						|
		      <th width="80%" align="left">Description</th>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>0</code></td>
 | 
						|
	          <td>If set then the filter is an optional filter.
 | 
						|
		        During output, if an optional filter fails it will be
 | 
						|
		        silently skipped in the pipeline.</td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>1-15</code></td>
 | 
						|
	          <td>Reserved (zero)</td>
 | 
						|
	        </tr>
 | 
						|
	    </table></p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Number of Client Data Values</p></td>
 | 
						|
	  <td><p>Each filter can store integer values to control
 | 
						|
	      how the filter operates.  The number of entries in the
 | 
						|
	      <em>Client Data</em> array is stored in this field.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Name</p></td>
 | 
						|
	  <td><p>If the <em>Name Length</em> field is non-zero then it will
 | 
						|
          contain the size of this field, padded to a multiple of eight. This
 | 
						|
          field contains a null-terminated, ASCII character string to serve
 | 
						|
          as a comment/name for the filter.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Client Data</p></td>
 | 
						|
	  <td><p>This is an array of four-byte integers which will be
 | 
						|
	      passed to the filter function.  The <em>Client Data Number</em> of
 | 
						|
	      Values determines the number of elements in the array.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Padding</p></td>
 | 
						|
	  <td><p>Four bytes of zeroes are added to the message at this
 | 
						|
	      point if the Client Data Number of Values field contains
 | 
						|
	      an odd number.</p></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Filter Pipeline Message - Version 2
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Version</td>
 | 
						|
	  <td>Number of Filters</td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Filter Description List <em>(variable size)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Filter Pipeline Message - Version 2
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Version</p></td>
 | 
						|
	  <td><p>The version number for this message.  This table
 | 
						|
	      describes version 2.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Number of Filters</p></td>
 | 
						|
	  <td><p>The total number of filters described in this
 | 
						|
	      message. The maximum possible number of filters in a
 | 
						|
	      message is 32.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Filter Description List</p></td>
 | 
						|
	  <td><p>A description of each filter.  A filter description
 | 
						|
	      appears in the next table.</p></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Filter Description - Version 2
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="2">Filter Identification Value</td>
 | 
						|
	  <td colspan="2">Name Length <em>(optional)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="2">Flags</td>
 | 
						|
	  <td colspan="2">Number Client Data Values</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Name <em>(variable size, optional)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Client Data <em>(variable size, optional)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Filter Description - Version 2
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Filter Identification Value</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>
 | 
						|
          This value, often referred to as a filter identifier,
 | 
						|
          is designed to be a unique identifier for the filter.
 | 
						|
          Values from zero through 32,767 are reserved for filters
 | 
						|
          supported by The HDF Group in the HDF5 Library and for
 | 
						|
          filters requested and supported by third parties.
 | 
						|
          Filters supported by The HDF Group are documented immediately
 | 
						|
          below.  Information on 3rd-party filters can be found at
 | 
						|
          The HDF Group’s
 | 
						|
          <a href="http://www.hdfgroup.org/services/contributions.html">
 | 
						|
            Contributions</a> page.</p>
 | 
						|
 | 
						|
        <p>
 | 
						|
          To request a filter identifier, please contact
 | 
						|
          The HDF Group’s Help Desk at
 | 
						|
          <img src="Graphics/help.png" valign="middle" height="14"
 | 
						|
               alt="The HDF Group Help Desk">.
 | 
						|
          You will be asked to provide the following information:</p>
 | 
						|
        <ol>
 | 
						|
          <li>Contact information for the developer requesting the
 | 
						|
            new identifier</li>
 | 
						|
          <li>A short description of the new filter</li>
 | 
						|
          <li>Links to any relevant information, including licensing
 | 
						|
            information</li>
 | 
						|
        </ol>
 | 
						|
        <p>
 | 
						|
          Values from 32768 to 65535 are reserved for non-distributed uses
 | 
						|
          (for example, internal company usage) or for application usage
 | 
						|
          when testing a feature. The HDF Group does not track or document
 | 
						|
          the use of the filters with identifiers from this range.</p>
 | 
						|
 | 
						|
        <p>
 | 
						|
          The filters currently in library version 1.8.0 are
 | 
						|
	      listed below:
 | 
						|
 | 
						|
	      <table class="list">
 | 
						|
	        <tr>
 | 
						|
		      <th width="20%" align="center">Identification</th>
 | 
						|
		      <th width="15%" align="left">Name</th>
 | 
						|
		      <th width="65%" align="left">Description</th>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>0</code></td>
 | 
						|
		      <td>N/A</td>
 | 
						|
		      <td>Reserved</td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>1</code></td>
 | 
						|
		      <td>deflate</td>
 | 
						|
		      <td>GZIP deflate compression</td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>2</code></td>
 | 
						|
		      <td>shuffle</td>
 | 
						|
		      <td>Data element shuffling</td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>3</code></td>
 | 
						|
		      <td>fletcher32</td>
 | 
						|
		      <td>Fletcher32 checksum</td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>4</code></td>
 | 
						|
		      <td>szip</td>
 | 
						|
		      <td>SZIP compression</td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>5</code></td>
 | 
						|
		      <td>nbit</td>
 | 
						|
		      <td>N-bit packing</td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>6</code></td>
 | 
						|
		      <td>scaleoffset</td>
 | 
						|
		      <td>Scale and offset encoded values</td>
 | 
						|
	        </tr>
 | 
						|
	      </table>
 | 
						|
	  </p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Name Length</p></td>
 | 
						|
	  <td><p>Each filter has an optional null-terminated ASCII name
 | 
						|
	      and this field holds the length of the name including the
 | 
						|
	      null termination padded with nulls to be a multiple of
 | 
						|
	      eight. If the filter has no name then a value of zero is
 | 
						|
	      stored in this field.</p>
 | 
						|
        <p>Filters with IDs less than 256 (in other words, filters
 | 
						|
          that are defined in this format documentation) do not store
 | 
						|
          the <em>Name Length</em> or <em>Name</em> fields.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Flags</p></td>
 | 
						|
	  <td><p>The flags indicate certain properties for a filter.  The
 | 
						|
	      bit values defined so far are:
 | 
						|
	      <table class="list">
 | 
						|
	        <tr>
 | 
						|
		      <th width="20%" align="center">Bit</th>
 | 
						|
		      <th width="80%" align="left">Description</th>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>0</code></td>
 | 
						|
	          <td>If set then the filter is an optional filter.
 | 
						|
		        During output, if an optional filter fails it will be
 | 
						|
		        silently skipped in the pipeline.</td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>1-15</code></td>
 | 
						|
	          <td>Reserved (zero)</td>
 | 
						|
	        </tr>
 | 
						|
	    </table></p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Number of Client Data Values</p></td>
 | 
						|
	  <td><p>Each filter can store integer values to control
 | 
						|
	      how the filter operates.  The number of entries in the
 | 
						|
	      <em>Client Data</em> array is stored in this field.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Name</p></td>
 | 
						|
	  <td><p>If the <em>Name Length</em> field is non-zero, then it will
 | 
						|
          contain the size of this field, <em>not</em> padded to a multiple
 | 
						|
          of eight. This field contains a <em>non-</em>null-terminated,
 | 
						|
          ASCII character string to serve as a comment/name for the filter.
 | 
						|
        </p>
 | 
						|
        <p>Filters that are defined in this format documentation
 | 
						|
          such as deflate and shuffle do not store the <em>Name
 | 
						|
            Length</em> or <em>Name</em> fields.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Client Data</p></td>
 | 
						|
	  <td><p>This is an array of four-byte integers which will be
 | 
						|
	      passed to the filter function.  The Client Data Number of
 | 
						|
	      Values</em> determines the number of elements in the array.</p>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
</table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h4><a name="AttributeMessage">IV.A.2.m. The Attribute Message</a></h4>
 | 
						|
 | 
						|
<!-- start msgdesc table -->
 | 
						|
<center>
 | 
						|
  <table class="msgdesc">
 | 
						|
    <tr><td colspan="2"><b>Header Message Name:</b> Attribute</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Header Message Type:</b> 0x000C</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Status:</b> Optional; may be
 | 
						|
        repeated.</td></tr>
 | 
						|
    <tr><td><b>Description:</b></td>
 | 
						|
      <td><p>The <em>Attribute</em> message is used to store objects
 | 
						|
          in the HDF5 file which are used as attributes, or
 | 
						|
          “metadata” about the current object. An attribute
 | 
						|
          is a small dataset; it has a name, a datatype, a dataspace, and
 | 
						|
          raw data. Since attributes are stored in the object header, they
 | 
						|
          should be relatively small (in other words, less than 64KB).
 | 
						|
          They can be associated with any type of object which has an
 | 
						|
          object header (groups, datasets, or committed (named)
 | 
						|
          datatypes).</p>
 | 
						|
        <p>In 1.8.x versions of the library, attributes can be larger
 | 
						|
          than 64KB. See the
 | 
						|
          <a href="UG/HDF5_Users_Guide-Responsive%20HTML5/index.html#t=HDF5_Users_Guide%2FAttributes%2FHDF5_Attributes.htm%3Frhtocid%3Dtoc8.2_1%23TOC_8_5_Special_Issuesbc-13">
 | 
						|
            “Special Issues”</a> section of the Attributes chapter
 | 
						|
          in the <cite>HDF5 User’s Guide</cite> for more information.</p>
 | 
						|
        <p>Note: Attributes on an object must have unique names:
 | 
						|
          the HDF5 Library currently enforces this by causing the
 | 
						|
          creation of an attribute with a duplicate name to fail.
 | 
						|
          Attributes on different objects may have the same name,
 | 
						|
          however.</p></td></tr>
 | 
						|
    <tr><td colspan="2"><b>Format of Data:</b> See the tables
 | 
						|
        below.</td></tr>
 | 
						|
</table></center>
 | 
						|
<!-- end msgdesc table -->
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Attribute Message (Version 1)
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Version</td>
 | 
						|
	  <td>Reserved (zero)</td>
 | 
						|
	  <td colspan="2">Name Size</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="2">Datatype Size</td>
 | 
						|
	  <td colspan="2">Dataspace Size</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Name <em>(variable size)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Datatype <em>(variable size)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Dataspace <em>(variable size)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Data <em>(variable size)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Attribute Message (Version 1)
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Version</p></td>
 | 
						|
	  <td><p>The version number information is used for changes in the format of the
 | 
						|
	      attribute message and is described here:
 | 
						|
	      <table class="list">
 | 
						|
	        <tr>
 | 
						|
		      <th width="20%" align="center">Version</th>
 | 
						|
		      <th width="80%" align="left">Description</th>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>0</code></td>
 | 
						|
		      <td>Never used.</td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>1</code></td>
 | 
						|
		      <td>Used by the library before version 1.6 to encode attribute message.
 | 
						|
		        This version does not support shared datatypes.</td>
 | 
						|
	        </tr>
 | 
						|
	    </table></p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Name Size</p></td>
 | 
						|
	  <td><p>The length of the attribute name in bytes including the
 | 
						|
	      null terminator.  Note that the <em>Name</em> field below may
 | 
						|
	      contain additional padding not represented by this
 | 
						|
	      field.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Datatype Size</p></td>
 | 
						|
	  <td><p>The length of the datatype description in the <em>Datatype</em>
 | 
						|
	      field below.  Note that the <em>Datatype</em> field may contain
 | 
						|
	      additional padding not represented by this field.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Dataspace Size</p></td>
 | 
						|
	  <td><p>The length of the dataspace description in the <em>Dataspace</em>
 | 
						|
	      field below.  Note that the <em>Dataspace</em> field may contain
 | 
						|
	      additional padding not represented by this field.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Name</p></td>
 | 
						|
	  <td><p>The null-terminated attribute name.  This field is
 | 
						|
	      padded with additional null characters to make it a
 | 
						|
	      multiple of eight bytes.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Datatype</p></td>
 | 
						|
	  <td><p>The datatype description follows the same format as
 | 
						|
	      described for the datatype object header message.  This
 | 
						|
	      field is padded with additional zero bytes to make it a
 | 
						|
	      multiple of eight bytes.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Dataspace</p></td>
 | 
						|
	  <td><p>The dataspace description follows the same format as
 | 
						|
	      described for the dataspace object header message.  This
 | 
						|
	      field is padded with additional zero bytes to make it a
 | 
						|
	      multiple of eight bytes.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Data</p></td>
 | 
						|
	  <td><p>The raw data for the attribute.  The size is determined
 | 
						|
	      from the datatype and dataspace descriptions.  This
 | 
						|
	      field is <em>not</em> padded with additional bytes.</p></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Attribute Message (Version 2)
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr align="center">
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Version</td>
 | 
						|
	  <td>Flags</td>
 | 
						|
	  <td colspan="2">Name Size</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="2">Datatype Size</td>
 | 
						|
	  <td colspan="2">Dataspace Size</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Name <em>(variable size)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Datatype <em>(variable size)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Dataspace <em>(variable size)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Data <em>(variable size)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Attribute Message (Version 2)
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Version</p></td>
 | 
						|
	  <td><p>The version number information is used for changes in the
 | 
						|
          format of the attribute message and is described here:
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Version</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>2</code></td>
 | 
						|
              <td>Used by the library of version 1.6.x and after to encode
 | 
						|
                attribute messages.
 | 
						|
                This version supports shared datatypes.  The fields of
 | 
						|
                name, datatype, and dataspace are not padded with
 | 
						|
                additional bytes of zero.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
        </table></p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Flags</p></td>
 | 
						|
	  <td><p>This bit field contains extra information about
 | 
						|
          interpreting the attribute message:
 | 
						|
 | 
						|
	      <table class="list">
 | 
						|
	        <tr>
 | 
						|
		      <th width="20%" align="center">Bit</th>
 | 
						|
		      <th width="80%" align="left">Description</th>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>0</code></td>
 | 
						|
		      <td>If set, datatype is shared.</td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>1</code></td>
 | 
						|
		      <td>If set, dataspace is shared.</td>
 | 
						|
	        </tr>
 | 
						|
	    </table></p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Name Size</p></td>
 | 
						|
	  <td><p>The length of the attribute name in bytes including the
 | 
						|
	      null terminator.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Datatype Size</p></td>
 | 
						|
	  <td><p>The length of the datatype description in the <em>Datatype</em>
 | 
						|
	      field below.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Dataspace Size</p></td>
 | 
						|
	  <td><p>The length of the dataspace description in the <em>Dataspace</em>
 | 
						|
	      field below.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Name</p></td>
 | 
						|
	  <td><p>The null-terminated attribute name.  This field is <em>not</em>
 | 
						|
	      padded with additional bytes.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Datatype</p></td>
 | 
						|
	  <td><p>The datatype description follows the same format as
 | 
						|
          described for the datatype object header message.
 | 
						|
        </p>
 | 
						|
        <p>If the
 | 
						|
          <em>Flag</em> field indicates this attribute’s datatype is
 | 
						|
          shared, this field will contain a “shared message” encoding
 | 
						|
          instead of the datatype encoding.
 | 
						|
        </p>
 | 
						|
        <p>This field is <em>not</em> padded with additional bytes.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Dataspace</p></td>
 | 
						|
	  <td><p>The dataspace description follows the same format as
 | 
						|
          described for the dataspace object header message.
 | 
						|
        </p>
 | 
						|
        <p>If the
 | 
						|
          <em>Flag</em> field indicates this attribute’s dataspace is
 | 
						|
          shared, this field will contain a “shared message” encoding
 | 
						|
          instead of the dataspace encoding.
 | 
						|
        </p>
 | 
						|
        <p>This field is <em>not</em> padded with additional bytes.</p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Data</p></td>
 | 
						|
	  <td><p>The raw data for the attribute.  The size is determined
 | 
						|
          from the datatype and dataspace descriptions.
 | 
						|
        </p>
 | 
						|
        <p>This field is <em>not</em> padded with additional zero bytes.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Attribute Message (Version 3)
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr align="center">
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Version</td>
 | 
						|
	  <td>Flags</td>
 | 
						|
	  <td colspan="2">Name Size</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="2">Datatype Size</td>
 | 
						|
	  <td colspan="2">Dataspace Size</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Name Character Set Encoding</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Name <em>(variable size)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Datatype <em>(variable size)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Dataspace <em>(variable size)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Data <em>(variable size)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Attribute Message (Version 3)
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Version</p></td>
 | 
						|
	  <td><p>The version number information is used for changes in the
 | 
						|
          format of the attribute message and is described here:
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Version</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>3</code></td>
 | 
						|
              <td>Used by the library of version 1.8.x and after to
 | 
						|
                encode attribute messages.
 | 
						|
                This version supports attributes with non-ASCII names.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
        </table></p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Flags</p></td>
 | 
						|
	  <td><p>This bit field contains extra information about
 | 
						|
          interpreting the attribute message:
 | 
						|
 | 
						|
	      <table class="list">
 | 
						|
	        <tr>
 | 
						|
		      <th width="20%" align="center">Bit</th>
 | 
						|
		      <th width="80%" align="left">Description</th>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>0</code></td>
 | 
						|
		      <td>If set, datatype is shared.</td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
		      <td align="center"><code>1</code></td>
 | 
						|
		      <td>If set, dataspace is shared.</td>
 | 
						|
	        </tr>
 | 
						|
	    </table></p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Name Size</p></td>
 | 
						|
	  <td><p>The length of the attribute name in bytes including the
 | 
						|
	      null terminator.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Datatype Size</p></td>
 | 
						|
	  <td><p>The length of the datatype description in the <em>Datatype</em>
 | 
						|
	      field below.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Dataspace Size</p></td>
 | 
						|
	  <td><p>The length of the dataspace description in the <em>Dataspace</em>
 | 
						|
	      field below.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Name Character Set Encoding</p></td>
 | 
						|
	  <td><p>The character set encoding for the attribute’s name:
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Value</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td>ASCII character set encoding
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>1</code></td>
 | 
						|
              <td>UTF-8 character set encoding
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
          </table>
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Name</p></td>
 | 
						|
	  <td><p>The null-terminated attribute name.  This field is <em>not</em>
 | 
						|
	      padded with additional bytes.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Datatype</p></td>
 | 
						|
	  <td><p>The datatype description follows the same format as
 | 
						|
          described for the datatype object header message.
 | 
						|
        </p>
 | 
						|
        <p>If the
 | 
						|
          <em>Flag</em> field indicates this attribute’s datatype is
 | 
						|
          shared, this field will contain a “shared message” encoding
 | 
						|
          instead of the datatype encoding.
 | 
						|
        </p>
 | 
						|
        <p>This field is <em>not</em> padded with additional bytes.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Dataspace</p></td>
 | 
						|
	  <td><p>The dataspace description follows the same format as
 | 
						|
          described for the dataspace object header message.
 | 
						|
        </p>
 | 
						|
        <p>If the
 | 
						|
          <em>Flag</em> field indicates this attribute’s dataspace is
 | 
						|
          shared, this field will contain a “shared message” encoding
 | 
						|
          instead of the dataspace encoding.
 | 
						|
        </p>
 | 
						|
        <p>This field is <em>not</em> padded with additional bytes.</p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Data</p></td>
 | 
						|
	  <td><p>The raw data for the attribute.  The size is determined
 | 
						|
          from the datatype and dataspace descriptions.
 | 
						|
        </p>
 | 
						|
        <p>This field is <em>not</em> padded with additional zero bytes.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h4><a name="CommentMessage">IV.A.2.n. The Object Comment
 | 
						|
    Message</a></h4>
 | 
						|
 | 
						|
<!-- start msgdesc table -->
 | 
						|
<center>
 | 
						|
  <table class="msgdesc">
 | 
						|
    <tr><td colspan="2"><b>Header Message Name:</b> Object
 | 
						|
        Comment</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Header Message Type:</b> 0x000D</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Status:</b> Optional; may not be
 | 
						|
        repeated.</td></tr>
 | 
						|
    <tr><td><b>Description:</b></td>
 | 
						|
      <td>The object comment is designed to be a short description of
 | 
						|
        an object. An object comment is a sequence of non-zero
 | 
						|
        (<code>\0</code>) ASCII characters with no other formatting
 | 
						|
        included by the library.</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Format of Data:</b> See the tables
 | 
						|
        below.</td></tr>
 | 
						|
</table></center>
 | 
						|
<!-- end msgdesc table -->
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Object Comment Message
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Comment <em>(variable size)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Object Comment Message
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Name</p></td>
 | 
						|
	  <td><p>A null terminated ASCII character string.</p></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h4><a name="OldModificationTimeMessage">IV.A.2.o. The Object
 | 
						|
    Modification Time (Old) Message</a></h4>
 | 
						|
 | 
						|
<!-- start msgdesc table -->
 | 
						|
<center>
 | 
						|
  <table class="msgdesc">
 | 
						|
    <tr><td colspan="2"><b>Header Message Name:</b> Object
 | 
						|
        Modification Time (Old)</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Header Message Type:</b> 0x000E</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Status:</b> Optional; may not be
 | 
						|
        repeated.</td></tr>
 | 
						|
    <tr><td><b>Description:</b></td>
 | 
						|
      <td><p>The object modification date and time is a timestamp
 | 
						|
          which indicates (using ISO-8601 date and time format) the last
 | 
						|
          modification of an object. The time is updated when any object
 | 
						|
          header message changes according to the system clock where the
 | 
						|
          change was posted. All fields of this message should be
 | 
						|
          interpreted as coordinated universal time (UTC).</p>
 | 
						|
        <p>This modification time message is deprecated in favor of
 | 
						|
          the “new” <a href="#ModificationTimeMessage">Object
 | 
						|
            Modification Time</a> message and is no longer written to the
 | 
						|
          file in versions of the HDF5 Library after the 1.6.0
 | 
						|
          version.</p></td></tr>
 | 
						|
    <tr><td colspan="2"><b>Format of Data:</b> See the tables
 | 
						|
        below.</td></tr>
 | 
						|
</table></center>
 | 
						|
<!-- end msgdesc table -->
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Modification Time Message (Old)
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Year</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="2">Month</td>
 | 
						|
	  <td colspan="2">Day of Month</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="2">Hour</td>
 | 
						|
	  <td colspan="2">Minute</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="2">Second</td>
 | 
						|
	  <td colspan="2">Reserved</td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Modification Time Message (Old)
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Year</p></td>
 | 
						|
	  <td><p>The four-digit year as an ASCII string. For example,
 | 
						|
	      <code>1998</code>.
 | 
						|
      </p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Month</p></td>
 | 
						|
	  <td><p>The month number as a two digit ASCII string where
 | 
						|
	      January is <code>01</code> and December is <code>12</code>.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Day of Month</p></td>
 | 
						|
	  <td><p>The day number within the month as a two digit ASCII
 | 
						|
	      string. The first day of the month is <code>01</code>.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Hour</p></td>
 | 
						|
	  <td><p>The hour of the day as a two digit ASCII string where
 | 
						|
	      midnight is <code>00</code> and 11:00pm is <code>23</code>.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Minute</p></td>
 | 
						|
	  <td><p>The minute of the hour as a two digit ASCII string where
 | 
						|
	      the first minute of the hour is <code>00</code> and
 | 
						|
	      the last is <code>59</code>.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Second</p></td>
 | 
						|
	  <td><p>The second of the minute as a two digit ASCII string
 | 
						|
	      where the first second of the minute is <code>00</code>
 | 
						|
	      and the last is <code>59</code>.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Reserved</p></td>
 | 
						|
	  <td><p>This field is reserved and should always be zero.</p></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h4><a name="SOHMTableMessage">IV.A.2.p. The Shared Message Table
 | 
						|
    Message</a></h4>
 | 
						|
 | 
						|
<!-- start msgdesc table -->
 | 
						|
<center>
 | 
						|
  <table class="msgdesc">
 | 
						|
    <tr><td colspan="2"><b>Header Message Name:</b> Shared Message
 | 
						|
        Table</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Header Message Type:</b> 0x000F</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Status:</b> Optional; may not be
 | 
						|
        repeated.</td></tr>
 | 
						|
    <tr><td><b>Description:</b></td>
 | 
						|
      <td>This message is used to locate the table of shared object
 | 
						|
        header message (SOHM) indexes. Each index consists of information
 | 
						|
        to find the shared messages from either the heap or object header.
 | 
						|
        This message is <em>only</em> found in the superblock
 | 
						|
        extension.</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Format of Data:</b> See the tables
 | 
						|
        below.</td></tr>
 | 
						|
</table></center>
 | 
						|
<!-- end msgdesc table -->
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Shared Message Table Message
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Version</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Shared Object Header Message Table Address<sup>O</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Number of Indices</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Shared Message Table Message
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Version</p></td>
 | 
						|
	  <td><p>The version number for this message.  This document describes version 0.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Shared Object Header Message Table Address</p></td>
 | 
						|
	  <td><p>This field is the address of the master table for shared
 | 
						|
          object header message indexes.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Number of Indices</p></td>
 | 
						|
	  <td><p>This field is the number of indices in the master table.
 | 
						|
      </p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h4><a name="ContinuationMessage">IV.A.2.q. The Object Header
 | 
						|
    Continuation Message</a></h4>
 | 
						|
 | 
						|
<!-- start msgdesc table -->
 | 
						|
<center>
 | 
						|
  <table class="msgdesc">
 | 
						|
    <tr><td colspan="2"><b>Header Message Name:</b> Object Header
 | 
						|
        Continuation</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Header Message Type:</b> 0x0010</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Status:</b> Optional; may be
 | 
						|
        repeated.</td></tr>
 | 
						|
    <tr><td><b>Description:</b></td>
 | 
						|
      <td>The object header continuation is the location in the file
 | 
						|
        of a block containing more header messages for the current data
 | 
						|
        object. This can be used when header blocks become too large or
 | 
						|
        are likely to change over time.</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Format of Data:</b> See the tables
 | 
						|
        below.</td></tr>
 | 
						|
</table></center>
 | 
						|
<!-- end msgdesc table -->
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Object Header Continuation Message
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th width="25%">byte</th>
 | 
						|
      <th width="25%">byte</th>
 | 
						|
      <th width="25%">byte</th>
 | 
						|
      <th width="25%">byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Offset<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Length<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
    <tr>
 | 
						|
      <td> </td>
 | 
						|
      <td>
 | 
						|
        (Items marked with an ‘L’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
          of Lengths</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Object Header Continuation Message
 | 
						|
    </caption>
 | 
						|
    <tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Offset</p></td>
 | 
						|
      <td><p>This value is the address in the file where the
 | 
						|
          header continuation block is located.</p></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Length</p></td>
 | 
						|
      <td><p>This value is the length in bytes of the header continuation
 | 
						|
          block in the file.</p></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
<br />
 | 
						|
 | 
						|
<p>The format of the header continuation block that this message points
 | 
						|
  to depends on the version of the object header that the message is
 | 
						|
  contained within.
 | 
						|
</p>
 | 
						|
 | 
						|
<p>
 | 
						|
  Continuation blocks for version 1 object headers have no special
 | 
						|
  formatting information; they are merely a list of object header
 | 
						|
  message info sequences (type, size, flags, reserved bytes and data
 | 
						|
  for each message sequence).  See the description
 | 
						|
  of <a href="#V1ObjectHeaderPrefix">Version 1 Data Object Header Prefix.</a>
 | 
						|
</p>
 | 
						|
 | 
						|
<p>Continuation blocks for version 2 object headers <em>do</em> have
 | 
						|
  special formatting information as described here
 | 
						|
  (see also the description of
 | 
						|
  <a href="#V2ObjectHeaderPrefix">Version 2 Data Object Header Prefix.</a>):
 | 
						|
</p>
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Version 2 Object Header Continuation Block
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th>byte</th>
 | 
						|
	  <th>byte</th>
 | 
						|
	  <th>byte</th>
 | 
						|
	  <th>byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Signature</td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td>Header Message Type #1</td>
 | 
						|
	  <td colspan="2">Size of Header Message Data #1</td>
 | 
						|
	  <td>Header Message #1 Flags</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="2">Header Message #1 Creation Order <em>(optional)</em></td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Header Message Data #1<br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Header Message Type #n</td>
 | 
						|
	  <td colspan="2">Size of Header Message Data #n</td>
 | 
						|
	  <td>Header Message #n Flags</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="2">Header Message #n Creation Order <em>(optional)</em></td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Header Message Data #n<br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Gap <em>(optional, variable size)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Checksum</td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Version 2 Object Header Continuation Block
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Signature</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>The ASCII character string “<code>OCHK</code>”
 | 
						|
          is used to indicate the beginning of an object header
 | 
						|
          continuation block. This gives file consistency checking
 | 
						|
          utilities a better chance of reconstructing a damaged file.
 | 
						|
        </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Header Message #n Type</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>Same format as version 1 of the object header, described above.
 | 
						|
      </p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Size of Header Message #n Data</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>Same format as version 1 of the object header, described above.
 | 
						|
      </p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Header Message #n Flags</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>Same format as version 1 of the object header, described above.
 | 
						|
      </p></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Header Message #n Creation Order</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>This field stores the order that a message of a given type
 | 
						|
          was created in.</p>
 | 
						|
	    <p>This field is present if bit 2 of <em>flags</em> is set.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Header Message #n Data</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>Same format as version 1 of the object header, described above.
 | 
						|
      </p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Gap</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>A gap in an object header chunk is inferred by the end of the
 | 
						|
          messages for the chunk before the beginning of the chunk’s
 | 
						|
          checksum.  Gaps are always smaller than the size of an
 | 
						|
          object header message prefix (message type + message size +
 | 
						|
          message flags).</p>
 | 
						|
        <p>Gaps are formed when a message (typically an attribute message)
 | 
						|
          in an earlier chunk is deleted and a message from a later
 | 
						|
          chunk that does not quite fit into the free space is moved
 | 
						|
          into the earlier chunk.</p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Checksum</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This is the checksum for the object header chunk.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h4><a name="SymbolTableMessage">IV.A.2.r. The Symbol Table
 | 
						|
    Message</a></h4>
 | 
						|
 | 
						|
<!-- start msgdesc table -->
 | 
						|
<center>
 | 
						|
  <table class="msgdesc">
 | 
						|
    <tr><td colspan="2"><b>Header Message Name:</b> Symbol Table
 | 
						|
        Message</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Header Message Type:</b> 0x0011</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Status:</b> Required for
 | 
						|
        “old style” groups; may not be repeated.</td></tr>
 | 
						|
    <tr><td><b>Description:</b></td>
 | 
						|
      <td>Each “old style” group has a v1 B-tree and a
 | 
						|
        local heap for storing symbol table entries, which are located
 | 
						|
        with this message.</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Format of data:</b> See the tables
 | 
						|
        below.</td></tr>
 | 
						|
</table></center>
 | 
						|
<!-- end msgdesc table -->
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Symbol Table Message
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th width="25%">byte</th>
 | 
						|
      <th width="25%">byte</th>
 | 
						|
      <th width="25%">byte</th>
 | 
						|
      <th width="25%">byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />v1 B-tree Address<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Local Heap Address<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Symbol Table Message
 | 
						|
    </caption>
 | 
						|
    <tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>v1 B-tree Address</p></td>
 | 
						|
      <td><p>This value is the address of the v1 B-tree containing the
 | 
						|
          symbol table entries for the group.</p></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Local Heap Address</p></td>
 | 
						|
      <td><p>This value is the address of the local heap containing
 | 
						|
          the link names for the symbol table entries for the group.</p></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h4><a name="ModificationTimeMessage">IV.A.2.s. The Object
 | 
						|
    Modification Time Message</a></h4>
 | 
						|
 | 
						|
<!-- start msgdesc table -->
 | 
						|
<center>
 | 
						|
  <table class="msgdesc">
 | 
						|
    <tr><td colspan="2"><b>Header Message Name:</b> Object
 | 
						|
        Modification Time</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Header Message Type:</b> 0x0012</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Status:</b> Optional; may not be
 | 
						|
        repeated.</td></tr>
 | 
						|
    <tr><td><b>Description:</b></td>
 | 
						|
      <td>The object modification time is a timestamp which indicates
 | 
						|
        the time of the last modification of an object. The time is
 | 
						|
        updated when any object header message changes according to
 | 
						|
        the system clock where the change was posted.</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Format of Data:</b> See the tables
 | 
						|
        below.</td></tr>
 | 
						|
</table></center>
 | 
						|
<!-- end msgdesc table -->
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Modification Time Message
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Version</td>
 | 
						|
	  <td colspan="3">Reserved <em>(zero)</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Seconds After UNIX Epoch</td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Modification Time Message
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Version</p></td>
 | 
						|
	  <td><p>The version number is used for changes in the format of Object Modification Time
 | 
						|
	      and is described here:
 | 
						|
	      <table class="list">
 | 
						|
		    <tr>
 | 
						|
		      <th width="20%" align="center">Version</th>
 | 
						|
		      <th width="80%" align="left">Description</th>
 | 
						|
		    </tr>
 | 
						|
 | 
						|
		    <tr>
 | 
						|
		      <td align="center"><code>0</code></td>
 | 
						|
		      <td>Never used.</td>
 | 
						|
		    </tr>
 | 
						|
 | 
						|
		    <tr>
 | 
						|
		      <td align="center"><code>1</code></td>
 | 
						|
		      <td>Used by Version 1.6.1 and after of the library to encode time.  In
 | 
						|
		        this version, the time is the seconds after Epoch.</td>
 | 
						|
		    </tr>
 | 
						|
	    </table></p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Seconds After UNIX Epoch</p></td>
 | 
						|
	  <td><p>A 32-bit unsigned integer value that stores the number of
 | 
						|
          seconds since 0 hours, 0 minutes, 0 seconds, January 1, 1970,
 | 
						|
          Coordinated Universal Time.</p></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h4><a name="BtreeKValuesMessage">IV.A.2.t. The B-tree
 | 
						|
    ‘K’ Values Message</a></h4>
 | 
						|
 | 
						|
<!-- start msgdesc table -->
 | 
						|
<center>
 | 
						|
  <table class="msgdesc">
 | 
						|
    <tr><td colspan="2"><b>Header Message Name:</b> B-tree
 | 
						|
        ‘K’ Values</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Header Message Type:</b> 0x0013</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Status:</b> Optional; may not be
 | 
						|
        repeated.</td></tr>
 | 
						|
    <tr><td><b>Description:</b></td>
 | 
						|
      <td>This message retrieves non-default ‘K’ values
 | 
						|
        for internal and leaf nodes of a group or indexed storage v1
 | 
						|
        B-trees. This message is <em>only</em> found in the superblock
 | 
						|
        extension.</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Format of Data:</b> See the tables
 | 
						|
        below.</td></tr>
 | 
						|
</table></center>
 | 
						|
<!-- end msgdesc table -->
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: B-tree ‘K’ Values Message
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Version</td>
 | 
						|
	  <td colspan="2">Indexed Storage Internal Node K</td>
 | 
						|
      <td bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="2">Group Internal Node K</td>
 | 
						|
	  <td colspan="2">Group Leaf Node K</td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: B-tree ‘K’ Values Message
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Version</p></td>
 | 
						|
	  <td><p>The version number for this message. This document describes
 | 
						|
          version 0.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Indexed Storage Internal Node K</p></td>
 | 
						|
	  <td><p>This is the node ‘K’ value for each internal node of an
 | 
						|
          indexed storage v1 B-tree.  See the description of this field
 | 
						|
          in version 0 and 1 of the superblock as well the section on
 | 
						|
          v1 B-trees.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Group Internal Node K</p></td>
 | 
						|
	  <td><p>This is the node ‘K’ value for each internal node of a group
 | 
						|
          v1 B-tree.  See the description of this field in version 0 and
 | 
						|
          1 of the superblock as well as the section on v1 B-trees.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Group Leaf Node K</p></td>
 | 
						|
	  <td><p>This is the node ‘K’ value for each leaf node of a group v1
 | 
						|
          B-tree.  See the description of this field in version 0 and 1
 | 
						|
          of the superblock as well as the section on v1 B-trees.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h4><a name="DrvInfoMessage">IV.A.2.u. The Driver Info
 | 
						|
    Message</a></h4>
 | 
						|
 | 
						|
<!-- start msgdesc table -->
 | 
						|
<center>
 | 
						|
  <table class="msgdesc">
 | 
						|
    <tr><td colspan="2"><b>Header Message Name:</b> Driver
 | 
						|
        Info</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Header Message Type:</b> 0x0014</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Status:</b> Optional; may not be
 | 
						|
        repeated.</td></tr>
 | 
						|
 | 
						|
    <tr><td>
 | 
						|
        <b>Description:</b></td>
 | 
						|
      <td>This message contains information needed by the file driver
 | 
						|
        to reopen a file. This message is <em>only</em> found in the
 | 
						|
        superblock extension: see the <a href="#SuperblockExt">
 | 
						|
          “Disk Format: Level 0C - Superblock Extension”</a>
 | 
						|
        section for more information. For more information on the fields
 | 
						|
        in the driver info message, see the <a href="#DriverInfo">
 | 
						|
          “Disk Format: Level 0B - File Driver Info”</a>
 | 
						|
        section; those who use the multi and family file drivers will
 | 
						|
        find this section particularly helpful.</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Format of Data:</b> See the tables
 | 
						|
        below.</td></tr>
 | 
						|
</table></center>
 | 
						|
<!-- end msgdesc table -->
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Driver Info Message
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Version</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Driver Identification</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="2">Driver Information Size</td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br /><br />Driver Information <em>(variable size)</em><br /><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Driver Info Message
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Version</p></td>
 | 
						|
	  <td><p>The version number for this message. This document describes
 | 
						|
          version 0.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Driver Identification</p></td>
 | 
						|
	  <td><p>This is an eight-byte ASCII string without null termination which
 | 
						|
          identifies the driver.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Driver Information Size</p></td>
 | 
						|
	  <td><p>The size in bytes of the <em>Driver Information</em> field of this
 | 
						|
          message.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Driver Information</p></td>
 | 
						|
	  <td><p>Driver information is stored in a format defined by the file driver.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h4><a name="AinfoMessage">IV.A.2.v. The Attribute Info
 | 
						|
    Message</a></h4>
 | 
						|
 | 
						|
<!-- start msgdesc table -->
 | 
						|
<center>
 | 
						|
  <table class="msgdesc">
 | 
						|
    <tr><td colspan="2"><b>Header Message Name:</b> Attribute
 | 
						|
        Info</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Header Message Type:</b> 0x0015</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Length:</b> Varies</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Status:</b> Optional; may not be
 | 
						|
        repeated.</td></tr>
 | 
						|
    <tr><td><b>Description:</b></td>
 | 
						|
      <td>This message stores information about the attributes on an
 | 
						|
        object, such as the maximum creation index for the attributes
 | 
						|
        created and the location of the attribute storage when the
 | 
						|
        attributes are stored “densely”.</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Format of Data:</b> See the tables
 | 
						|
        below.</td></tr>
 | 
						|
</table></center>
 | 
						|
<!-- end msgdesc table -->
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Attribute Info Message
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Version</td>
 | 
						|
	  <td>Flags</td>
 | 
						|
	  <td colspan="2">Maximum Creation Index <em>(optional)</em></td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Fractal Heap Address<sup>O</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Attribute Name v2 B-tree Address<sup>O</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Attribute Creation Order v2 B-tree Address<sup>O</sup> <em>(optional)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Attribute Info Message
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Version</p></td>
 | 
						|
	  <td><p>The version number for this message. This document describes
 | 
						|
          version 0.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Flags</p></td>
 | 
						|
	  <td><p>This is the attribute index information flag with the
 | 
						|
          following definition:
 | 
						|
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">Bit</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td>If set, creation order for attributes is tracked.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>1</code></td>
 | 
						|
              <td>If set, creation order for attributes is indexed.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>2-7</code></td>
 | 
						|
              <td>Reserved</td>
 | 
						|
            </tr>
 | 
						|
	    </table></p>
 | 
						|
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Maximum Creation Index</p></td>
 | 
						|
	  <td><p>The is the maximum creation order index value for the
 | 
						|
          attributes on the object.</p>
 | 
						|
	    <p>This field is present if bit 0 of <em>Flags</em> is set.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Fractal Heap Address</p></td>
 | 
						|
	  <td><p>This is the address of the fractal heap to store dense
 | 
						|
          attributes.
 | 
						|
          Each attribute stored in the fractal heap is described by
 | 
						|
          the <a href="#AttributeMessage">Attribute Message.</a>
 | 
						|
        </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Attribute Name v2 B-tree Address</p></td>
 | 
						|
	  <td><p>This is the address of the version 2 B-tree to index the
 | 
						|
          names of densely stored attributes.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Attribute Creation Order v2 B-tree Address</p></td>
 | 
						|
	  <td><p>This is the address of the version 2 B-tree to index the
 | 
						|
          creation order of densely stored attributes.</p>
 | 
						|
	    <p>This field is present if bit 1 of <em>Flags</em> is set.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h4><a name="RefCountMessage">IV.A.2.w. The Object Reference
 | 
						|
    Count Message</a></h4>
 | 
						|
 | 
						|
<!-- start msgdesc table -->
 | 
						|
<center>
 | 
						|
  <table class="msgdesc">
 | 
						|
    <tr><td colspan="2"><b>Header Message Name:</b> Object Reference
 | 
						|
        Count</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Header Message Type:</b> 0x0016</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Status:</b> Optional; may not be
 | 
						|
        repeated.</td></tr>
 | 
						|
    <tr><td><b>Description:</b></td>
 | 
						|
      <td>This message stores the number of hard links (in groups or
 | 
						|
        objects) pointing to an object: in other words, its
 | 
						|
        <em>reference count</em>.</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Format of Data:</b> See the tables
 | 
						|
        below.</td></tr>
 | 
						|
</table></center>
 | 
						|
<!-- end msgdesc table -->
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Object Reference Count
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Version</td>
 | 
						|
      <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Reference count</td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Object Reference Count
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Version</p></td>
 | 
						|
	  <td><p>The version number for this message. This document describes
 | 
						|
          version 0.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Reference Count</p></td>
 | 
						|
	  <td><p>The unsigned 32-bit integer is the reference count for the
 | 
						|
          object. This message is only present in “version 2”
 | 
						|
          (or later) object headers, and if not present those object
 | 
						|
          header versions, the reference count for the object is assumed
 | 
						|
          to be 1.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
 | 
						|
<h4><a name="FsinfoMessage">IV.A.2.x. The File Space Info
 | 
						|
    Message</a></h4>
 | 
						|
 | 
						|
<center>
 | 
						|
  <table class="msgdesc">
 | 
						|
    <tr><td colspan="2"><b>Header Message Name:</b> File Space
 | 
						|
        Info</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Header Message Type:</b> 0x0017</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Length:</b> Fixed</td></tr>
 | 
						|
    <tr><td colspan="2"><b>Status:</b> Optional; may not be
 | 
						|
        repeated.</td></tr>
 | 
						|
    <tr><td>
 | 
						|
        <b>Description:</b></td>
 | 
						|
      <td>This message stores the file space management information
 | 
						|
        that the library uses in handling file space
 | 
						|
        requests for the file. Version 0 of the message is used for release 1.10.0 only.
 | 
						|
        Version 1 of the message is used for release 1.10.1+.
 | 
						|
        There is no File Space Info message before release 1.10 as the library does
 | 
						|
        not track file space across multiple file opens.
 | 
						|
        <p>
 | 
						|
          Note that version 0 is deprecated starting release 1.10.1.
 | 
						|
          That means when the 1.10.1+ library opens an HDF5 file with a version 0 message,
 | 
						|
          the library will decode and map the message to version 1.
 | 
						|
          On file close, it will encode the message as a version 1 message.
 | 
						|
        <p>
 | 
						|
          The library uses the following three mechanisms to manage file space in an HDF5 file:
 | 
						|
          <ul>
 | 
						|
            <li> Free-space managers
 | 
						|
              <br> They track free-space sections of various sizes in the file that are not currently
 | 
						|
              allocated.  Each free-space manager corresponds to a file space type.
 | 
						|
              There are two main groups of file space types: metadata and raw data.
 | 
						|
              Metadata is further divided into five types: superblock, B-tree, global heap,
 | 
						|
              local heap, and object header.
 | 
						|
              See the description of <a href="#FreeSpaceManager">Free-space
 | 
						|
                Manager</a> as well the description of file space allocation types in
 | 
						|
              <a href="#AppendixB">Appendix B</a>
 | 
						|
            </li>
 | 
						|
            <li> Aggregators
 | 
						|
              <br> The library manages two aggregators, one for metadata and one for raw data.
 | 
						|
              Aggregator is a contiguous block of free-space in the file.
 | 
						|
              The size of each aggregator is tunable via public routines
 | 
						|
              <code>H5Pset_meta_block_size</code> and <code>H5Pset_small_data_block_size</code> respectively.
 | 
						|
            </li>
 | 
						|
            <li> Virtual file drivers
 | 
						|
              <br> The library's virtual file driver interface dispatches requests for additional
 | 
						|
              space to the allocation routine of the file driver associated with the file.
 | 
						|
              For example, if the sec2 file driver is being used, its allocation routine will
 | 
						|
              increase the size of the file to service the requests.
 | 
						|
            </li>
 | 
						|
          </ul>
 | 
						|
        <p>
 | 
						|
          For release 1.10.0, the library derives the following four file space strategies
 | 
						|
          based on the mechanisms:
 | 
						|
          <ul>
 | 
						|
            <li>H5F_FILE_SPACE_ALL
 | 
						|
              <ul>
 | 
						|
                <li>Mechanisms used: free-space managers, aggregators, and virtual file drivers</li>
 | 
						|
                <li>Does not persist free-space across file opens</li>
 | 
						|
                <li>This strategy is the library default</li>
 | 
						|
              </ul>
 | 
						|
            </li>
 | 
						|
            <li>H5F_FILE_SPACE_ALL_PERSIST</li>
 | 
						|
            <ul>
 | 
						|
              <li>Mechanisms used: free-space managers, aggregators, and virtual file drivers</li>
 | 
						|
              <li>Persist free-space across file opens</li>
 | 
						|
            </ul>
 | 
						|
            <li>H5F_FILE_SPACE_AGGR_VFD</li>
 | 
						|
            <ul>
 | 
						|
              <li>Mechanisms used: aggregators and virtual file drivers</li>
 | 
						|
              <li>Does not persist free-space across file opens</li>
 | 
						|
            </ul>
 | 
						|
            <li>H5F_FILE_SPACE_VFD</li>
 | 
						|
            <ul>
 | 
						|
              <li>Mechanisms used: virtual file drivers</li>
 | 
						|
              <li>Does not persist free-space across file opens</li>
 | 
						|
            </ul>
 | 
						|
          </ul>
 | 
						|
          For release 1.10.1+, the free-space manager mechanism is modified to handle paged aggregation
 | 
						|
          which aggregates small metadata and raw data allocations into constant-sized well-aligned pages
 | 
						|
          to allow efficient I/O accesses.
 | 
						|
          With the support of this feature, the library derives the following four file space strategies:
 | 
						|
          <ul>
 | 
						|
            <li>H5F_FSPACE_STRATEGY_FSM_AGGR </li>
 | 
						|
            <ul>
 | 
						|
              <li>Mechanisms used: free-space managers, aggregators, and virtual file drivers</li>
 | 
						|
              <li>This strategy is the library default</li>
 | 
						|
            </ul>
 | 
						|
            <li>H5F_FSPACE_STRATEGY_PAGE</li>
 | 
						|
            <ul>
 | 
						|
              <li>Mechanisms used: free-space managers with embedded paged aggregation and virtual file drivers</li>
 | 
						|
            </ul>
 | 
						|
            <li>H5F_FSPACE_STRATEGY_AGGR</li>
 | 
						|
            <ul>
 | 
						|
              <li>Mechanisms used: aggregators and virtual file drivers</li>
 | 
						|
            </ul>
 | 
						|
            <li>H5F_FSPACE_STRATEGY_NONE</li>
 | 
						|
            <ul>
 | 
						|
              <li>Mechanisms used: virtual file drivers</li>
 | 
						|
            </ul>
 | 
						|
          </ul>
 | 
						|
          The default is not persisting free-space across file opens for the above four strategies.
 | 
						|
          User can use the public routine <code>H5Pset_file_space_strategy</code> to request
 | 
						|
          persisting free-space.
 | 
						|
    </td></tr>
 | 
						|
    <p>
 | 
						|
      <tr><td colspan="2"><b>Format of Data:</b> See the tables
 | 
						|
          below.</td></tr>
 | 
						|
</table></center>
 | 
						|
<p>
 | 
						|
  <div align="center">
 | 
						|
    <table class="format">
 | 
						|
      <caption>
 | 
						|
        Layout: File Space Info - Version 0
 | 
						|
      </caption>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td>Version</td>
 | 
						|
	    <td>Strategy</td>
 | 
						|
        <td colspan="2">Threshold<sup>L</sup></td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4"><br />Free-space manager address<sup>O</sup> for H5FD_MEM_SUPER<br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4"><br />Free-space manager address<sup>0</sup> for H5FD_MEM_BTREE<br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4"><br />Free-space manager address<sup>0</sup> for H5FD_MEM_DRAW<br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4"><br />Free-space manager address<sup>0</sup> for H5FD_MEM_GHEAP<br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4"><br />Free-space manager address<sup>0</sup> for H5FD_MEM_LHEAP<br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4"><br />Free-space manager address<sup>0</sup> for H5FD_MEM_OHDR<br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
    </table>
 | 
						|
 | 
						|
    <table class="note">
 | 
						|
      <tr>
 | 
						|
        <td width="60%"> </td>
 | 
						|
        <td width="40%">
 | 
						|
          (Items marked with an ‘O’ in the above table are
 | 
						|
          of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
            of Offsets</a> field in the superblock.)
 | 
						|
      </td></tr>
 | 
						|
      <tr>
 | 
						|
        <td> </td>
 | 
						|
        <td>
 | 
						|
          (Items marked with an ‘L’ in the above table are
 | 
						|
          of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
            of Lengths</a> field in the superblock.)
 | 
						|
      </td></tr>
 | 
						|
    </table>
 | 
						|
 | 
						|
  </div>
 | 
						|
 | 
						|
  <br />
 | 
						|
  <div align="center">
 | 
						|
    <table class="desc">
 | 
						|
      <caption>
 | 
						|
        Fields: File Space Info
 | 
						|
      </caption>
 | 
						|
	  <tr>
 | 
						|
        <th width="30%">Field Name</th>
 | 
						|
        <th>Description</th>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>Version</p></td>
 | 
						|
	    <td><p>This is version 0 of this message.</p>
 | 
						|
	    </td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>Strategy</p></td>
 | 
						|
	    <td><p>This is the file space strategy used to manage file space.
 | 
						|
		    There are four types:
 | 
						|
            <table class="list">
 | 
						|
              <tr>
 | 
						|
                <th width="20%" align="center">Value</th>
 | 
						|
                <th width="80%" align="left">Description</th>
 | 
						|
              </tr>
 | 
						|
 | 
						|
              <tr>
 | 
						|
                <td align="center"><code>1</code></td>
 | 
						|
                <td>H5F_FILE_SPACE_ALL_PERSIST</td>
 | 
						|
              </tr>
 | 
						|
 | 
						|
              <tr>
 | 
						|
                <td align="center"><code>2</code></td>
 | 
						|
                <td>H5F_FILE_SPACE_ALL</td>
 | 
						|
              </tr>
 | 
						|
 | 
						|
              <tr>
 | 
						|
                <td align="center"><code>3</code></td>
 | 
						|
                <td>H5F_FILE_SPACE_AGGR_VFD</td>
 | 
						|
              </tr>
 | 
						|
              <tr>
 | 
						|
                <td align="center"><code>4</code></td>
 | 
						|
                <td>H5F_FILE_SPACE_VFD</td>
 | 
						|
              </tr>
 | 
						|
          </table></p>
 | 
						|
	    </td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>Threshold</p></td>
 | 
						|
	    <td><p>This is the smallest free-space section size that the
 | 
						|
	        free-space manager will track.
 | 
						|
	    </td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td><p>Free-space manager addresses</p></td>
 | 
						|
	    <td><p>These are the six free-space manager addresses for the
 | 
						|
            six file space allocation types:
 | 
						|
            <ul>
 | 
						|
              <li>H5FD_MEM_SUPER</li>
 | 
						|
              <li>H5FD_MEM_BTREE</li>
 | 
						|
              <li>H5FD_MEM_DRAW</li>
 | 
						|
              <li>H5FD_MEM_GHEAP</li>
 | 
						|
              <li>H5FD_MEM_LHEAP</li>
 | 
						|
              <li>H5FD_MEM_OHDR</li>
 | 
						|
            </ul>
 | 
						|
            Note that these six fields exist only if the value for the field
 | 
						|
            “<em>Strategy</em>” is H5F_FILE_SPACE_ALL_PERSIST.
 | 
						|
          </p>
 | 
						|
	    </td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
    </table>
 | 
						|
  </div>
 | 
						|
  <br />
 | 
						|
 | 
						|
  <div align="center">
 | 
						|
    <table class="format">
 | 
						|
      <caption>
 | 
						|
        Layout: File Space Info - Version 1
 | 
						|
      </caption>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td>Version</td>
 | 
						|
	    <td>Strategy</td>
 | 
						|
        <td>Persisting free-space</td>
 | 
						|
        <td colspan="1" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
        <td colspan="4">Free-space Section Threshold<sup>L</sup></td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
      <tr>
 | 
						|
        <td colspan="4">File Space Page Size</td>
 | 
						|
      </tr>
 | 
						|
 | 
						|
      <tr>
 | 
						|
        <td colspan="2">Page-end Metadata threshold</td>
 | 
						|
        <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em></td>
 | 
						|
      </tr>
 | 
						|
 | 
						|
      <tr>
 | 
						|
        <td colspan="4"><br />EOA<sup>0</sup><br /><br /></td>
 | 
						|
      </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4"><br />Address<sup>O</sup> of small-sized free-space manager for H5FD_MEM_SUPER<br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4"><br />Address<sup>O</sup> of small-sized free-space manager for H5FD_MEM_BTREE<br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4"><br />Address<sup>O</sup> of small-sized free-space manager for H5FM_MEM_DRAW<br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4"><br />Address<sup>O</sup> of small-sized free-space manager for H5FD_MEM_GHEAP<br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4"><br />Address<sup>O</sup> of small-sized free-space manager for H5FD_MEM_LHEAP<br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4"><br />Address<sup>O</sup> of small-sized free-space manager for H5FD_MEM_OHDR<br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4"><br />Address<sup>O</sup> of large-sized free-space manager for H5FD_MEM_SUPER<br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4"><br />Address<sup>O</sup> of large-sized free-space manager for H5FD_MEM_BTREE<br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4"><br />Address<sup>O</sup> of large-sized free-space manager for H5FM_MEM_DRAW<br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4"><br />Address<sup>O</sup> of large-sized free-space manager for H5FD_MEM_GHEAP<br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4"><br />Address<sup>O</sup> of large-sized free-space manager for H5FD_MEM_LHEAP<br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4"><br />Address<sup>O</sup> of large-sized free-space manager for H5FD_MEM_OHDR<br /><br /></td>
 | 
						|
	  </tr>
 | 
						|
    </table>
 | 
						|
 | 
						|
    <table class="note">
 | 
						|
      <tr>
 | 
						|
        <td width="60%"> </td>
 | 
						|
        <td width="40%">
 | 
						|
          (Items marked with an ‘O’ in the above table are
 | 
						|
          of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
            of Offsets</a> field in the superblock.)
 | 
						|
      </td></tr>
 | 
						|
      <tr>
 | 
						|
        <td> </td>
 | 
						|
        <td>
 | 
						|
          (Items marked with an ‘L’ in the above table are
 | 
						|
          of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
            of Lengths</a> field in the superblock.)
 | 
						|
      </td></tr>
 | 
						|
    </table>
 | 
						|
 | 
						|
  </div>
 | 
						|
 | 
						|
  <br />
 | 
						|
  <div align="center">
 | 
						|
    <table class="desc">
 | 
						|
      <caption>
 | 
						|
        Fields: File Space Info
 | 
						|
      </caption>
 | 
						|
	  <tr>
 | 
						|
        <th width="30%">Field Name</th>
 | 
						|
        <th>Description</th>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>Version</p></td>
 | 
						|
	    <td><p>This is version 1 of this message.</p>
 | 
						|
	    </td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>Strategy</p></td>
 | 
						|
	    <td><p>This is the file space strategy used to manage file space.
 | 
						|
		    There are four types:
 | 
						|
            <table class="list">
 | 
						|
              <tr>
 | 
						|
                <th width="20%" align="center">Value</th>
 | 
						|
                <th width="80%" align="left">Description</th>
 | 
						|
              </tr>
 | 
						|
 | 
						|
              <tr>
 | 
						|
                <td align="center"><code>0</code></td>
 | 
						|
                <td>H5F_FSPACE_STRATEGY_FSM_AGGR</td>
 | 
						|
              </tr>
 | 
						|
 | 
						|
              <tr>
 | 
						|
                <td align="center"><code>1</code></td>
 | 
						|
                <td>H5F_FSPACE_STRATEGY_PAGE</td>
 | 
						|
              </tr>
 | 
						|
 | 
						|
              <tr>
 | 
						|
                <td align="center"><code>2</code></td>
 | 
						|
                <td>H5F_FSPACE_STRATEGY_AGGR</td>
 | 
						|
              </tr>
 | 
						|
              <tr>
 | 
						|
                <td align="center"><code>3</code></td>
 | 
						|
                <td>H5F_FSPACE_STRATEGY_NONE</td>
 | 
						|
              </tr>
 | 
						|
          </table></p>
 | 
						|
	    </td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>Persisting free-space</p></td>
 | 
						|
	    <td><p>True or false in persisting free-space.
 | 
						|
	    </td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>Free-space Section Threshold</p></td>
 | 
						|
	    <td><p>This is the smallest free-space section size that the
 | 
						|
	        free-space manager will track.
 | 
						|
	    </td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>File space page size</p></td>
 | 
						|
	    <td><p>This is the file space page size, which is used when the paged aggregation feature
 | 
						|
	        is enabled.
 | 
						|
	    </td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>Page-end metadata threshold</p></td>
 | 
						|
	    <td><p>This is the smallest free-space section size at the end of a page that
 | 
						|
            the free-space manager will track.  This is used when the paged aggregation feature
 | 
						|
	        is enabled.
 | 
						|
	    </td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>EOA</p></td>
 | 
						|
	    <td><p>The EOA before the allocation of free-space manager header and section info for the
 | 
						|
            self-referential free-space managers when persisting free-space.
 | 
						|
            <br>
 | 
						|
            Note that self-referential free-space managers are managers that involve file space
 | 
						|
            allocation for the managers' free-space header and section info.
 | 
						|
	    </td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>Addresses of small-sized free-space managers</p></td>
 | 
						|
	    <td><p>These are the addresses of the six small-sized free-space managers for
 | 
						|
            the six file space allocation types:
 | 
						|
          </p>
 | 
						|
          <ul>
 | 
						|
            <li>H5FD_MEM_SUPER</li>
 | 
						|
            <li>H5FD_MEM_BTREE</li>
 | 
						|
            <li>H5FD_MEM_DRAW</li>
 | 
						|
            <li>H5FD_MEM_GHEAP</li>
 | 
						|
            <li>H5FD_MEM_LHEAP</li>
 | 
						|
            <li>H5FD_MEM_OHDR</li>
 | 
						|
          </ul>
 | 
						|
          Note that these six fields exist only if the value for the field
 | 
						|
          “<em>Persisting free-space</em>” is true.
 | 
						|
</ul>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td><p>Addresses of large-sized free-space managers</p></td>
 | 
						|
  <td><p>These are the addresses of the six large-sized free-space managers for
 | 
						|
      the six file space allocation types:
 | 
						|
    </p>
 | 
						|
    <ul>
 | 
						|
      <li>H5FD_MEM_SUPER</li>
 | 
						|
      <li>H5FD_MEM_BTREE</li>
 | 
						|
      <li>H5FD_MEM_DRAW</li>
 | 
						|
      <li>H5FD_MEM_GHEAP</li>
 | 
						|
      <li>H5FD_MEM_LHEAP</li>
 | 
						|
      <li>H5FD_MEM_OHDR</li>
 | 
						|
    </ul>
 | 
						|
    Note that these six fields exist only if the value for the field
 | 
						|
    “<em>Persisting free-space</em>” is true.
 | 
						|
</ul>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
</table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h3><a name="DataStorage">
 | 
						|
    IV.B. Disk Format: Level 2B - Data Object Data Storage</a></h3>
 | 
						|
 | 
						|
<p>The data for an object is stored separately from its header
 | 
						|
  information in the file and may not actually be located in the HDF5 file
 | 
						|
  itself if the header indicates that the data is stored externally.  The
 | 
						|
  information for each record in the object is stored according to the
 | 
						|
  dimensionality of the object (indicated in the dataspace header message).
 | 
						|
  Multi-dimensional array data is stored in C order; in other words, the
 | 
						|
  “last” dimension changes fastest.</p>
 | 
						|
 | 
						|
<p>Data whose elements are composed of atomic datatypes are stored in IEEE
 | 
						|
  format, unless they are specifically defined as being stored in a different
 | 
						|
  machine format with the architecture-type information from the datatype
 | 
						|
  header message.  This means that each architecture will need to [potentially]
 | 
						|
  byte-swap data values into the internal representation for that particular
 | 
						|
  machine.</p>
 | 
						|
 | 
						|
<p> Data with a variable-length datatype is stored in the global heap
 | 
						|
  of the HDF5 file.  Global heap identifiers are stored in the
 | 
						|
  data object storage.</p>
 | 
						|
 | 
						|
<p>Data whose elements are composed of reference datatypes are stored in
 | 
						|
  several different ways depending on the particular reference type involved.
 | 
						|
  Object pointers are just stored as the offset of the object header being
 | 
						|
  pointed to with the size of the pointer being the same number of bytes as
 | 
						|
  offsets in the file.</p>
 | 
						|
 | 
						|
<p>Dataset region references are stored as a heap-ID which points to
 | 
						|
  the following information within the file-heap: an offset of the object
 | 
						|
  pointed to, number-type information (same format as header message),
 | 
						|
  dimensionality information (same format as header message), sub-set start
 | 
						|
  and end information (in other words, a coordinate location for each),
 | 
						|
  and field start and end names (in other words, a [pointer to the] string
 | 
						|
  indicating the first field included and a [pointer to the] string name
 | 
						|
  for the last field).  </p>
 | 
						|
 | 
						|
<p>Data of a compound datatype is stored as a contiguous stream of the items
 | 
						|
  in the structure, with each item formatted according to its datatype.
 | 
						|
<p>
 | 
						|
  Description of datatypes for variable-length, references and compound classes can be found
 | 
						|
  in <a href="#DatatypeMessage">Datatype Message</a>.
 | 
						|
<p>
 | 
						|
  Information about global heap and heap ID can be found in <a href="#GlobalHeap">Global Heap</a>.
 | 
						|
<p>
 | 
						|
  For reference datatype,
 | 
						|
  see also the encoding description for <a href="#ReferenceEncodeRV">Reference Encoding (Revised) </a> and
 | 
						|
  <a href="#ReferenceEncodeDP">Reference Encoding (Backward Compatibility)</a> in Appendix D.
 | 
						|
</p>
 | 
						|
 | 
						|
<h2><a name="AppendixA">
 | 
						|
    V. Appendix A: Definitions</a></h2>
 | 
						|
 | 
						|
<p>Definitions of various terms used in this document are included in
 | 
						|
  this section.</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="glossary">
 | 
						|
    <tr>
 | 
						|
      <th width="20%">Term</th>
 | 
						|
      <th>Definition</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Undefined Address</td>
 | 
						|
      <td>The <a name="UndefinedAddress">undefined
 | 
						|
          address</a> for a file is a file address with all bits
 | 
						|
        set: in other words, <code>0xffff...ff</code>.</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>Unlimited Size</td>
 | 
						|
	  <td>The <a name="UnlimitedDim">unlimited size</a>
 | 
						|
        for a size is a value with all bits set: in other words,
 | 
						|
        <code>0xffff...ff</code>.</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
 | 
						|
<h2><a name="AppendixB">
 | 
						|
    VI. Appendix B: File Space Allocation Types</a></h2>
 | 
						|
 | 
						|
<p>There are six basic types of file space allocation as follows:
 | 
						|
</p>
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Basic Allocation Type</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>H5FD_MEM_SUPER</td>
 | 
						|
	  <td>File space allocated for <em>Superblock.</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>H5FD_MEM_BTREE</td>
 | 
						|
	  <td>File space allocated for <em>B-tree.</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>H5FD_MEM_DRAW</td>
 | 
						|
	  <td>File space allocated for <em>raw data</em>.</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>H5FD_MEM_GHEAP</td>
 | 
						|
	  <td>File space allocated for <em>Global Heap.</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>H5FD_MEM_LHEAP</td>
 | 
						|
	  <td>File space allocated for <em>Local Heap.</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>H5FD_MEM_OHDR</td>
 | 
						|
	  <td>File space allocated for <em>Object Header.</em></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<p>There are other file space allocation types that are mapped to the
 | 
						|
  above six basic types because they are similar in nature.
 | 
						|
  The mapping and the corresponding description are listed in the following two tables:
 | 
						|
</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Basic Allocation Type</th>
 | 
						|
      <th>Mapping of Allocation Types to Basic Allocation Types</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>H5FD_MEM_SUPER</td>
 | 
						|
	  <td><em>none</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>H5FD_MEM_BTREE</td>
 | 
						|
	  <td>H5FD_MEM_SOHM_INDEX</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>H5FD_MEM_DRAW</td>
 | 
						|
	  <td>H5FD_MEM_FHEAP_HUGE_OBJ</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>H5FD_MEM_GHEAP</td>
 | 
						|
	  <td><em>none</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>H5FD_MEM_LHEAP</td>
 | 
						|
	  <td>H5FD_MEM_FHEAP_DBLOCK, H5FD_MEM_FSPACE_SINFO</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>H5FD_MEM_OHDR</td>
 | 
						|
	  <td>H5FD_MEM_FHEAP_HDR, H5FD_MEM_FHEAP_IBLOCK, H5FD_MEM_FSPACE_HDR, H5FD_MEM_SOHM_TABLE</td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Allocation Type</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>H5FD_MEM_FHEAP_HDR</td>
 | 
						|
	  <td>File space allocated for <em>Fractal Heap Header.</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>H5FD_MEM_FHEAP_DBLOCK</td>
 | 
						|
	  <td>File space allocated for <em>Fractal Heap Direct Blocks.</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>H5FD_MEM_FHEAP_IBLOCK</td>
 | 
						|
	  <td>File space allocated for <em>Fractal Heap Indirect Blocks.</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>H5FD_MEM_FHEAP_HUGE_OBJ</td>
 | 
						|
	  <td>File space allocated for huge objects in the fractal heap.</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>H5FD_MEM_FSPACE_HDR</td>
 | 
						|
	  <td>File space allocated for <em>Free-space Manager Header.</em></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td>H5FD_MEM_FSPACE_SINFO</td>
 | 
						|
	  <td>File space allocated for <em>Free-space Section List</em> of the free-space manager.</td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td>H5FD_MEM_SOHM_TABLE</td>
 | 
						|
	  <td>File space allocated for <em>Shared Object Header Message Table.</em></td>
 | 
						|
	</tr>
 | 
						|
	<tr>
 | 
						|
	  <td>H5FD_MEM_SOHM_INDEX</td>
 | 
						|
	  <td>File space allocated for <em>Shared Message Record List.</em></td>
 | 
						|
	</tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<h2><a name="AppendixC"> VII. Appendix C:
 | 
						|
    Types of Indexes for Dataset Chunks</a></h2>
 | 
						|
 | 
						|
<p>For an HDF5 file without the latest format enabled, the library
 | 
						|
  uses the <a href="#V1Btrees">Version 1 B-tree</a> to index dataset
 | 
						|
  chunks.</p>
 | 
						|
 | 
						|
<p>For an HDF5 file with the latest format enabled, the library uses
 | 
						|
  one of the following five indexing types depending on a chunked
 | 
						|
  dataset’s dimension specification and the way it is extended.
 | 
						|
</p>
 | 
						|
 | 
						|
<a name="SingleChunk">
 | 
						|
  <h3>VII.A. The Single Chunk Index</h3></a>
 | 
						|
 | 
						|
<p>The <i>Single Chunk</i> index can be used when the dataset fulfills
 | 
						|
  the following condition:</p>
 | 
						|
 | 
						|
<ul>
 | 
						|
  <li>the current, maximum, and chunk dimension sizes are all the same</li>
 | 
						|
</ul>
 | 
						|
 | 
						|
<p>The dataset has only one chunk, and the address of the single
 | 
						|
  chunk is stored in the version 4 <i>Data Layout</i> message.
 | 
						|
  See the <a href="#ChunkedStorage">Chunked Storage Property
 | 
						|
    Description</i></a> layout and field description tables.</p>
 | 
						|
 | 
						|
<a name="Implicit">
 | 
						|
  <h3>VII.B. The Implicit Index</h3></a>
 | 
						|
 | 
						|
<p>The <i>Implicit</i> index can be used when the dataset fulfills
 | 
						|
  the following conditions:</p>
 | 
						|
 | 
						|
<ul>
 | 
						|
  <li>fixed maximum dimension sizes</li>
 | 
						|
  <li>no filter applied to the dataset</li>
 | 
						|
  <li>the timing for the space allocation of the dataset chunks is
 | 
						|
    <code>H5P_ALLOC_TIME_EARLY</code></li>
 | 
						|
</ul>
 | 
						|
 | 
						|
<p>Since the dataset’s dimension sizes are known and storage space
 | 
						|
  is to be allocated early, an array of dataset chunks are allocated
 | 
						|
  based on the maximum dimension sizes when the dataset is created.
 | 
						|
  The base address of the array is stored in the version 4
 | 
						|
  <i>Data Layout</i> message. See the
 | 
						|
  <a href="#ChunkedStorage">Chunked Storage Property
 | 
						|
    Description</i></a> layout and field description tables.
 | 
						|
</p>
 | 
						|
 | 
						|
<p>When accessing a dataset chunk with a specified offset, the
 | 
						|
  address of the chunk in the array is computed as below:</p>
 | 
						|
 | 
						|
<dir><p><code>base address + (size of a chunk in bytes * chunk index
 | 
						|
      associated with the offset)</code></p></dir>
 | 
						|
 | 
						|
<p>A chunk index starts at 0 and increases according to the
 | 
						|
  fastest changing dimension, then the next fastest, and so on.
 | 
						|
  <a name="ChunkIndex"></a>
 | 
						|
  The chunk index for a dataset chunk offset is computed as below:
 | 
						|
  <ol>
 | 
						|
    <li>Calculate the scaled offset for each dimension in
 | 
						|
      <code>scaled_offset</code>:
 | 
						|
      <br />
 | 
						|
	  <pre>
 | 
						|
        scaled_offset = chunk_offset/chunk_dims
 | 
						|
    </pre></li>
 | 
						|
    <li>Calculate the # of chunks for each dimension in
 | 
						|
      <code>nchunks</code>:
 | 
						|
      <br />
 | 
						|
	  <pre>
 | 
						|
        nchunks = (curr_dims + chunk_dims - 1)/chunk_dims
 | 
						|
    </pre></li>
 | 
						|
 | 
						|
    <li>Calculate the down chunks for each dimension in
 | 
						|
      <code>down_chunks</code>:
 | 
						|
      <br />
 | 
						|
      <pre>
 | 
						|
        /* n is the # of dimensions */
 | 
						|
        for(i = (int)(n-1), acc = 1; i >= 0; i--) {
 | 
						|
        down_chunks[i] = acc;
 | 
						|
        acc *= nchunks[i];
 | 
						|
        }
 | 
						|
      </pre>
 | 
						|
    </li>
 | 
						|
 | 
						|
    <li>Calculate the chunk index in <code>chunk_index</code>:
 | 
						|
      <br />
 | 
						|
      <pre>
 | 
						|
        /* n is the # of dimensions */
 | 
						|
        for(u = 0, chunk_index = 0; u < n; u++)
 | 
						|
                                        chunk_index += down_chunks[u] * scaled_offset[u];
 | 
						|
                                        </pre>
 | 
						|
    </li>
 | 
						|
  </ol>
 | 
						|
<p>
 | 
						|
  For example, for a 2-dimensional dataset with
 | 
						|
  <code>curr_dims[4,5]</code> and <code>chunk_dims[3,2]</code>,
 | 
						|
  there will be a total of 6 chunks, with 3 chunks in the fastest
 | 
						|
  changing dimension and 2 chunks in the slowest changing dimension.
 | 
						|
  See the figure below.
 | 
						|
  The chunk index for the chunk offset <code>[3,4]</code>
 | 
						|
  is computed as below:
 | 
						|
  <ol>
 | 
						|
    <code>
 | 
						|
      <li>scaled_offset[0] = 1, scaled_offset[1] = 2</li>
 | 
						|
      <li>nchunks[0] = 2, nchunks[1] = 3</li>
 | 
						|
      <li>down_chunks[0] = 3, down_chunks[1] = 1</li>
 | 
						|
      <li>chunk_index = 5</li>
 | 
						|
    </code>
 | 
						|
  </ol>
 | 
						|
 | 
						|
 | 
						|
  <table align="center" width="400" border="0">
 | 
						|
    <tr valign="center" align="center">
 | 
						|
      <td>
 | 
						|
        <hr size="2"/>
 | 
						|
        <img height="250" src="FileFormatSpecChunkDiagram.jpg"
 | 
						|
             alt="Chunk Diagram"></td>
 | 
						|
    </tr>
 | 
						|
    <tr valign="top" align="center">
 | 
						|
      <td>
 | 
						|
        <hr size="1" />
 | 
						|
        <b>Figure 3. Implicit index chunk diagram </b>
 | 
						|
        <hr size="2"/></td>
 | 
						|
    </tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
  <a name="FixedArray">
 | 
						|
    <h3>VII.C. The Fixed Array Index</h3></a>
 | 
						|
 | 
						|
<p>The <i>Fixed Array</i> index can be used when the dataset fulfills
 | 
						|
  the following condition:</p>
 | 
						|
<ul>
 | 
						|
  <li>fixed maximum dimension sizes</li>
 | 
						|
</ul>
 | 
						|
 | 
						|
<p>Since the maximum number of chunks is known, an array of
 | 
						|
  in-file-on-disk addresses based on the maximum number of chunks is
 | 
						|
  allocated when data is written to the dataset. To access a dataset
 | 
						|
  chunk with a specified offset, the
 | 
						|
  <a href="#ChunkIndex">chunk index</i></a> associated with the offset
 | 
						|
is calculated. The index is mapped into the array to locate the
 | 
						|
disk address for the chunk.</p>
 | 
						|
 | 
						|
<p>The Fixed Array (FA) index structure provides space and speed
 | 
						|
  improvements in locating chunks over index structures that handle
 | 
						|
  more dynamic data accesses like a
 | 
						|
  <a href="#AppendV2Btrees">Version 2 B-tree</a> index.
 | 
						|
  The entry into the Fixed Array is the Fixed Array header which
 | 
						|
  contains metadata about the entries stored in the array. The
 | 
						|
  header contains a pointer to a data block which stores the array
 | 
						|
  of entries that describe the dataset chunks. For greater efficiency,
 | 
						|
  the array will be divided into multiple pages if the number of
 | 
						|
  entries exceeds a threshold value. The space for the data block
 | 
						|
  and possibly data block pages are allocated as a single contiguous
 | 
						|
  block of space.</p>
 | 
						|
 | 
						|
<p>The content of the data block depends on whether paging is
 | 
						|
  activated or not. When paging is not used, elements that describe
 | 
						|
  the chunks are stored in the data block. If paging is turned on,
 | 
						|
  the data block contains a bitmap indicating which pages are
 | 
						|
  initialized. Then subsequent data block pages will contain the
 | 
						|
  entries that describe the chunks.</p>
 | 
						|
 | 
						|
<p>An entry describes either a filtered or non-filtered dataset
 | 
						|
  chunk.  The formats for both element types are described below.
 | 
						|
</p>
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Fixed Array Header
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Signature</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version</td>
 | 
						|
      <td>Client ID</td>
 | 
						|
      <td>Entry Size</td>
 | 
						|
      <td>Page Bits</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Max Num
 | 
						|
        Entries<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Data Block
 | 
						|
        Address<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Checksum</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘L’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
          of Lengths</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
    <tr>
 | 
						|
      <td> </td>
 | 
						|
      <td>
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Fixed Array Header
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="40%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Signature</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ASCII character string “<code>FAHD</code>”
 | 
						|
          is used to indicate the beginning of a Fixed Array header.
 | 
						|
          This gives file consistency checking utilities a better
 | 
						|
          chance of reconstructing a damaged file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This document describes version 0.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Client ID</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ID for identifying the client of the
 | 
						|
          Fixed Array:
 | 
						|
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">ID</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td>Non-filtered dataset chunks
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>1</code></td>
 | 
						|
              <td>Filtered dataset chunks
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>2+</code></td>
 | 
						|
              <td>Reserved
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
          </table>
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Entry Size</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>The size in bytes of an entry in the Fixed Array.
 | 
						|
        </p>
 | 
						|
	  </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Page Bits</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>The number of bits needed to store the maximum
 | 
						|
          number of entries in a
 | 
						|
          <a href="#FADataBlockPage">data block page.</a></p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Max Num Entries</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>The maximum number of entries in the Fixed
 | 
						|
          Array.</p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Data Block Address</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>The address of the data block in the Fixed Array.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Checksum</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The checksum for the header.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Fixed Array Data Block
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Signature</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version</td>
 | 
						|
      <td>Client ID</td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted
 | 
						|
          only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Header Address<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Page Bitmap <em>(variable size and
 | 
						|
          optional)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Elements <em>(variable size and
 | 
						|
          optional)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Checksum</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Fixed Array Data Block
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="40%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Signature</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ASCII character string “<code>FADB</code>”
 | 
						|
          is used to indicate the beginning of a Fixed Array data
 | 
						|
          block. This gives file consistency checking utilities a
 | 
						|
          better chance of reconstructing a damaged file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This document describes version 0.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Client ID</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ID for identifying the client of the
 | 
						|
          Fixed Array:
 | 
						|
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">ID</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td>Non-filtered dataset chunks
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>1</code></td>
 | 
						|
              <td>Filtered dataset chunks
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>2+</code></td>
 | 
						|
              <td>Reserved.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
          </table>
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Header Address</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>The address of the Fixed Array header. Principally used
 | 
						|
          for file integrity checking.
 | 
						|
        </p>
 | 
						|
	  </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Page Bitmap</p></td>
 | 
						|
	  <td><p>A bitmap indicating which data block pages are initialized.</p>
 | 
						|
	    <p>Exists only if the data block is paged.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Elements</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>Contains the elements stored in the data block
 | 
						|
          and exists only if the data block is not paged.
 | 
						|
	      There are two element types:
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">ID</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td><a href="#FaNonFilterChunk">Non-filtered
 | 
						|
                  dataset chunks</i></a>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
<tr>
 | 
						|
  <td align="center"><code>1</code></td>
 | 
						|
  <td><a href="#FaFilterChunk">Filtered dataset
 | 
						|
      chunks</i></a>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
</table>
 | 
						|
</p>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td><p>Checksum</p></td>
 | 
						|
  <td>
 | 
						|
    <p>The checksum for the Fixed Array data block.</p>
 | 
						|
  </td>
 | 
						|
</tr>
 | 
						|
 | 
						|
</table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption><a name="FADataBlockPage">
 | 
						|
        Layout: Fixed Array Data Block Page</a>
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Elements <em>(variable
 | 
						|
          size)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Checksum</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Fixed Array Data Block Page
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="40%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Elements</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>Contains the elements stored in the data block page.
 | 
						|
	      There are two element types:
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">ID</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td><a href="#FaNonFilterChunk">Non-filtered dataset chunks</i></a>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
<tr>
 | 
						|
  <td align="center"><code>1</code></td>
 | 
						|
  <td><a href="#FaFilterChunk">Filtered dataset chunks</i></a>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
</table>
 | 
						|
</p>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td><p>Checksum</p></td>
 | 
						|
  <td>
 | 
						|
    <p>The checksum for a Fixed Array data block page.</p>
 | 
						|
  </td>
 | 
						|
</tr>
 | 
						|
 | 
						|
</table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<a name="FaNonFilterChunk"></a>
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Data Block Element for Non-filtered Dataset Chunk
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Data Block Element for Non-filtered Dataset Chunk
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Address</p></td>
 | 
						|
	  <td><p>The address of the dataset chunk in the file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
<!--    </p> -->
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<a name="FaFilterChunk"></a>
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Data Block Element for Filtered Dataset Chunk
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Chunk Size <em>(variable size; at most
 | 
						|
          8 bytes)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Filter Mask</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Data Block Element for Filtered Dataset Chunk
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Address</p></td>
 | 
						|
	  <td><p>The address of the dataset chunk in the file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Chunk Size</p></td>
 | 
						|
	  <td><p>The size of the dataset chunk in bytes.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Filter Mask</p></td>
 | 
						|
	  <td><p>Indicates the filter to skip for the dataset chunk. Each
 | 
						|
          filter has an index number in the pipeline; if that filter is
 | 
						|
          skipped, the bit corresponding to its index is set.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<a name="ExtensibleArray">
 | 
						|
  <h3>VII.D. The Extensible Array Index</h3></a>
 | 
						|
 | 
						|
<p>The <i>Extensible Array</i> index can be used when the dataset
 | 
						|
  fulfills the following condition:</p>
 | 
						|
 | 
						|
<ul>
 | 
						|
  <li>only one dimension of unlimited extent</li>
 | 
						|
</ul>
 | 
						|
 | 
						|
<p>The Extensible Array (EA) is a data structure that is used as a
 | 
						|
  chunk index in datasets where the dataspace has a single
 | 
						|
  unlimited dimension. In other words, one dimension is set to
 | 
						|
  <code>H5S_UNLIMITED</code>, and the other dimensions are any number
 | 
						|
  of fixed-size dimensions. The idea behind the extensible array is
 | 
						|
  that a particular data object can be located via a lightweight
 | 
						|
  indexing structure of fixed depth for a given address space. This
 | 
						|
  indexing structure requires only a few (2-3) file operations per
 | 
						|
  element lookup and gives good cache performance. Unlike the B-tree
 | 
						|
  structure, the extensible array is optimized for appends. Where a
 | 
						|
  B-tree would always add at the rightmost node under these
 | 
						|
  circumstances, either creating a deep tree (version 1) or requiring
 | 
						|
  expensive rebalances to correct (version 2), the extensible array
 | 
						|
  has already mapped out a pre-balanced internal structure. This
 | 
						|
  optimized internal structure is instantiated as needed when chunk
 | 
						|
  records are inserted into the structure.</p>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
<!--
 | 
						|
 | 
						|
     <p>A description of the rationale that leads to the present
 | 
						|
       implementation of the extensible array can be found at
 | 
						|
       <a href="https://svn.hdfgroup.org/hdf5doc/trunk/projects/1_10_alpha/ReviseChunks/skip_lists">
 | 
						|
         https://svn.hdfgroup.org/hdf5doc/trunk/projects/1_10_alpha/ReviseChunks/skip_lists</a>.
 | 
						|
     </p>
 | 
						|
 | 
						|
<p>The current implementation differs from the data structure
 | 
						|
  described in that reference in some ways, but the basic idea is the
 | 
						|
  same.</p>
 | 
						|
 | 
						|
-->
 | 
						|
 | 
						|
 | 
						|
 | 
						|
<p>An Extensible Array consists of a header, an index block,
 | 
						|
  secondary blocks, data blocks, and (optional) data block pages. The
 | 
						|
  general scheme is that the index block is used to reference a
 | 
						|
  secondary block, which is, in turn, used to reference the data block
 | 
						|
  page where the chunk information is stored. The data blocks will
 | 
						|
  be paged for efficiency when their size passes a threshold value.
 | 
						|
  These pages are laid out contiguously on the disk after the data
 | 
						|
  block, are initialized as needed, and are tracked via bitmaps
 | 
						|
  stored in the secondary block. The number of secondary and data
 | 
						|
  blocks/pages in a chunk index varies as they are allocated as
 | 
						|
  needed and the first few are (conceptually) stored in parent
 | 
						|
  elements as an optimization.</p>
 | 
						|
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Extensible Array Header
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Signature</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version</td>
 | 
						|
      <td>Client ID</td>
 | 
						|
      <td>Element Size</td>
 | 
						|
      <td>Max Nelmts Bits</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td>Index Blk Elmts</td>
 | 
						|
      <td>Data Blk Min Elmts</td>
 | 
						|
      <td>Secondary Blk Min Data Ptrs</td>
 | 
						|
      <td>Max Data Blk Page Nelmts Bits</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Num Secondary Blks<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Secondary Blk Size<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Num Data Blks<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Data Blk Size<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Max Index Set<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Num Elements<sup>L</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Index Block Address<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Checksum</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘L’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfLengthsV0">Size
 | 
						|
          of Lengths</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
    <tr>
 | 
						|
      <td> </td>
 | 
						|
      <td>
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Extensible Array Header
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="40%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Signature</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ASCII character string “<code>EAHD</code>”
 | 
						|
          is used to indicate the beginning of an Extensible Array
 | 
						|
          header. This gives file consistency checking utilities a
 | 
						|
          better chance of reconstructing a damaged file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This document describes version 0.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Client ID</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ID for identifying the client of the
 | 
						|
          Fixed Array:
 | 
						|
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">ID</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td>Non-filtered dataset chunks
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>1</code></td>
 | 
						|
              <td>Filtered dataset chunks
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>2+</code></td>
 | 
						|
              <td>Reserved.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
          </table>
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Element Size</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>The size in bytes of an element in the Extensible Array.
 | 
						|
        </p>
 | 
						|
	  </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Max Nelmts Bits</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>The number of bits needed to store the
 | 
						|
          maximum number of elements in the Extensible Array.</p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Index Blk Elmts</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>The number of elements to store in the index block.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Data Blk Min Elmts</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>The minimum number of elements per data block.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Secondary Blk Min Data Ptrs</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>The minimum number of data block pointers for a
 | 
						|
	      secondary block.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Max Dblk Page Nelmts Bits</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>The number of bits needed to store the maximum number
 | 
						|
	      of elements in a data block page.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Num Secondary Blks</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>The number of secondary blocks created.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Secondary Blk Size</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>The size of the secondary blocks created.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Num Data Blks</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>The number of data blocks created.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Data Blk Size</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>The size of the data blocks created.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Max Index Set</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>The maximum index set.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Num Elmts</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>The number of elements realized.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Index Block Address</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>The address of the index block.
 | 
						|
	    </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Checksum</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The checksum for the header.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Extensible Array Index Block
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Signature</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version</td>
 | 
						|
      <td>Client ID</td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted
 | 
						|
          only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Header Address<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Elements <em>(variable size and
 | 
						|
          optional)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Data Block Addresses <em>(variable
 | 
						|
          size and optional)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Secondary Block Addresses <em>(variable
 | 
						|
          size and optional)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Checksum</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Extensible Array Index Block
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="40%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Signature</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ASCII character string “<code>EAIB</code>”
 | 
						|
          is used to indicate the beginning of an Extensible Array
 | 
						|
          Index Block. This gives file consistency checking utilities
 | 
						|
          a better chance of reconstructing a damaged file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This document describes version 0.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Client ID</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The client ID for identifying the user of the
 | 
						|
          Extensible Array:
 | 
						|
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">ID</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td>Non-filtered dataset chunks
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>1</code></td>
 | 
						|
              <td>Filtered dataset chunks
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>2+</code></td>
 | 
						|
              <td>Reserved.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
          </table>
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Header Address</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>The address of the Extensible Array header. Principally
 | 
						|
          used for file integrity checking.</p>
 | 
						|
	  </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Elements</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>Contains the elements that are stored directly in
 | 
						|
          the index block. An optimization to avoid unnecessary
 | 
						|
          secondary blocks.
 | 
						|
          <br />
 | 
						|
          <br />
 | 
						|
          There are two element types:
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">ID</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td><a href="#EaNonFilterChunk">Non-filtered dataset chunks</i></a>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
<tr>
 | 
						|
  <td align="center"><code>1</code></td>
 | 
						|
  <td><a href="#EaFilterChunk">Filtered dataset chunks</i></a>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
</table>
 | 
						|
</p>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td><p>Data Block Addresses</p></td>
 | 
						|
  <td>
 | 
						|
    <p>Contains the addresses of the data blocks
 | 
						|
      that are stored directly in the Index Block. An
 | 
						|
      optimization to avoid unnecessary secondary blocks.</p>
 | 
						|
  </td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td><p>Secondary Block Addresses</p></td>
 | 
						|
  <td>
 | 
						|
    <p>Contains the addresses of the secondary
 | 
						|
      blocks.</p>
 | 
						|
  </td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td><p>Checksum</p></td>
 | 
						|
  <td>
 | 
						|
    <p>The checksum for the Extensible Array Index Block.</p>
 | 
						|
  </td>
 | 
						|
</tr>
 | 
						|
 | 
						|
</table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Extensible Array Secondary Block
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Signature</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version</td>
 | 
						|
      <td>Client ID</td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted
 | 
						|
          only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Header Address<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Block Offset <em>(variable
 | 
						|
          size)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Page Bitmap <em>(variable size and
 | 
						|
          optional)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Data Block Addresses <em>(variable
 | 
						|
          size and optional)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Checksum</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Extensible Array Secondary Block
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="40%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Signature</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ASCII character string “<code>EASB</code>”
 | 
						|
          is used to indicate the beginning of an Extensible Array
 | 
						|
          Secondary Block. This gives file consistency checking utilities
 | 
						|
          a better chance of reconstructing a damaged file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This document describes version 0.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Client ID</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ID for identifying the client of the
 | 
						|
          Extensible Array:
 | 
						|
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">ID</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td>Non-filtered dataset chunks
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>1</code></td>
 | 
						|
              <td>Filtered dataset chunks
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>2+</code></td>
 | 
						|
              <td>Reserved.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
          </table>
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Header Address</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>The address of the Extensible Array header. Principally
 | 
						|
          used for file integrity checking.</p>
 | 
						|
	  </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Block Offset</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>Stores the offset of the block in the array.
 | 
						|
        </p>
 | 
						|
	  </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Page Bitmap</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>A bitmap indicating which
 | 
						|
          data block pages are initialized.
 | 
						|
	    <p>
 | 
						|
	      Exists only if the data block is paged.
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Data Block Addresses</p></td>
 | 
						|
      <td>
 | 
						|
        <p>Contains the addresses of the data blocks
 | 
						|
          referenced by this secondary block.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Checksum</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The checksum for the Extensible Array
 | 
						|
          Secondary Block.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Extensible Array Data Block
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Signature</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td>Version</td>
 | 
						|
      <td>Client ID</td>
 | 
						|
      <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted
 | 
						|
          only to align table nicely</em></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Header Address<sup>O</sup><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Block Offset <em>(variable
 | 
						|
          size)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Elements <em>(variable size and
 | 
						|
          optional)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Checksum</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Extensible Array Data Block
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="40%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Signature</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ASCII character string “<code>EADB</code>”
 | 
						|
          is used to indicate the beginning of an Extensible Array
 | 
						|
          data block. This gives file consistency checking utilities
 | 
						|
          a better chance of reconstructing a damaged file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Version</p></td>
 | 
						|
      <td>
 | 
						|
        <p>This document describes version 0.</p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
      <td><p>Client ID</p></td>
 | 
						|
      <td>
 | 
						|
        <p>The ID for identifying the client of the
 | 
						|
          Extensible Array:
 | 
						|
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">ID</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td>Non-filtered dataset chunks
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>1</code></td>
 | 
						|
              <td>Filtered dataset chunks
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>2+</code></td>
 | 
						|
              <td>Reserved.
 | 
						|
              </td>
 | 
						|
            </tr>
 | 
						|
          </table>
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Header Address</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>The address of the Extensible Array header. Principally
 | 
						|
          used for file integrity checking.
 | 
						|
        </p>
 | 
						|
	  </td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Block Offset</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>The offset of the block in the array.
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Elements</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>Contains the elements stored in the data block and
 | 
						|
		  exists only if the data block is not paged.
 | 
						|
          <br />
 | 
						|
          <br />
 | 
						|
	      There are two element types:
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">ID</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td><a href="#EaNonFilterChunk">Non-filtered dataset chunks</i></a>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
<tr>
 | 
						|
  <td align="center"><code>1</code></td>
 | 
						|
  <td><a href="#EaFilterChunk">Filtered dataset chunks</i></a>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
</table>
 | 
						|
</p>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td><p>Checksum</p></td>
 | 
						|
  <td>
 | 
						|
    <p>The checksum for the Extensible Array data block.</p>
 | 
						|
  </td>
 | 
						|
</tr>
 | 
						|
 | 
						|
</table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Extensible Array Data Block Page
 | 
						|
    </caption>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
      <th>byte</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4"><br />Elements <em>(variable
 | 
						|
          size)</em><br /><br /></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td colspan="4">Checksum</td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Extensible Array Data Block Page
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="40%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
    </tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Elements</p></td>
 | 
						|
	  <td>
 | 
						|
	    <p>Contains the elements stored in the data block
 | 
						|
          page.</p>
 | 
						|
        <p>
 | 
						|
	      There are two element types:
 | 
						|
          <table class="list">
 | 
						|
            <tr>
 | 
						|
              <th width="20%" align="center">ID</th>
 | 
						|
              <th width="80%" align="left">Description</th>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td align="center"><code>0</code></td>
 | 
						|
              <td><a href="#EaNonFilterChunk">Non-filtered dataset chunks</i></a>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
<tr>
 | 
						|
  <td align="center"><code>1</code></td>
 | 
						|
  <td><a href="#EaFilterChunk">Filtered dataset chunks</i></a>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
</table>
 | 
						|
</p>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td><p>Checksum</p></td>
 | 
						|
  <td>
 | 
						|
    <p>The checksum for an Extensible Array data block
 | 
						|
      page.</p>
 | 
						|
  </td>
 | 
						|
</tr>
 | 
						|
 | 
						|
</table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<a name="EaNonFilterChunk"></a>
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Data Block Element for Non-filtered Dataset Chunk
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr><td>
 | 
						|
        <tr>
 | 
						|
          <td width="60%"> </td>
 | 
						|
          <td width="40%">
 | 
						|
            (Items marked with an ‘O’ in the above table are
 | 
						|
            of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
              of Offsets</a> field in the superblock.)
 | 
						|
        </td></tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Data Block Element for Non-filtered Dataset Chunk
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Address</p></td>
 | 
						|
	  <td><p>The address of the dataset chunk in the file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
</p>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<a name="EaFilterChunk"></a>
 | 
						|
<div align="center">
 | 
						|
  <table class="format">
 | 
						|
    <caption>
 | 
						|
      Layout: Data Block Element for Filtered Dataset Chunk
 | 
						|
    </caption>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	  <th width="25%">byte</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Address<sup>O</sup><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4"><br />Chunk Size<em> (variable size; at
 | 
						|
          most 8 bytes)</em><br /><br /></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td colspan="4">Filter Mask</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
 | 
						|
  <table class="note">
 | 
						|
    <tr>
 | 
						|
      <td width="60%"> </td>
 | 
						|
      <td width="40%">
 | 
						|
        (Items marked with an ‘O’ in the above table are
 | 
						|
        of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
          of Offsets</a> field in the superblock.)
 | 
						|
    </td></tr>
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Data Block Element for Filtered Dataset Chunk
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Address</p></td>
 | 
						|
	  <td><p>The address of the dataset chunk in the file.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Chunk Size</p></td>
 | 
						|
	  <td><p>The size of the dataset chunk in bytes.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Filter Mask</p></td>
 | 
						|
	  <td><p>Indicates the filter to skip for the dataset chunk.
 | 
						|
          Each filter has an index number in the pipeline; if that
 | 
						|
          filter is skipped, the bit corresponding to its index is set.
 | 
						|
        </p>
 | 
						|
      </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<a name="AppendV2Btrees">
 | 
						|
  <h3>VII.E. The Version 2 B-trees Index</h3></a>
 | 
						|
 | 
						|
<p>The <i>Version 2 B-trees</i> index can be used when the dataset
 | 
						|
  fulfills the following condition:</p>
 | 
						|
 | 
						|
<ul>
 | 
						|
  <li>more than one dimension of unlimited extent</li>
 | 
						|
</ul>
 | 
						|
 | 
						|
<p>Version 2 B-trees can be used to index various objects in the
 | 
						|
  library. See <a href="#V2Btrees">“Version 2 B-trees”</a>
 | 
						|
  for more information. The B-tree types <a href="#V2BtType10">10</a>
 | 
						|
  and <a href="#V2BtreesType11">11</a> record layouts are for
 | 
						|
  indexing dataset chunks.</p>
 | 
						|
 | 
						|
<h2><a name="AppendixD"> VIII. Appendix D:
 | 
						|
    Encoding for dataspace and reference</a></h2>
 | 
						|
 | 
						|
<a name="DataspaceEncode">
 | 
						|
  <h3>VIII.A. Dataspace Encoding </h3></a>
 | 
						|
<i>H5Sencode</i> is a public routine that encodes a dataspace description into a buffer while
 | 
						|
<i>H5Sdecode</i> is the corresponding routine that decodes the description encoded in the buffer.
 | 
						|
<p>
 | 
						|
  See the reference manual description for these two public routines.
 | 
						|
 | 
						|
  <br />
 | 
						|
  <br />
 | 
						|
  <br />
 | 
						|
  <div align="center">
 | 
						|
    <table class="format">
 | 
						|
      <caption>
 | 
						|
        Layout: Dataspace Description for H5Sencode/H5Sdecode
 | 
						|
      </caption>
 | 
						|
 | 
						|
      <tr>
 | 
						|
        <th>byte</th>
 | 
						|
        <th>byte</th>
 | 
						|
        <th>byte</th>
 | 
						|
        <th>byte</th>
 | 
						|
      </tr>
 | 
						|
 | 
						|
      <tr>
 | 
						|
        <td>Dataspace ID</td>
 | 
						|
        <td>Encode Version</td>
 | 
						|
        <td>Size of Size</td>
 | 
						|
        <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted
 | 
						|
            only to align table nicely</em></td>
 | 
						|
      </tr>
 | 
						|
 | 
						|
      <tr>
 | 
						|
        <td colspan="4"><br />Size of Extent
 | 
						|
          <br /><br /></td>
 | 
						|
      </tr>
 | 
						|
 | 
						|
      <tr>
 | 
						|
        <td colspan="4"><br /><br />Dataspace Message
 | 
						|
          <em>(variable size)</em>
 | 
						|
          <br /><br /></td>
 | 
						|
      </tr>
 | 
						|
 | 
						|
      <tr>
 | 
						|
        <td colspan="4"><br /><br />Dataspace Selection
 | 
						|
          <em>(variable size)</em>
 | 
						|
          <br /><br /></td>
 | 
						|
      </tr>
 | 
						|
 | 
						|
    </table>
 | 
						|
 | 
						|
  </div>
 | 
						|
 | 
						|
  <br />
 | 
						|
  <br />
 | 
						|
  <div align="center">
 | 
						|
    <table class="desc">
 | 
						|
      <caption>
 | 
						|
        Fields: Dataspace Description for H5Sencode/H5Sdecode
 | 
						|
      </caption>
 | 
						|
	  <tr>
 | 
						|
        <th width="40%">Field Name</th>
 | 
						|
        <th>Description</th>
 | 
						|
      </tr>
 | 
						|
 | 
						|
      <tr>
 | 
						|
        <td><p>Dataspace ID</p></td>
 | 
						|
        <td>
 | 
						|
          <p>The datspace message ID which is 1.</p>
 | 
						|
        </td>
 | 
						|
      </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
        <td><p>Encode Version</p></td>
 | 
						|
        <td>
 | 
						|
          <p>H5S_ENCODE_VERSION which is 0.
 | 
						|
          </p>
 | 
						|
        </td>
 | 
						|
      </tr>
 | 
						|
 | 
						|
      <tr>
 | 
						|
        <td><p>Size of Size</p></td>
 | 
						|
	    <td>
 | 
						|
	      <p>The number of bytes used to store the size of an object.
 | 
						|
          </p>
 | 
						|
	    </td>
 | 
						|
      </tr>
 | 
						|
 | 
						|
      <tr>
 | 
						|
        <td><p>Size of Extent</p></td>
 | 
						|
	    <td>
 | 
						|
	      <p>Size of the dataspace message.
 | 
						|
          </p>
 | 
						|
	    </td>
 | 
						|
      </tr>
 | 
						|
 | 
						|
      <tr>
 | 
						|
        <td><p>Dataspace Message</p></td>
 | 
						|
	    <td>
 | 
						|
	      <p>The dataspace message information.  See
 | 
						|
            <a href="#DataspaceMessage">Dataspace Message.</a></p>
 | 
						|
</p>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td><p>Dataspace Selection</p></td>
 | 
						|
  <td>
 | 
						|
    <p>The dataspace selection information.  See
 | 
						|
      <a href="#DataspaceSEL">Dataspace Selection.</a></p>
 | 
						|
  </td>
 | 
						|
</tr>
 | 
						|
 | 
						|
</table>
 | 
						|
</div>
 | 
						|
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<a name="DataspaceSEL"></a>
 | 
						|
  <div align="center">
 | 
						|
    <table class="format">
 | 
						|
	  <caption>
 | 
						|
	    Layout: Dataspace Selection
 | 
						|
	  </caption>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4">Selection Type</td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
        <td colspan="4"><br />Selection Info (<em>variable
 | 
						|
            size</em>)<br /><br /></td>
 | 
						|
      </tr>
 | 
						|
 | 
						|
    </table>
 | 
						|
  </div>
 | 
						|
 | 
						|
  <br />
 | 
						|
  <br />
 | 
						|
  <div align="center">
 | 
						|
    <table class="desc">
 | 
						|
	  <caption>
 | 
						|
	    Fields: Dataspace Selection
 | 
						|
	  </caption>
 | 
						|
	  <tr>
 | 
						|
        <th width="30%">Field Name</th>
 | 
						|
        <th>Description</th>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>Selection Type</p></td>
 | 
						|
	    <td>
 | 
						|
	      <p>There are 4 types of selection:
 | 
						|
	        <table class="list">
 | 
						|
		      <tr>
 | 
						|
		        <th width="20%" align="center">Value</th>
 | 
						|
		        <th width="80%" align="left">Description</th>
 | 
						|
		      </tr>
 | 
						|
 | 
						|
		      <tr>
 | 
						|
		        <td align="center"><code>0</code></td>
 | 
						|
		        <td>H5S_SEL_NONE: Nothing selected
 | 
						|
                </td>
 | 
						|
		      </tr>
 | 
						|
 | 
						|
		      <tr>
 | 
						|
		        <td align="center"><code>1</code></td>
 | 
						|
		        <td>H5S_SEL_POINTS: Sequence of points selected
 | 
						|
                </td>
 | 
						|
		      </tr>
 | 
						|
 | 
						|
		      <tr>
 | 
						|
		        <td align="center"><code>2</code></td>
 | 
						|
		        <td>H5S_SEL_HYPER: Hyperslab selected
 | 
						|
                </td>
 | 
						|
		      </tr>
 | 
						|
 | 
						|
		      <tr>
 | 
						|
		        <td align="center"><code>3</code></td>
 | 
						|
		        <td>H5S_SEL_ALL: Entire extent selected
 | 
						|
                </td>
 | 
						|
		      </tr>
 | 
						|
	        </table>
 | 
						|
        </td>
 | 
						|
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>Selection Info</p></td>
 | 
						|
	    <td>
 | 
						|
	      <p>There are 4 types of selection info:
 | 
						|
	        <table class="list">
 | 
						|
		      <tr>
 | 
						|
		        <th width="20%" align="center">Value</th>
 | 
						|
		        <th width="80%" align="left">Description</th>
 | 
						|
		      </tr>
 | 
						|
		      <tr>
 | 
						|
		        <td align="center"><code>0</code></td>
 | 
						|
		        <td>Selection info for <a href="#SelNONE">H5S_SEL_NONE</a>
 | 
						|
                </td>
 | 
						|
		      </tr>
 | 
						|
 | 
						|
		      <tr>
 | 
						|
		        <td align="center"><code>1</code></td>
 | 
						|
		        <td>Selection info for <a href="#SelPOINTS">H5S_SEL_POINTS</a>
 | 
						|
                </td>
 | 
						|
		      </tr>
 | 
						|
 | 
						|
		      <tr>
 | 
						|
		        <td align="center"><code>2</code></td>
 | 
						|
		        <td>Selection info for <a href="#SelHYPER">H5S_SEL_HYPER</a>
 | 
						|
                </td>
 | 
						|
		      </tr>
 | 
						|
 | 
						|
		      <tr>
 | 
						|
		        <td align="center"><code>3</code></td>
 | 
						|
		        <td>Selection for <a href="#SelALL">H5S_SEL_ALL</a>
 | 
						|
                </td>
 | 
						|
		      </tr>
 | 
						|
	        </table>
 | 
						|
        </td>
 | 
						|
 | 
						|
	  </tr>
 | 
						|
    </table>
 | 
						|
  </div>
 | 
						|
 | 
						|
 | 
						|
  <br />
 | 
						|
  <br />
 | 
						|
  <br />
 | 
						|
<a name="SelNONE"/></a>
 | 
						|
    <div align="center">
 | 
						|
      <table class="format">
 | 
						|
	    <caption>
 | 
						|
	      Layout: Selection Info for H5S_SEL_NONE
 | 
						|
	    </caption>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <th width="25%">byte</th>
 | 
						|
	      <th width="25%">byte</th>
 | 
						|
	      <th width="25%">byte</th>
 | 
						|
	      <th width="25%">byte</th>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4">Version</td>
 | 
						|
	    </tr>
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />Reserved <em>(zero, 8 bytes)</em><br /><br /></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
      </table>
 | 
						|
    </div>
 | 
						|
 | 
						|
    <br />
 | 
						|
    <br />
 | 
						|
    <div align="center">
 | 
						|
      <table class="desc">
 | 
						|
	    <caption>
 | 
						|
          Fields: Selection Info for H5S_SEL_NONE
 | 
						|
	    </caption>
 | 
						|
	    <tr>
 | 
						|
          <th width="30%">Field Name</th>
 | 
						|
          <th>Description</th>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Version</p></td>
 | 
						|
	      <td><p>The version number for the H5S_SEL_NONE Selection Info.
 | 
						|
              The value is 1.</p></td>
 | 
						|
	    </tr>
 | 
						|
      </table>
 | 
						|
    </div>
 | 
						|
 | 
						|
 | 
						|
    <br />
 | 
						|
    <br />
 | 
						|
    <br />
 | 
						|
    <a name="SelPOINTS"></a>
 | 
						|
      <div align="center">
 | 
						|
        <table class="format">
 | 
						|
	      <caption>
 | 
						|
	        Layout: Selection Info for H5S_SEL_POINTS
 | 
						|
	      </caption>
 | 
						|
 | 
						|
	      <tr>
 | 
						|
	        <th width="25%">byte</th>
 | 
						|
	        <th width="25%">byte</th>
 | 
						|
	        <th width="25%">byte</th>
 | 
						|
	        <th width="25%">byte</th>
 | 
						|
	      </tr>
 | 
						|
 | 
						|
	      <tr>
 | 
						|
	        <td colspan="4">Version</td>
 | 
						|
	      </tr>
 | 
						|
	      <tr>
 | 
						|
            <td colspan="4"><br /><br />Points Selection Info <em>(variable size)</em>
 | 
						|
              <br /><br /><br /></td>
 | 
						|
	      </tr>
 | 
						|
 | 
						|
        </table>
 | 
						|
      </div>
 | 
						|
 | 
						|
      <br />
 | 
						|
      <br />
 | 
						|
      <div align="center">
 | 
						|
        <table class="desc">
 | 
						|
	      <caption>
 | 
						|
	        Fields: Selection Info for H5S_SEL_POINTS
 | 
						|
	      </caption>
 | 
						|
	      <tr>
 | 
						|
            <th width="30%">Field Name</th>
 | 
						|
            <th>Description</th>
 | 
						|
	      </tr>
 | 
						|
 | 
						|
	      <tr>
 | 
						|
	        <td><p>Version</p></td>
 | 
						|
	        <td><p>The version number for the H5S_SEL_POINTS Selection Info.
 | 
						|
                The value is either 1 or 2.</p></td>
 | 
						|
	      </tr>
 | 
						|
 | 
						|
	      <tr>
 | 
						|
	        <td><p>Points Selection Info</p></td>
 | 
						|
	        <td><p>Depending on <em>version</em>:
 | 
						|
	            <table class="list">
 | 
						|
		          <tr>
 | 
						|
		            <th width="20%" align="center">Version</th>
 | 
						|
		            <th width="80%" align="left">Description</th>
 | 
						|
		          </tr>
 | 
						|
 | 
						|
		          <tr>
 | 
						|
		            <td align="center"><code>1</code></td>
 | 
						|
		            <td>See <a href="#SelPOINTSV1">Version 1 Points Selection Info</a>
 | 
						|
                    </td>
 | 
						|
		          </tr>
 | 
						|
 | 
						|
		          <tr>
 | 
						|
		            <td align="center"><code>2</code></td>
 | 
						|
		            <td>See <a href="#SelPOINTSV2">Version 2 Points Selection Info</a>
 | 
						|
                    </td>
 | 
						|
		          </tr>
 | 
						|
 | 
						|
	            </table>
 | 
						|
	        </td>
 | 
						|
	      </tr>
 | 
						|
 | 
						|
        </table>
 | 
						|
      </div>
 | 
						|
 | 
						|
      <br />
 | 
						|
      <br />
 | 
						|
      <br />
 | 
						|
      <a name="SelPOINTSV1"></a>
 | 
						|
        <div align="center">
 | 
						|
          <table class="format">
 | 
						|
	        <caption>
 | 
						|
	          Layout: Version 1 Points Selection Info
 | 
						|
	        </caption>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
	          <th width="25%">byte</th>
 | 
						|
	          <th width="25%">byte</th>
 | 
						|
	          <th width="25%">byte</th>
 | 
						|
	          <th width="25%">byte</th>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
              <td colspan="4">Reserved <em>(zero)</em></td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">Length</td>
 | 
						|
	        </tr>
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">Rank</td>
 | 
						|
	        </tr>
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">Num Points</td>
 | 
						|
	        </tr>
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">Point #1: coordinate #1</td>
 | 
						|
	        </tr>
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	        </tr>
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">Point #1: coordinate #u</td>
 | 
						|
	        </tr>
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	        </tr>
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">Point #n: coordinate #1</td>
 | 
						|
	        </tr>
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	        </tr>
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">Point #n: coordinate #u</td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
          </table>
 | 
						|
        </div>
 | 
						|
 | 
						|
        <br />
 | 
						|
        <br />
 | 
						|
        <div align="center">
 | 
						|
          <table class="desc">
 | 
						|
	        <caption>
 | 
						|
	          Fields: Version 1 Points Selection Info
 | 
						|
	        </caption>
 | 
						|
	        <tr>
 | 
						|
              <th width="30%">Field Name</th>
 | 
						|
              <th>Description</th>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
	          <td><p>Length</p></td>
 | 
						|
	          <td><p>The size in bytes from <em>Length</em> to the end of the
 | 
						|
                  selection info.</td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
	          <td><p>Rank</p></td>
 | 
						|
	          <td><p>The number of dimensions.</p></td>
 | 
						|
	        </tr>
 | 
						|
	        <tr>
 | 
						|
	          <td><p>Num Points</p></td>
 | 
						|
	          <td><p>The number of points in the selection.</p></td>
 | 
						|
	        </tr>
 | 
						|
	        <tr>
 | 
						|
	          <td><p>Point #n: coordinate #u</p></td>
 | 
						|
	          <td><p>The array of points in the selection.
 | 
						|
                <p>The points selected are #1 to #n where n is <em>Num Points</em>.
 | 
						|
                <p>The list of coordinates for each point are #1 to #u where u is
 | 
						|
                  <em>Rank</em>.</p></td>
 | 
						|
	        </tr>
 | 
						|
          </table>
 | 
						|
        </div>
 | 
						|
 | 
						|
 | 
						|
        <br />
 | 
						|
        <br />
 | 
						|
        <br />
 | 
						|
        <a name="SelPOINTSV2"></a>
 | 
						|
          <div align="center">
 | 
						|
            <table class="format">
 | 
						|
	          <caption>
 | 
						|
	            Layout: Version 2 Points Selection Info
 | 
						|
	          </caption>
 | 
						|
 | 
						|
	          <tr>
 | 
						|
	            <th width="25%">byte</th>
 | 
						|
	            <th width="25%">byte</th>
 | 
						|
	            <th width="25%">byte</th>
 | 
						|
	            <th width="25%">byte</th>
 | 
						|
	          </tr>
 | 
						|
 | 
						|
	          <tr>
 | 
						|
                <td colspan="1">Encode Size</td>
 | 
						|
                <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted only to align table nicely</em>
 | 
						|
                </td>
 | 
						|
	          </tr>
 | 
						|
 | 
						|
	          <tr>
 | 
						|
	            <td colspan="4">Rank</td>
 | 
						|
	          </tr>
 | 
						|
	          <tr>
 | 
						|
	            <td colspan="4">Num Points<p>(2, 4 or 8 bytes)<br /></td>
 | 
						|
	          </tr>
 | 
						|
              <tr>
 | 
						|
                <td colspan="4">Point #1: coordinate #1<p>(2, 4 or 8 bytes)<br /></td>
 | 
						|
              </tr>
 | 
						|
              <tr>
 | 
						|
                <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
              </tr>
 | 
						|
              <tr>
 | 
						|
                <td colspan="4">Point #1: coordinate #u<p>(2, 4 or 8 bytes)<br /></td>
 | 
						|
              </tr>
 | 
						|
              <tr>
 | 
						|
                <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
              </tr>
 | 
						|
              <tr>
 | 
						|
                <td colspan="4">Point #n: coordinate #1 <p>(2, 4 or 8 bytes)<br /></td>
 | 
						|
              </tr>
 | 
						|
              <tr>
 | 
						|
                <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
              </tr>
 | 
						|
              <tr>
 | 
						|
                <td colspan="4">Point #n: coordinate #u<p>(2, 4 or 8 bytes)<br /></td>
 | 
						|
              </tr>
 | 
						|
 | 
						|
            </table>
 | 
						|
          </div>
 | 
						|
 | 
						|
          <br />
 | 
						|
          <br />
 | 
						|
          <div align="center">
 | 
						|
            <table class="desc">
 | 
						|
	          <caption>
 | 
						|
	            Fields: Version 2 Points Selection Info
 | 
						|
	          </caption>
 | 
						|
	          <tr>
 | 
						|
                <th width="30%">Field Name</th>
 | 
						|
                <th>Description</th>
 | 
						|
	          </tr>
 | 
						|
 | 
						|
	          <tr>
 | 
						|
	            <td><p>Encode Size</td>
 | 
						|
	            <td><p>The size for encoding the points selection info which can be 2, 4 or 8 bytes.
 | 
						|
                </td>
 | 
						|
	          </tr>
 | 
						|
 | 
						|
	          <tr>
 | 
						|
	            <td><p>Rank</p></td>
 | 
						|
	            <td><p>The number of dimensions.</p></td>
 | 
						|
	          </tr>
 | 
						|
	          <tr>
 | 
						|
	            <td><p>Num Points</p></td>
 | 
						|
	            <td><p>The number of points in the selection.
 | 
						|
                  <p>The field <em>Encode Size</em> indicates the size of this field</p></td>
 | 
						|
	          </tr>
 | 
						|
	          <tr>
 | 
						|
	            <td><p>Point #n: coordinate #u</p></td>
 | 
						|
	            <td><p>The array of points in the selection.
 | 
						|
                  <p>The points selected are #1 to #n where n is <em>Num Points</em>.
 | 
						|
                  <p>The list of coordinates for each point are #1 to #u where u is
 | 
						|
                    <em>Rank</em>.
 | 
						|
                  <p>The field <em>Encode Size</em> indicates the size of this field</p></td>
 | 
						|
	          </tr>
 | 
						|
            </table>
 | 
						|
          </div>
 | 
						|
 | 
						|
 | 
						|
          <br />
 | 
						|
          <br />
 | 
						|
          <br />
 | 
						|
          <a name="SelHYPER"></a>
 | 
						|
            <div align="center">
 | 
						|
              <table class="format">
 | 
						|
	            <caption>
 | 
						|
	              Layout: Selection Info for H5S_SEL_HYPER
 | 
						|
	            </caption>
 | 
						|
 | 
						|
	            <tr>
 | 
						|
	              <th width="25%">byte</th>
 | 
						|
	              <th width="25%">byte</th>
 | 
						|
	              <th width="25%">byte</th>
 | 
						|
	              <th width="25%">byte</th>
 | 
						|
	            </tr>
 | 
						|
 | 
						|
	            <tr>
 | 
						|
	              <td colspan="4">Version</td>
 | 
						|
	            </tr>
 | 
						|
	            <tr>
 | 
						|
                  <td colspan="4"><br />Hyperslab Selection Info
 | 
						|
                    (<em>variable size</em>)<br /><br /></td>
 | 
						|
                </tr>
 | 
						|
 | 
						|
              </table>
 | 
						|
            </div>
 | 
						|
 | 
						|
            <br />
 | 
						|
            <br />
 | 
						|
            <div align="center">
 | 
						|
              <table class="desc">
 | 
						|
	            <caption>
 | 
						|
	              Fields: Selection Info for H5S_SEL_HYPER
 | 
						|
	            </caption>
 | 
						|
	            <tr>
 | 
						|
                  <th width="30%">Field Name</th>
 | 
						|
                  <th>Description</th>
 | 
						|
	            </tr>
 | 
						|
 | 
						|
	            <tr>
 | 
						|
	              <td><p>Version</p></td>
 | 
						|
	              <td><p>The version number for the H5S_SEL_HYPER selection info.
 | 
						|
	                  The value is 1, 2 or 3.</p></td>
 | 
						|
	            </tr>
 | 
						|
 | 
						|
	            <tr>
 | 
						|
	              <td><p>Hyperslab Selection Info</p></td>
 | 
						|
	              <td><p>Depending on <em>version</em>:
 | 
						|
	                  <table class="list">
 | 
						|
		                <tr>
 | 
						|
		                  <th width="20%" align="center">Version</th>
 | 
						|
		                  <th width="80%" align="left">Description</th>
 | 
						|
		                </tr>
 | 
						|
 | 
						|
		                <tr>
 | 
						|
		                  <td align="center"><code>1</code></td>
 | 
						|
		                  <td>See <a href="#SelHYPERV1">Version 1 Hyperslab Selection Info</a>.
 | 
						|
                          </td>
 | 
						|
		                </tr>
 | 
						|
 | 
						|
		                <tr>
 | 
						|
		                  <td align="center"><code>2</code></td>
 | 
						|
		                  <td>See <a href="#SelHYPERV2">Version 2 Hyperslab Selection Info</a>
 | 
						|
                          </td>
 | 
						|
		                </tr>
 | 
						|
 | 
						|
		                <tr>
 | 
						|
		                  <td align="center"><code>3</code></td>
 | 
						|
		                  <td>See <a href="#SelHYPERV3">Version 3 Hyperslab Selection Info</a>
 | 
						|
                          </td>
 | 
						|
		                </tr>
 | 
						|
	                  </table>
 | 
						|
	              </td>
 | 
						|
	            </tr>
 | 
						|
 | 
						|
              </table>
 | 
						|
            </div>
 | 
						|
 | 
						|
            <br />
 | 
						|
            <br />
 | 
						|
            <br />
 | 
						|
            <a name="SelHYPERV1"></a>
 | 
						|
              <div align="center">
 | 
						|
                <table class="format">
 | 
						|
	              <caption>
 | 
						|
	                Layout: Version 1 Hyperslab Selection Info
 | 
						|
	              </caption>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <th width="25%">byte</th>
 | 
						|
	                <th width="25%">byte</th>
 | 
						|
	                <th width="25%">byte</th>
 | 
						|
	                <th width="25%">byte</th>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
                    <td colspan="4">Reserved</td>
 | 
						|
	              </tr>
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">Length</td>
 | 
						|
	              </tr>
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">Rank</td>
 | 
						|
	              </tr>
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">Num Blocks</td>
 | 
						|
	              </tr>
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">Starting Offset #1 for Block #1</td>
 | 
						|
                  </tr>
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	              </tr>
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">Starting Offset #n for Block #1</td>
 | 
						|
                  </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">Ending Offset #1 for Block #1</td>
 | 
						|
                  </tr>
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	              </tr>
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">Ending Offset #n for Block #1</td>
 | 
						|
                  </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	              </tr>
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	              </tr>
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	              </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">Starting Offset #1 for Block #u</td>
 | 
						|
                  </tr>
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	              </tr>
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">Starting Offset #n for Block #u</td>
 | 
						|
                  </tr>
 | 
						|
 | 
						|
	              <tr>
 | 
						|
	                <td colspan="4">Ending Offset #1 for Block #u</em></td>
 | 
						|
</tr>
 | 
						|
<tr>
 | 
						|
  <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
</tr>
 | 
						|
<tr>
 | 
						|
  <td colspan="4">Ending Offset #n for Block #u</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
</table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Version 1 Hyperslab Selection Info
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Length</p></td>
 | 
						|
	  <td><p>The size in bytes from the field <em>Rank</em> to the
 | 
						|
          end of the Selection Info.</td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Rank</p></td>
 | 
						|
	  <td><p>The number of dimensions in the dataspace.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Num Blocks</p></td>
 | 
						|
	  <td><p>The number of blocks in the selection.</p></td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Starting Offset #n for Block #u</p></td>
 | 
						|
      <td><p>The offset #n of the starting element in block #u.
 | 
						|
        <p>#n is from 1 to <em>Rank</em>.
 | 
						|
        <p>#u is from 1 to <em>Num Blocks</em> moving from the fastest
 | 
						|
          changing dimension to the slowest changing dimension.
 | 
						|
      </p></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
    <tr>
 | 
						|
      <td><p>Ending Offset #n for Block #u</p></td>
 | 
						|
      <td><p>The offset #n of the ending element in block #u.
 | 
						|
        <p>#n is from 1 to <em>Rank</em>.
 | 
						|
        <p>#u is from 1 to <em>Num Blocks</em> moving from the fastest
 | 
						|
          changing dimension to the slowest changing dimension.
 | 
						|
      </p></td>
 | 
						|
    </tr>
 | 
						|
 | 
						|
  </table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<a name="SelHYPERV2"></a>
 | 
						|
  <div align="center">
 | 
						|
    <table class="format">
 | 
						|
	  <caption>
 | 
						|
	    Layout: Version 2 Hyperslab Selection Info
 | 
						|
	  </caption>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td>Flags</td>
 | 
						|
        <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted
 | 
						|
            only to align table nicely</em></td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4">Length</td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4">Rank</td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4">Start #1 <em>(8 bytes)</em><p></td>
 | 
						|
      </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4">Stride #1 <em>(8 bytes)</em><p></td>
 | 
						|
      </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4">Count #1 <em>(8 bytes)</em><p></td>
 | 
						|
      </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4">Block #1 <em>(8 bytes)</em><p></td>
 | 
						|
      </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	  </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4">Start #n <em>(8 bytes)</em><p></td>
 | 
						|
      </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4">Stride #n <em>(8 bytes)</em><p></td>
 | 
						|
      </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4">Count #n <em>(8 bytes)</em><p></td>
 | 
						|
      </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan="4">Block #n <em>(8 bytes)</em><p></td>
 | 
						|
      </tr>
 | 
						|
 | 
						|
    </table>
 | 
						|
  </div>
 | 
						|
 | 
						|
  <br />
 | 
						|
  <br />
 | 
						|
  <div align="center">
 | 
						|
    <table class="desc">
 | 
						|
      <caption>
 | 
						|
	    Fields: Version 2 Hyperslab Selection Info
 | 
						|
      </caption>
 | 
						|
	  <tr>
 | 
						|
        <th width="30%">Field Name</th>
 | 
						|
        <th>Description</th>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>Flags</p></td>
 | 
						|
	    <td><p>This is a bit field with the following definition.
 | 
						|
            Currently, this is always set to 0x1.
 | 
						|
          <p>
 | 
						|
            <table class="list">
 | 
						|
              <tr>
 | 
						|
                <th width="20%" align="center">Bit</th>
 | 
						|
                <th width="80%" align="left">Description</th>
 | 
						|
              </tr>
 | 
						|
              <tr>
 | 
						|
                <td align="center"><code>0</code></td>
 | 
						|
                <td>If set, it is a regular hyperslab, otherwise, irregular.
 | 
						|
                </td>
 | 
						|
              </tr>
 | 
						|
 | 
						|
            </table>
 | 
						|
        </td>
 | 
						|
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>Length</p></td>
 | 
						|
	    <td><p>The size in bytes from the field <em>Rank</em> to the
 | 
						|
            end of the Selection Info.</td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>Rank</p></td>
 | 
						|
	    <td><p>The number of dimensions in the dataspace.</td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
      <tr>
 | 
						|
        <td><p>Start #n</p></td>
 | 
						|
        <td><p>The offset of the starting element in the block.
 | 
						|
          <p>#n is from 1 to <em>Rank</em>.
 | 
						|
        </p></td>
 | 
						|
      </tr>
 | 
						|
 | 
						|
      <tr>
 | 
						|
        <td><p>Stride #n</p></td>
 | 
						|
        <td><p>The number of elements to move in each dimension.
 | 
						|
          <p>#n is from 1 to <em>Rank</em>.
 | 
						|
        </p></td>
 | 
						|
      </tr>
 | 
						|
 | 
						|
      <tr>
 | 
						|
        <td><p>Count #n</p></td>
 | 
						|
        <td><p>The number of blocks to select in each dimension.
 | 
						|
          <p>#n is from 1 to <em>Rank</em>.
 | 
						|
        </p></td>
 | 
						|
      </tr>
 | 
						|
 | 
						|
      <tr>
 | 
						|
        <td><p>Block #n</p></td>
 | 
						|
        <td><p>The size (in elements) of each block in each dimension.
 | 
						|
          <p>#n is from 1 to <em>Rank</em>.
 | 
						|
        </p></td>
 | 
						|
      </tr>
 | 
						|
    </table>
 | 
						|
  </div>
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
  <br />
 | 
						|
  <br />
 | 
						|
  <br />
 | 
						|
  <a name="SelHYPERV3"></a>
 | 
						|
    <div align="center">
 | 
						|
      <table class="format">
 | 
						|
	    <caption>
 | 
						|
	      Layout: Version 3 Hyperslab Selection Info
 | 
						|
	    </caption>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <th width="25%">byte</th>
 | 
						|
	      <th width="25%">byte</th>
 | 
						|
	      <th width="25%">byte</th>
 | 
						|
	      <th width="25%">byte</th>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td>Flags</td>
 | 
						|
	      <td>Encode Size</td>
 | 
						|
          <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted
 | 
						|
              only to align table nicely</em></td>
 | 
						|
	    </tr>
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4">Rank</td>
 | 
						|
	    </tr>
 | 
						|
	    <tr>
 | 
						|
	      <td colspan="4"><br />Regular/Irregular Hyperslab Selection Info
 | 
						|
            <p><em>(variable size)</em><br /><br/></td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
      </table>
 | 
						|
    </div>
 | 
						|
 | 
						|
    <br />
 | 
						|
    <br />
 | 
						|
    <div align="center">
 | 
						|
      <table class="desc">
 | 
						|
        <caption>
 | 
						|
	      Fields: Version 3 Hyperslab Selection Info
 | 
						|
        </caption>
 | 
						|
	    <tr>
 | 
						|
          <th width="30%">Field Name</th>
 | 
						|
          <th>Description</th>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Flags</p></td>
 | 
						|
	      <td><p>This is a bit field with the following definition:
 | 
						|
            <p>
 | 
						|
              <table class="list">
 | 
						|
                <tr>
 | 
						|
                  <th width="20%" align="center">Bit</th>
 | 
						|
                  <th width="80%" align="left">Description</th>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
                  <td align="center"><code>0</code></td>
 | 
						|
                  <td>If set, it is a regular hyperslab, otherwise, irregular.
 | 
						|
                  </td>
 | 
						|
                </tr>
 | 
						|
 | 
						|
              </table>
 | 
						|
          </td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Encode Size</p></td>
 | 
						|
	      <td><p>The size for encoding hyperslab selection info, which can 2, 4 or 8 bytes.</td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Rank</p></td>
 | 
						|
	      <td><p>The number of dimensions in the dataspace.</td>
 | 
						|
	    </tr>
 | 
						|
 | 
						|
	    <tr>
 | 
						|
	      <td><p>Regular/Irregular Hyperslab Selection Info</p></td>
 | 
						|
	      <td><p>This is the selection info for version 3 hyperslab which can be regular or irregular.
 | 
						|
            <p>If bit 0 of the field <em>Flags</em> is set,
 | 
						|
              See <a href="#SelHYPERV3REG">Version 3 Regular Hyperslab Selection Info</a>
 | 
						|
            <p>Otherwise, see <a href="#SelHYPERV3IRREG">Version 3 Irregular Hyperslab Selection Info</a>
 | 
						|
          </td>
 | 
						|
 | 
						|
	    </tr>
 | 
						|
 | 
						|
      </table>
 | 
						|
    </div>
 | 
						|
 | 
						|
 | 
						|
    <br />
 | 
						|
    <br />
 | 
						|
    <br />
 | 
						|
    <a name="SelHYPERV3REG"></a>
 | 
						|
      <div align="center">
 | 
						|
        <table class="format">
 | 
						|
	      <caption>
 | 
						|
	        Layout: Version 3 Regular Hyperslab Selection Info
 | 
						|
	      </caption>
 | 
						|
 | 
						|
	      <tr>
 | 
						|
	        <th width="25%">byte</th>
 | 
						|
	        <th width="25%">byte</th>
 | 
						|
	        <th width="25%">byte</th>
 | 
						|
	        <th width="25%">byte</th>
 | 
						|
	      </tr>
 | 
						|
 | 
						|
	      <tr>
 | 
						|
	        <td colspan="4">Start #1 <p><em>(2, 4 or 8 bytes)</em><p></td>
 | 
						|
          </tr>
 | 
						|
	      <tr>
 | 
						|
	        <td colspan="4">Stride #1 <p><em>(2, 4 or 8 bytes)</em><p></td>
 | 
						|
          </tr>
 | 
						|
	      <tr>
 | 
						|
	        <td colspan="4">Count #1 <p><em>(2, 4 or 8 bytes)</em><p></td>
 | 
						|
          </tr>
 | 
						|
	      <tr>
 | 
						|
	        <td colspan="4">Block #1 <p><em>(2, 4 or 8 bytes)</em><p></td>
 | 
						|
          </tr>
 | 
						|
	      <tr>
 | 
						|
	        <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	      </tr>
 | 
						|
	      <tr>
 | 
						|
	        <td colspan="4">Start #n <p><em>(2, 4 or 8 bytes)</em><p></td>
 | 
						|
          </tr>
 | 
						|
 | 
						|
	      <tr>
 | 
						|
	        <td colspan="4">Stride #n <p><em>(2, 4 or 8 bytes)</em><p></td>
 | 
						|
          </tr>
 | 
						|
	      <tr>
 | 
						|
	        <td colspan="4">Count #n <p><em>(2, 4 or 8 bytes)</em><p></td>
 | 
						|
          </tr>
 | 
						|
	      <tr>
 | 
						|
	        <td colspan="4">Block #n <p><em>(2, 4 or 8 bytes)</em><p></td>
 | 
						|
          </tr>
 | 
						|
 | 
						|
        </table>
 | 
						|
      </div>
 | 
						|
 | 
						|
      <br />
 | 
						|
      <br />
 | 
						|
      <div align="center">
 | 
						|
        <table class="desc">
 | 
						|
          <caption>
 | 
						|
	        Fields: Version 3 Regular Hyperslab Selection Info
 | 
						|
          </caption>
 | 
						|
	      <tr>
 | 
						|
            <th width="30%">Field Name</th>
 | 
						|
            <th>Description</th>
 | 
						|
	      </tr>
 | 
						|
 | 
						|
          <tr>
 | 
						|
            <td><p>Start #n</p></td>
 | 
						|
            <td><p>The offset of the starting element in the block.
 | 
						|
              <p>#n is from 1 to <em>Rank</em>.
 | 
						|
              <p>The field <em>Encode Size</em> indicates the size of this field.
 | 
						|
            </p></td>
 | 
						|
          </tr>
 | 
						|
 | 
						|
          <tr>
 | 
						|
            <td><p>Stride #n</p></td>
 | 
						|
            <td><p>The number of elements to move in each dimension.
 | 
						|
              <p>#n is from 1 to <em>Rank</em>.
 | 
						|
              <p>The field <em>Encode Size</em> indicates the size of this field.
 | 
						|
            </p></td>
 | 
						|
          </tr>
 | 
						|
 | 
						|
          <tr>
 | 
						|
            <td><p>Count #n</p></td>
 | 
						|
            <td><p>The number of blocks to select in each dimension.
 | 
						|
              <p>#n is from 1 to <em>Rank</em>.
 | 
						|
              <p>The field <em>Encode Size</em> indicates the size of this field.
 | 
						|
            </p></td>
 | 
						|
          </tr>
 | 
						|
 | 
						|
          <tr>
 | 
						|
            <td><p>Block #n</p></td>
 | 
						|
            <td><p>The size (in elements) of each block in each dimension.
 | 
						|
              <p>#n is from 1 to <em>Rank</em>.
 | 
						|
              <p>The field <em>Encode Size</em> indicates the size of this field.
 | 
						|
            </p></td>
 | 
						|
          </tr>
 | 
						|
        </table>
 | 
						|
      </div>
 | 
						|
 | 
						|
      <br />
 | 
						|
      <br />
 | 
						|
      <br />
 | 
						|
      <a name="SelHYPERV3IRREG"></a>
 | 
						|
        <div align="center">
 | 
						|
          <table class="format">
 | 
						|
	        <caption>
 | 
						|
	          Layout: Version 3 Irregular Hyperslab Selection Info
 | 
						|
	        </caption>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
	          <th width="25%">byte</th>
 | 
						|
	          <th width="25%">byte</th>
 | 
						|
	          <th width="25%">byte</th>
 | 
						|
	          <th width="25%">byte</th>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">Num Blocks<p><em>(2, 4 or 8 bytes)</em><p></td>
 | 
						|
	        </tr>
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">Starting Offset #1 for Block #1<p><em>(2, 4 or 8 bytes)</em><p></td>
 | 
						|
            </tr>
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	        </tr>
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">Starting Offset #n for Block #1<p><em>(2, 4 or 8 bytes)</em><p></td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">Ending Offset #1 for Block #1<p><em>(2, 4 or 8 bytes)</em><p></td>
 | 
						|
            </tr>
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	        </tr>
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">Ending Offset #n for Block #1<p><em>(2, 4 or 8 bytes)</em><p></td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	        </tr>
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	        </tr>
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">Starting Offset #1 for Block #u<p><em>(2, 4 or 8 bytes)</em><p></td>
 | 
						|
            </tr>
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	        </tr>
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">Starting Offset #n for Block #u<p><em>(2, 4 or 8 bytes)</em><p></td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">Ending Offset #1 for Block #u<p><em>(2, 4 or 8 bytes)</em><p></td>
 | 
						|
            </tr>
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">.<br />.<br />.<br /></td>
 | 
						|
	        </tr>
 | 
						|
	        <tr>
 | 
						|
	          <td colspan="4">Ending Offset #n for Block #u<p><em>(2, 4 or 8 bytes)</em><p></td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
          </table>
 | 
						|
        </div>
 | 
						|
 | 
						|
        <br />
 | 
						|
        <br />
 | 
						|
        <div align="center">
 | 
						|
          <table class="desc">
 | 
						|
            <caption>
 | 
						|
              Fields: Version 3 Irregular Hyperslab Selection Info
 | 
						|
            </caption>
 | 
						|
 | 
						|
	        <tr>
 | 
						|
	          <td><p>Num Blocks</p></td>
 | 
						|
	          <td><p>The number of blocks in the selection.
 | 
						|
                <p>The field <em>Encode Size</em> indicates the size of this field</p></td>
 | 
						|
	        </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td><p>Starting Offset #n for Block #u</p></td>
 | 
						|
              <td><p>The offset #n of the starting element in block #u.
 | 
						|
                <p>#n is from 1 to <em>Rank</em>.
 | 
						|
                <p>#u is from 1 to <em>Num Blocks</em> moving from the fastest
 | 
						|
                  changing dimension to the slowest changing dimension.
 | 
						|
                <p>The field <em>Encode Size</em> indicates the size of this field
 | 
						|
              </p></td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
            <tr>
 | 
						|
              <td><p>Ending Offset #n for Block #u</p></td>
 | 
						|
              <td><p>The offset #n of the ending element in block #u.
 | 
						|
                <p>#n is from 1 to <em>Rank</em>.
 | 
						|
                <p>#u is from 1 to <em>Num Blocks</em> moving from the fastest
 | 
						|
                  changing dimension to the slowest changing dimension.
 | 
						|
                <p>The field <em>Encode Size</em> indicates the size of this field
 | 
						|
              </p></td>
 | 
						|
            </tr>
 | 
						|
 | 
						|
          </table>
 | 
						|
        </div>
 | 
						|
 | 
						|
 | 
						|
        <br />
 | 
						|
        <br />
 | 
						|
        <br />
 | 
						|
        <a name="SelALL"></a>
 | 
						|
          <div align="center">
 | 
						|
            <table class="format">
 | 
						|
	          <caption>
 | 
						|
	            Layout: Selection Info for H5S_SEL_ALL
 | 
						|
	          </caption>
 | 
						|
 | 
						|
	          <tr>
 | 
						|
	            <th width="25%">byte</th>
 | 
						|
	            <th width="25%">byte</th>
 | 
						|
	            <th width="25%">byte</th>
 | 
						|
	            <th width="25%">byte</th>
 | 
						|
	          </tr>
 | 
						|
 | 
						|
	          <tr>
 | 
						|
	            <td colspan="4">Version</td>
 | 
						|
	          </tr>
 | 
						|
	          <tr>
 | 
						|
	            <td colspan="4"><br />Reserved <em>(zero,
 | 
						|
                    8 bytes)</em><br /><br /></td>
 | 
						|
	          </tr>
 | 
						|
 | 
						|
            </table>
 | 
						|
          </div>
 | 
						|
 | 
						|
          <br />
 | 
						|
          <br />
 | 
						|
          <div align="center">
 | 
						|
            <table class="desc">
 | 
						|
              <caption>
 | 
						|
                Fields: Selection Info for H5S_SEL_ALL
 | 
						|
              </caption>
 | 
						|
              <tr>
 | 
						|
                <th width="30%">Field Name</th>
 | 
						|
                <th>Description</th>
 | 
						|
              </tr>
 | 
						|
 | 
						|
              <tr>
 | 
						|
                <td><p>Version</p></td>
 | 
						|
                <td><p>The version number for the H5S_SEL_ALL Selection Info;
 | 
						|
                    the value is 1.</p></td>
 | 
						|
              </tr>
 | 
						|
            </table>
 | 
						|
          </div>
 | 
						|
 | 
						|
          <a name="ReferenceEncodeRV">
 | 
						|
            <h3>VIII.B. Reference Encoding (Revised)</h3></a>
 | 
						|
          <p>
 | 
						|
            <br />
 | 
						|
            For the following reference type,
 | 
						|
            the Reference Header and Reference Block are stored together as the dataset's raw data:
 | 
						|
            <ul>
 | 
						|
              <li>Object Reference (H5R_OBJECT2) (without reference to an external file)</li>
 | 
						|
            </ul>
 | 
						|
          <p>
 | 
						|
            For the following reference types,
 | 
						|
            the Reference Header plus the <a href="#GlobalHeapID">Global Heap ID</a> are stored
 | 
						|
            as the dataset's raw data in the file.
 | 
						|
            The global heap ID is used to locate the Reference Block stored in the global heap:
 | 
						|
            <ul>
 | 
						|
              <li>Object Reference (H5R_OBJECT2) (with reference to an external file)</li>
 | 
						|
              <li>Dataset Region Reference (H5R_DATASET_REGION2) (with/without reference to an external file)</li>
 | 
						|
              <li>Attribute Reference (H5R_ATTR) (with/without reference to an external file)</li>
 | 
						|
            </ul>
 | 
						|
            <br />
 | 
						|
            <br />
 | 
						|
 | 
						|
            <div align="center">
 | 
						|
              <table class="format">
 | 
						|
                <caption>
 | 
						|
                  Layout: Reference Header
 | 
						|
                </caption>
 | 
						|
 | 
						|
	            <tr>
 | 
						|
	              <th width="25%">byte</th>
 | 
						|
	              <th width="25%">byte</th>
 | 
						|
	              <th width="25%">byte</th>
 | 
						|
	              <th width="25%">byte</th>
 | 
						|
	            </tr>
 | 
						|
 | 
						|
	            <tr>
 | 
						|
	              <td>Reference Type</td>
 | 
						|
	              <td>Flags</td>
 | 
						|
                  <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted
 | 
						|
                      only to align table nicely</em></td>
 | 
						|
	            </tr>
 | 
						|
 | 
						|
              </table>
 | 
						|
 | 
						|
            </div>
 | 
						|
 | 
						|
            <br />
 | 
						|
            <br />
 | 
						|
            <div align="center">
 | 
						|
              <table class="desc">
 | 
						|
                <caption>
 | 
						|
                  Fields: Reference Header
 | 
						|
                </caption>
 | 
						|
	            <tr>
 | 
						|
                  <th width="30%">Field Name</th>
 | 
						|
                  <th>Description</th>
 | 
						|
	            </tr>
 | 
						|
 | 
						|
	            <tr>
 | 
						|
	              <td><p>Reference Type</p></td>
 | 
						|
	              <td>
 | 
						|
                    <p>There are 3 types of references:
 | 
						|
                      <table class="list">
 | 
						|
                        <tr>
 | 
						|
                          <th width="20%" align="center">Value</th>
 | 
						|
                          <th width="80%" align="left">Description</th>
 | 
						|
                        </tr>
 | 
						|
 | 
						|
                        <tr>
 | 
						|
                          <td align="center"><code>2</code></td>
 | 
						|
                          <td>H5R_OBJECT2: Object Reference
 | 
						|
                          </td>
 | 
						|
                        </tr>
 | 
						|
 | 
						|
                        <tr>
 | 
						|
                          <td align="center"><code>3</code></td>
 | 
						|
                          <td>H5R_DATASET_REGION2: Dataset Region Reference
 | 
						|
                          </td>
 | 
						|
                        </tr>
 | 
						|
 | 
						|
                        <tr>
 | 
						|
                          <td align="center"><code>4</code></td>
 | 
						|
                          <td>H5R_ATTR: Attribute Reference
 | 
						|
                          </td>
 | 
						|
                        </tr>
 | 
						|
 | 
						|
                      </table>
 | 
						|
 | 
						|
	              </td>
 | 
						|
	            </tr>
 | 
						|
 | 
						|
	            <tr>
 | 
						|
	              <td><p>Flags</p></td>
 | 
						|
	              <td><p>This field describes the reference:
 | 
						|
                      <table class="list">
 | 
						|
                        <tr>
 | 
						|
                          <th width="20%" align="center">Bit</th>
 | 
						|
                          <th width="80%" align="left">Description</th>
 | 
						|
                        </tr>
 | 
						|
 | 
						|
                        <tr>
 | 
						|
                          <td align="center"><code>0</code></td>
 | 
						|
                          <td>If set, the reference is to an external file.
 | 
						|
                          </td>
 | 
						|
                        </tr>
 | 
						|
                        <tr>
 | 
						|
                          <td align="center"><code>1-7</code></td>
 | 
						|
                          <td>Reserved</td>
 | 
						|
                        </tr>
 | 
						|
	                </table></p>
 | 
						|
 | 
						|
                  </td>
 | 
						|
	            </tr>
 | 
						|
 | 
						|
              </table>
 | 
						|
            </div>
 | 
						|
 | 
						|
            <br />
 | 
						|
            <br />
 | 
						|
            <br />
 | 
						|
 | 
						|
            <div align="center">
 | 
						|
              <table class="format">
 | 
						|
                <caption>
 | 
						|
                  Layout: Reference Block
 | 
						|
                </caption>
 | 
						|
 | 
						|
	            <tr>
 | 
						|
	              <th width="25%">byte</th>
 | 
						|
	              <th width="25%">byte</th>
 | 
						|
	              <th width="25%">byte</th>
 | 
						|
	              <th width="25%">byte</th>
 | 
						|
	            </tr>
 | 
						|
 | 
						|
	            <tr>
 | 
						|
	              <td>Token Size</td>
 | 
						|
                  <td colspan="3" bgcolor="#DDDDDD"><em>This space inserted
 | 
						|
                      only to align table nicely</em></td>
 | 
						|
	            </tr>
 | 
						|
	            <tr>
 | 
						|
                  <td colspan=4><br /><br />Token
 | 
						|
                    <em>(variable size)</em><br /> <br /><br /></td>
 | 
						|
	            </tr>
 | 
						|
                <tr>
 | 
						|
	              <td colspan=2>Length of External File Name</td>
 | 
						|
                  <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted
 | 
						|
                      only to align table nicely</em></td>
 | 
						|
                </tr>
 | 
						|
                <tr>
 | 
						|
	              <td colspan=4><br /><br />External File Name
 | 
						|
                    <em>(variable size)</em><br /><br /><br /></td>
 | 
						|
	            </tr>
 | 
						|
	            <tr>
 | 
						|
	              <td colspan=4>Size of Dataspace Selection</td>
 | 
						|
	            </tr>
 | 
						|
	            <tr>
 | 
						|
	              <td colspan=4>Rank of Dataspace Selection</td>
 | 
						|
	            </tr>
 | 
						|
	            <tr>
 | 
						|
	              <td colspan=4><br /><br />Dataspace Selection Information
 | 
						|
                    <em>(variable size)</em><br /><br /> <br /></td>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
<tr>
 | 
						|
  <td colspan=2>Length of Attribute Name </td>
 | 
						|
  <td colspan="2" bgcolor="#DDDDDD"><em>This space inserted
 | 
						|
      only to align table nicely</em></td>
 | 
						|
</tr>
 | 
						|
<tr>
 | 
						|
  <td colspan=4><br /><br />Attribute Name
 | 
						|
    <em>(variable size)</em><br /><br /><br /></td>
 | 
						|
</tr>
 | 
						|
 | 
						|
</table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Reference Block
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Token size</p></td>
 | 
						|
	  <td><p>This is the size of the token for the object.
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Token</p></td>
 | 
						|
	  <td>
 | 
						|
        <p>
 | 
						|
          This is the token for the object.
 | 
						|
        </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Length of External File Name</p></td>
 | 
						|
	  <td><p>This is the length for the external file name.
 | 
						|
        <p>This field exists if bit 0 of <em>flags</em> is set.</p>
 | 
						|
        </p>
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>External File Name</p></td>
 | 
						|
	  <td><p>This is the name of the external file being referenced.</p>
 | 
						|
</p>
 | 
						|
<p>This field exists if bit 0 of <em>flags</em> is set.</p>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td><p>Dataspace Selection Information</p></td>
 | 
						|
  <td><p>See <a href="#DataspaceSEL">Dataspace Selection.</a></p>
 | 
						|
</p>
 | 
						|
<p>This field exists if the <em>Reference Type</em> is H5R_DATASET_REGION2.</p>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td><p>Length of Attribute Name</p></td>
 | 
						|
  <td><p>This is the length of the attribute name.
 | 
						|
	<p>This field exists if the <em>Reference Type</em> is H5R_ATTRIBUTE.</p>
 | 
						|
  </td>
 | 
						|
</tr>
 | 
						|
 | 
						|
<tr>
 | 
						|
  <td><p>Attribute Name</p></td>
 | 
						|
  <td><p>This is the name of the attribute being referenced.
 | 
						|
	<p>This field exists if the <em>Reference Type</em> is H5R_ATTRIBUTE.</p>
 | 
						|
  </td>
 | 
						|
</tr>
 | 
						|
 | 
						|
</table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
 | 
						|
 | 
						|
<a name="ReferenceEncodeDP">
 | 
						|
  <h3>VIII.C. Reference Encoding (Backward Compatibility)</h3></a>
 | 
						|
<p>
 | 
						|
  <br />
 | 
						|
  The two references described below are maintained to preserve compatibility with previous versions of the library.
 | 
						|
<p>
 | 
						|
  For the following reference type,
 | 
						|
  the reference encoding is stored as the dataset's raw data in the file:
 | 
						|
  <ul>
 | 
						|
    <li>Object Reference (H5R_OBJECT1)</li>
 | 
						|
  </ul>
 | 
						|
<p>
 | 
						|
  For the following reference type,
 | 
						|
  the <a href="#GlobalHeapID">Global Heap ID</a> is stored as the dataset's raw data in the file.
 | 
						|
  The global heap ID is used to locate the reference encoding
 | 
						|
  stored in the global heap:
 | 
						|
  <ul>
 | 
						|
    <li>Dataset Region Reference (H5R_DATASET_REGION1)</li>
 | 
						|
  </ul>
 | 
						|
 | 
						|
  <br />
 | 
						|
  <br />
 | 
						|
  <div align="center">
 | 
						|
    <table class="format">
 | 
						|
      <caption>
 | 
						|
        Layout: Reference for H5R_OBJECT1
 | 
						|
      </caption>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
      <tr>
 | 
						|
        <td colspan="4"><br />Object Address<sup>O</sup><br /><br /></td>
 | 
						|
      </tr>
 | 
						|
 | 
						|
    </table>
 | 
						|
 | 
						|
    <table class="note">
 | 
						|
      <tr>
 | 
						|
        <td width="60%"> </td>
 | 
						|
        <td width="40%">
 | 
						|
          (Items marked with an ‘O’ in the above table are
 | 
						|
          of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
            of Offsets</a> field in the superblock.)
 | 
						|
      </td></tr>
 | 
						|
    </table>
 | 
						|
 | 
						|
  </div>
 | 
						|
 | 
						|
  <br />
 | 
						|
  <br />
 | 
						|
  <div align="center">
 | 
						|
    <table class="desc">
 | 
						|
      <caption>
 | 
						|
        Fields: Reference for H5R_OBJECT1
 | 
						|
      </caption>
 | 
						|
	  <tr>
 | 
						|
        <th width="30%">Field Name</th>
 | 
						|
        <th>Description</th>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <td><p>Object Address</p></td>
 | 
						|
	    <td>
 | 
						|
          <p>Address of the object being referenced
 | 
						|
	    </td>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
    </table>
 | 
						|
  </div>
 | 
						|
 | 
						|
  <br />
 | 
						|
  <br />
 | 
						|
  <br />
 | 
						|
 | 
						|
  <div align="center">
 | 
						|
    <table class="format">
 | 
						|
      <caption>
 | 
						|
        Layout: Reference for H5R_DATASET_REGION1
 | 
						|
      </caption>
 | 
						|
 | 
						|
	  <tr>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	    <th width="25%">byte</th>
 | 
						|
	  </tr>
 | 
						|
 | 
						|
      <tr>
 | 
						|
        <td colspan="4"><br />Object Address<sup>O</sup><br /><br /></td>
 | 
						|
      </tr>
 | 
						|
	  <tr>
 | 
						|
	    <td colspan=4><br /><br />Dataspace Selection Information
 | 
						|
          <em>(variable size)</em><br /><br /> <br /></td>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
</table>
 | 
						|
 | 
						|
<table class="note">
 | 
						|
  <tr>
 | 
						|
    <td width="60%"> </td>
 | 
						|
    <td width="40%">
 | 
						|
      (Items marked with an ‘O’ in the above table are
 | 
						|
      of the size specified in the <a href="#SizeOfOffsetsV0">Size
 | 
						|
        of Offsets</a> field in the superblock.)
 | 
						|
  </td></tr>
 | 
						|
</table>
 | 
						|
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<div align="center">
 | 
						|
  <table class="desc">
 | 
						|
    <caption>
 | 
						|
      Fields: Reference for H5R_DATASET_REGION1
 | 
						|
    </caption>
 | 
						|
	<tr>
 | 
						|
      <th width="30%">Field Name</th>
 | 
						|
      <th>Description</th>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Object Address</p></td>
 | 
						|
	  <td><p>This is the address of the object being referenced.
 | 
						|
	  </td>
 | 
						|
	</tr>
 | 
						|
 | 
						|
	<tr>
 | 
						|
	  <td><p>Dataspace Selection Information</p></td>
 | 
						|
	  <td><p>This is the dataspace selection for the object being referenced.
 | 
						|
          See <a href="#DataspaceSEL">Dataspace Selection.</a></p>
 | 
						|
</p>
 | 
						|
</td>
 | 
						|
</tr>
 | 
						|
 | 
						|
</table>
 | 
						|
</div>
 | 
						|
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
<br />
 | 
						|
 | 
						|
 | 
						|
</body>
 | 
						|
</html>
 | 
						|
 |