<html><head><title>
HDF5 Draft API Specification
</title></head><body>

<center>
<h1>HDF5: API Specification</h1>
</center>

<ol type=I>
<li><a href="#Library">Library</a> - H5&lt;name&gt; - API for global library HDF information/modification
<ol type=A>
    <li><a href="#Library-DontAtExit">H5dont_atexit</a>
    <li><a href="#Library-Close">H5close</a>
    <li><a href="#Library-Version">H5version</a>
</ol>

<li><a href="#File">File</a> - H5F&lt;name&gt; - API for accessing HDF files
<ol type=A>
    <li><a href="#File-Open">H5Fopen</a>
    <li><a href="#File-Create">H5Fcreate</a>
    <li><a href="#File-IsHDF5">H5Fis_hdf5</a>
    <li><a href="#File-GetCreatePlist">H5Fget_create_plist</a>
    <li><a href="#File-Close">H5Fclose</a>
</ol>

<li><a href="#Plist">Property list</a> - H5P&lt;name&gt; - API for manipulating object property lists
<ol type=A>
    <li><a href="#Plist-Create">H5Pcreate</a>
    <li><a href="#Plist-GetClass">H5Pget_class</a>
    <li><a href="#Plist-Copy">H5Pcopy</a>
    <li><a href="#Plist-Close">H5Pclose</a>
    <li><a href="#Plist-GetVersion">H5Pget_version</a>
    <li><a href="#Plist-SetUserblock">H5Pset_userblock</a>
    <li><a href="#Plist-GetUserblock">H5Pget_userblock</a>
    <li><a href="#Plist-SetSizes">H5Pset_sizes</a>
    <li><a href="#Plist-GetSizes">H5Pget_sizes</a>
    <li><a href="#Plist-SetMPI">H5Pset_mpi</a>
    <li><a href="#Plist-GetMPI">H5Pget_mpi</a>
    <li><a href="#Plist-SetXfer">H5Pset_xfer</a>
    <li><a href="#Plist-GetXfer">H5Pget_xfer</a>
    <li><a href="#Plist-SetSymK">H5Pset_sym_k</a>
    <li><a href="#Plist-GetSymK">H5Pget_sym_k</a>
    <li><a href="#Plist-SetIstoreK">H5Pset_istore_k</a>
    <li><a href="#Plist-GetIstoreK">H5Pget_istore_k</a>
    <li><a href="#Plist-SetLayout">H5Pset_layout</a>
    <li><a href="#Plist-GetLayout">H5Pget_layout</a>
    <li><a href="#Plist-SetChunk">H5Pset_chunk</a>
    <li><a href="#Plist-GetChunk">H5Pget_chunk</a>
</ol>

<!--
<li><a href="#Error">Error</a> - H5E&lt;name&gt; - API for error reporting
<ol type=A>
    <li><a href="#Error-SetPush">H5Eset_push</a>
</ol>
-->

<!--
<li><a href="#Relationships">Relationships</a> - H5R&lt;name&gt; - API for logically linking objects together (ie. attributes)
<ol type=A>
    <li><a href="#Relationships-GetNumRelations">H5Rget_num_relations</a>
    <li><a href="#Relationships-GetMemberOfOIDs">H5Rget_memberof_oids</a>
    <li><a href="#Relationships-GetAttachedOIDs">H5Rget_attached_oids</a>
    <li><a href="#Relationships-Attach">H5Rattach_oid</a>
</ol>
-->

<li><a href="#Dataset">Dataset</a> - H5D&lt;name&gt; - API for manipulating scientific datasets. See <a href="Datasets.html">datasets</a>.
<ol type=A>
    <li><a href="#Dataset-Create">H5Dcreate</a>
    <li><a href="#Dataset-Open">H5Dopen</a>
    <li><a href="#Dataset-GetSpace">H5Dget_space</a>
    <li><a href="#Dataset-GetType">H5Dget_type</a>
    <li><a href="#Dataset-GetCreateParms">H5Dget_create_parms</a>
    <li><a href="#Dataset-Read">H5Dread</a>
    <li><a href="#Dataset-Write">H5Dwrite</a>
    <li><a href="#Dataset-Extend">H5Dextend</a>
    <li><a href="#Dataset-Close">H5Dclose</a>
</ol>

<li><a href="#Datatype">Datatype</a> - H5T&lt;name&gt; - API for defining dataset element information. See <a href="Datatypes.html">data types</a>.
<ol type=A>
    <li><a href="#Datatype-Create">H5Tcreate</a>
    <li><a href="#Datatype-Copy">H5Tcopy</a>
    <li><a href="#Datatype-Equal">H5Tequal</a>
    <li><a href="#Datatype-Lock">H5Tlock</a>
    <li><a href="#Datatype-GetClass">H5Tget_class</a>
    <li><a href="#Datatype-GetSize">H5Tget_size</a>
    <li><a href="#Datatype-SetSize">H5Tset_size</a>
    <li><a href="#Datatype-GetOrder">H5Tget_order</a>
    <li><a href="#Datatype-SetOrder">H5Tset_order</a>
    <li><a href="#Datatype-GetPrecision">H5Tget_precision</a>
    <li><a href="#Datatype-SetPrecision">H5Tset_precision</a>
    <li><a href="#Datatype-GetOffset">H5Tget_offset</a>
    <li><a href="#Datatype-SetOffset">H5Tset_offset</a>
    <li><a href="#Datatype-GetPad">H5Tget_pad</a>
    <li><a href="#Datatype-SetPad">H5Tset_pad</a>
    <li><a href="#Datatype-GetSign">H5Tget_sign</a>
    <li><a href="#Datatype-SetSign">H5Tset_sign</a>
    <li><a href="#Datatype-GetFields">H5Tget_fields</a>
    <li><a href="#Datatype-SetFields">H5Tset_fields</a>
    <li><a href="#Datatype-GetEbias">H5Tget_ebias</a>
    <li><a href="#Datatype-SetEbias">H5Tset_ebias</a>
    <li><a href="#Datatype-GetNorm">H5Tget_norm</a>
    <li><a href="#Datatype-SetNorm">H5Tset_norm</a>
    <li><a href="#Datatype-GetInpad">H5Tget_inpad</a>
    <li><a href="#Datatype-SetInpad">H5Tset_inpad</a>
    <li><a href="#Datatype-GetCset">H5Tget_cset</a>
    <li><a href="#Datatype-SetCset">H5Tset_cset</a>
    <li><a href="#Datatype-GetStrpad">H5Tget_strpad</a>
    <li><a href="#Datatype-SetStrpad">H5Tset_strpad</a>
    <li><a href="#Datatype-GetNmembers">H5Tget_nmembers</a>
    <li><a href="#Datatype-GetMemberName">H5Tget_member_name</a>
    <li><a href="#Datatype-GetMemberOffset">H5Tget_member_offset</a>
    <li><a href="#Datatype-GetMemberDims">H5Tget_member_dims</a>
    <li><a href="#Datatype-GetMemberType">H5Tget_member_type</a>
    <li><a href="#Datatype-Insert">H5Tinsert</a>
    <li><a href="#Datatype-Pack">H5Tpack</a>
    <li><a href="#Datatype-RegisterHard">H5Tregister_hard</a>
    <li><a href="#Datatype-RegisterSoft">H5Tregister_soft</a>
    <li><a href="#Datatype-Unregister">H5Tunregister</a>
    <li><a href="#Datatype-Close">H5Tclose</a>
</ol>

<li><a href="#Dataspace">Dataspace</a> - H5S&lt;name&gt; - API for defining dataset dataspace
<ol type=A>
    <li><a href="#Dataspace-CreateSimple">H5Screate_simple</a>
    <li><a href="#Dataspace-Copy">H5Scopy</a>
    <li><a href="#Dataspace-GetNpoints">H5Sget_npoints</a>
    <li><a href="#Dataspace-GetNdims">H5Sget_ndims</a>
    <li><a href="#Dataspace-GetDims">H5Sget_dims</a>
    <li><a href="#Dataspace-IsSimple">H5Sis_simple</a>
    <li><a href="#Dataspace-SetSpace">H5Sset_space</a>
    <li><a href="#Dataspace-SetHyperslab">H5Sset_hyperslab</a>
    <li><a href="#Dataspace-GetHyperslab">H5Sget_hyperslab</a>
    <li><a href="#Dataspace-Close">H5Sclose</a>
</ol>

<li><a href="#Group">Group</a> - H5G&lt;name&gt; - API for creating physical groups of objects on disk.
<ol type=A>
    <li><a href="#Group-Create">H5Gcreate</a>
    <li><a href="#Group-Open">H5Gopen</a>
    <li><a href="#Group-Set">H5Gset</a>
    <li><a href="#Group-Push">H5Gpush</a>
    <li><a href="#Group-Pop">H5Gpop</a>
    <li><a href="#Group-Close">H5Gclose</a>
<!--
    <li><a href="#Group-GetNumContents">get_num_contents</a>
    <li><a href="#Group-GetContentInfo">get_content_info</a>
    <li><a href="#Group-GetContentInfoMult">get_content_info_mult</a>
    <li><a href="#Group-GetOIDByName">get_oid_by_name</a>
    <li><a href="#Group-GetOIDByIndex">get_oid_by_index</a>
    <li><a href="#Group-GetNameByOID">get_name_by_oid</a>
    <li><a href="#Group-GetNameByIndex">get_name_by_index</a>
    <li><a href="#Group-InsertItem">insert_item</a>
    <li><a href="#Group-InsertItemMult">insert_item_mult</a>
    <li><a href="#Group-RemoveItem">remove_item</a>
    <li><a href="#Group-RemoveItemMult">remove_item_mult</a>
-->
</ol>

<li><a href="#Glossary">Glossary</a> - A glossary of data-types used in the APIs
<ol type=A>
    <li><a href="#Glossary-Basic">Basic Types</a>
    <li><a href="#Glossary-Complex">Complex Types</a>
    <li><a href="#Glossary-DiskIO">Disk I/O Types</a>
</ol>

</ol>

<hr>
<h2><a name="Library">Library API Functions</a></h2>
<P>These functions are designed to provide access to HDF5 application/library
behavior.  They are used to get information about or change global library
parameters.
<br>
<br>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Library-DontAtExit">H5dont_atexit</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5dont_atexit</code>(<em>void</em>)
<dt><strong>Description:</strong>
        <dd>This routine indicates to the library that an 'atexit()' cleanup routine
            should not be installed.  The major (only?) purpose for this is in
            situations where the library is dynamically linked into an application and
            is un-linked from the application before 'exit()' gets callled.  In those
            situations, a routine installed with 'atexit()' would jump to a routine
            which was no longer in memory, causing errors.
                In order to be effective, this routine <em>must</em> be called before any other
            HDF function calls, and must be called each time the library is loaded/
            linked into the application. (the first time and after it's been un-loaded)
<dt><strong>Parameters:</strong> <em>none</em>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Library-Close">H5close</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5close</code>(<em>void</em>)
<dt><strong>Description:</strong>
        <dd>This routines flushes all data to disk, closes all file handles and
            cleans up all memory used by the library.  Generally it is installed
            to be called when the application calls <em>exit</em>, but may be
            called earlier in event of an emergency shutdown or out of desire
            to free all resources used by the HDF5 library.
<dt><strong>Parameters:</strong> none
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Library-Version">H5version</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5version</code>(<em>uintn *</em><code>majversion</code>,
            <em>uintn *</em><code>minversion</code>,
            <em>uintn *</em><code>relversion</code>,
            <em>uintn *</em><code>patversion</code>
            )
<dt><strong>Description:</strong>
        <dd>This routine retrieves the major, minor, release and patch versions
            of the library which is linked to the application.  
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>uintn *</em><code>majversion</code>
            <dd>The major version of the library.
        <dt><em>uintn *</em><code>minversion</code>
            <dd>The minor version of the library.
        <dt><em>uintn *</em><code>relversion</code>
            <dd>The release number of the library.
        <dt><em>uintn *</em><code>patversion</code>
            <dd>The patch number of the library.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<h2><a name="File">File API Functions</a></h2>
<P>These functions are designed to provide file-level access to HDF5 files.
Further manipulation of objects inside a file is performed through one of APIs
documented below.
<br>
<br>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="File-Open">H5Fopen</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Fopen</code>(<em>const char *</em><code>name</code>,
            <em>uintn</em> <code>flags</code>,
            <em>hid_t</em> <code>access_plist</code>
        )
<dt><strong>Description:</strong>
        <dd>This is the primary function for opening existing HDF5 files.
            The <code>flags</code> parameter determines the file
            access mode.  There is no read flag, all open files are
            implicitily opened for read access.  All flags may be
            combined with the '|' (boolean OR operator) to change the
            behavior of the file open call.  The
            <code>access_plist</code> parameter is a property list
            containing additional information required for specific
            methods of access, parallel I/O for example.  The
            paramters for access property lists are described in the
            H5P API documentation.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>const char *</em><code>name</code>
            <dd>Name of the file to access.
        <dt><em>uintn</em> <code>flags</code>
            <dd>File access flags:
                <ul><dl>
                    <dt>H5F_ACC_RDWR
                        <dd>Allow read and write access to file.
                </dl></ul>
        <dt><em>hid_t</em><code>access_plist</code>
            <dd>Property list indicating the file access properties.
                If parallel file access is desired, this is a collective
                call according to the communicator stored in the
                access_plist.  Use 0 for default access properties.
    </dl>
<dt><strong>Returns:</strong>
    <dd>An ID (of type <em>hid_t</em>) for the file upon success,
        otherwise negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="File-Create">H5Fcreate</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Fcreate</code>(<em>const char *</em><code>name</code>,
            <em>uintn</em> <code>flags</code>,
            <em>hid_t</em> <code>create_plist</code>,
            <em>hid_t</em> <code>access_plist</code>
        )
<dt><strong>Description:</strong>
        <dd>This is the primary function for opening and creating HDF5 files.
            The <code>flags</code> parameter determines whether an
            existing file will be overwritten or not.  All newly
            created files are opened for both reading and writing.
            All flags may be combined with the '|' (boolean OR
            operator) to change the behavior of the file open call.
            The <code>create_plist</code> and
            <code>access_plist</code> parameters are property lists
            containing additional information required for specific
            methods of access or particular aspects of the file to set
            when creating a file.  The parameters for creation and
            access property lists are described in the H5P API
            documentation.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>const char *</em><code>name</code>
            <dd>Name of the file to access.
        <dt><em>uintn</em> <code>flags</code>
            <dd>File access flags:
                <ul><dl>
                    <dt>H5F_ACC_TRUNC
                        <dd>Truncate file, if it already exists.  The file will
                            be truncated, erasing all data previously stored in
                            the file.
                </dl></ul>
        <dt><em>hid_t</em><code>create_plist</code>
            <dd>File creation property list ID, used when modifying
                default file meta-data.
        <dt><em>hid_t</em><code>access_plist</code>
            <dd>Property list indicating the file access properties.
                If parallel file access is desired, this is a collective
                call according to the communicator stored in the
                access_plist.  Use 0 for default access properties.
    </dl>
<dt><strong>Returns:</strong>
    <dd>An ID (of type <em>hid_t</em>) for the file upon success,
        otherwise negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="File-IsHDF5">H5Fis_hdf5</a>
<dt><strong>Signature:</strong>
    <dd><em>hbool_t </em><code>H5Fis_hdf5</code>(<em>const char *</em><code>name</code>
        )
<dt><strong>Description:</strong>
        <dd>This function determines whether a file is in the HDF5 format.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>const char *</em><code>name</code>
            <dd>File name to check format.
    </dl>
<dt><strong>Returns:</strong>
    <dd>TRUE/FALSE/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="File-GetCreatePlist">H5Fget_create_plist</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Fget_create_plist</code>(<em>hid_t</em> <code>file_id</code>
        )
<dt><strong>Description:</strong>
        <dd>This function returns a property list ID with a copy of
            the parameters used to create this file.  Useful for
            duplicating the parameters when creating another file.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>file_id</code>
            <dd>File ID for which to get creation property list.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="File-Close">H5Fclose</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Fclose</code>(<em>hid_t</em> <code>file_id</code>
        )
<dt><strong>Description:</strong>
        <dd>This function terminates access to an HDF5 file.  If this is the
            last file ID open for a file and if access IDs are still in use,
            this function will fail.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>file_id</code>
            <dd>File ID to terminate access to.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<h2><a name="Plist">Property List API Functions</a></h2>
<P>These functions manipulate property lists to allow objects which require
many different parameters to be easily manipulated.
<br>
<br>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Plist-Create">H5Pcreate</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Pcreate</code>(<em>H5P_class_t</em> <code>type</code>
        )
<dt><strong>Description:</strong>
        <dd>This function returns a property list ID for a copy of the default
            property list of a given type.
            <br>
    <dl>
        <dt>Property List Types and Uses:
            <ul><dl>
                <dt>H5P_FILE_CREATE
                    <dd>Used to set the metadata information about a file during
                        file creation.
                <dt>H5P_FILE_ACCESS
                    <dd>Used to set I/O access information about a file.
                <dt>H5P_DATASET_CREATE
                    <dd>Used to set information about a dataset when it is
                        created.
                <dt>H5P_DATASET_XFER
                    <dd>Used to set access information about a memory to dataset
                        transfer.
            </dl></ul>
    </dl>
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>H5P_class_t</em> <code>type</code>
            <dd>The type of property list to create.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Valid ID on success, negative on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Plist-Close">H5Pclose</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Pclose</code>(<em>hid_t</em> <code>plist_id</code>
        )
<dt><strong>Description:</strong>
        <dd>This function terminates access to a property list.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>plist_id</code>
            <dd>Property list ID to terminate access to.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Plist-GetClass">H5Pget_class</a>
<dt><strong>Signature:</strong>
    <dd><em>H5P_class_t </em><code>H5Pget_class</code>(<em>hid_t</em> <code>plist_id</code>
        )
<dt><strong>Description:</strong>
        <dd>This function queries the class of a property list ID.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>plist_id</code>
            <dd>Property list ID to query.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Property list class code on success, negative on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Plist-Copy">H5Pcopy</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Pcopy</code>(<em>hid_t</em> <code>plist_id</code>
        )
<dt><strong>Description:</strong>
        <dd>This function makes a copy of a property list ID.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>plist_id</code>
            <dd>Property list ID to duplicate.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Property list ID on success, negative on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Plist-GetVersion">H5Pget_version</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Pget_version</code>(<em>hid_t</em> <code>plist_id</code>,
            <em>int *</em> <code>boot</code>,
            <em>int *</em> <code>freelist</code>,
            <em>int *</em> <code>stab</code>,
            <em>int *</em> <code>shhdr</code>
        )
<dt><strong>Description:</strong>
        <dd>This function queries the version information of various objects
            for a file creation property list.  Any pointer parameters
            which are passed as NULL are not queried.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>plist_id</code>
            <dd>Property list ID to query.
        <dt><em>int *</em> <code>boot</code>
            <dd>Pointer to location to return boot block version number.
        <dt><em>int *</em> <code>freelist</code>
            <dd>Pointer to location to return global freelist version number.
        <dt><em>int *</em> <code>stab</code>
            <dd>Pointer to location to return symbol table version number.
        <dt><em>int *</em> <code>shhdr</code>
            <dd>Pointer to location to return shared object header version number.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Plist-SetUserblock">H5Pset_userblock</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Pset_userblock</code>(<em>hid_t</em> <code>plist_id</code>,
            <em>hsize_t</em> <code>size</code>
        )
<dt><strong>Description:</strong>
        <dd>This function sets the size of the user-block located at the 
            beginning of an HDF5 file.  This function is only valid for
            file creation property lists.  The default user-block size is 0.
            Only values which are powers of 2 larger equal to 512 or larger
            may be used as a valid user-block size.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>plist_id</code>
            <dd>Property list to modify.
        <dt><em>hsize_t</em> <code>size</code>
            <dd>Size of the user-block in bytes.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Plist-GetUserblock">H5Pget_userblock</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Pget_userblock</code>(<em>hid_t</em> <code>plist_id</code>,
            <em>hsize_t *</em> <code>size</code>
        )
<dt><strong>Description:</strong>
        <dd>This function retrieves the size of the user-block located at the 
            beginning of an HDF5 file.  This function is only valid for
            file creation property lists.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>plist_id</code>
            <dd>Property list ID to query.
        <dt><em>hsize_t *</em> <code>size</code>
            <dd>Pointer to location to return user-block size.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Plist-SetSizes">H5Pset_sizes</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Pset_sizes</code>(<em>hid_t</em> <code>plist_id</code>,
            <em>size_t</em> <code>sizeof_addr</code>,
            <em>size_t</em> <code>sizeof_size</code>
        )
<dt><strong>Description:</strong>
        <dd>This function sets the byte size of the offsets and lengths used to
            address objects in an HDF5 file.  This function is only
            valid for file creation property lists.  Passing in a
            value of 0 for one of the sizeof parameters retains the
            current value.  The default value for both values is 4
            bytes.  Valid values currenly are 2, 4, 8 and 16.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>plist_id</code>
            <dd>Property list to modify.
        <dt><em>size_t</em> <code>sizeof_addr</code>
            <dd>Size of an object offset in bytes.
        <dt><em>size_t</em> <code>sizeof_size</code>
            <dd>Size of an object length in bytes.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Plist-GetSizes">H5Pget_sizes</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Pget_sizes</code>(<em>hid_t</em> <code>plist_id</code>,
            <em>size_t *</em> <code>sizeof_addr</code>,
            <em>size_t *</em> <code>sizeof_size</code>
        )
<dt><strong>Description:</strong>
        <dd>This function retrieves the size of the offsets and lengths used
            in an HDF5 file.  This function is only valid for file creation
            property lists.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>plist_id</code>
            <dd>Property list ID to query.
        <dt><em>size_t *</em> <code>size</code>
            <dd>Pointer to location to return offset size in bytes.
        <dt><em>size_t *</em> <code>size</code>
            <dd>Pointer to location to return length size in bytes.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Plist-SetMPI">H5Pset_mpi</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Pset_mpi</code>(<em>hid_t</em> <code>tid</code>,
            <em>MPI_Comm</em> <code>comm</code>,
            <em>MPI_Info</em> <code>info</code>
        )
<dt><strong>Description:</strong>
        <dd>Store the access mode for parallel I/O call and the user supplied
	    communicator and info in the access property list which can then
	    be used to open file.  This function is available only in the
            parallel HDF5 library.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tid</code>
            <dd>ID of property list to modify
        <dt><em>MPI_Comm</em> <code>comm</code>
            <dd>
      	    MPI communicator to be used for file open as defined in
                  MPI_FILE_OPEN of MPI-2.  This function  does not make a
                  duplicated communicator. Any modification to comm after
                  this function call returns may have undetermined effect
                  to the access property list.  Users should call this function
                  again to setup the property list.
        <dt><em>MPI_Info</em> <code>info</code>
            <dd>
      	    MPI info object to be used for file open as defined in
                  MPI_FILE_OPEN of MPI-2.  This function  does not make a
                  duplicated info. Any modification to info after
                  this function call returns may have undetermined effect
                  to the access property list.  Users should call this function
                  again to setup the property list.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Plist-GetMPI">H5Pget_mpi</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Pget_mpi</code>(<em>hid_t</em> <code>tid</code>,
            <em>MPI_Comm</em> <code>*comm</code>,
            <em>MPI_Info</em> <code>*info</code>
        )
<dt><strong>Description:</strong>
        <dd>Retrieves the communicator and info object
	    that have been set by H5Pset_mpi.
	    This function is available only in the parallel HDF5 library.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tid</code>
            <dd>ID of a file access property list that has been set
	        successfully by H5Pset_mpi.
        <dt><em>MPI_Comm *</em> <code>comm</code>
            <dd>Pointer to location to return the communicator.
        <dt><em>MPI_Info *</em> <code>info</code>
            <dd>Pointer to location to return the info object.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Plist-SetXfer">H5Pset_xfer</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Pset_xfer</code>(<em>hid_t</em> <code>tid</code>,
            <em>H5D_transfer_t</em> <code>data_xfer_mode</code>
        )
<dt><strong>Description:</strong>
        <dd>Set the transfer mode of the dataset transfer property list.
            The list can then be used to control the I/O transfer mode
            during dataset accesses.  This function is available only
            in the parallel HDF5 library and is not a collective function.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tid</code>
            <dd>ID of a dataset transfer property list
        <dt><em>H5D_transfer_t</em> <code>data_xfer_mode</code>
            <dd>Data transfer modes:
                <ul><dl>
                    <dt>H5D_XFER_INDEPENDENT
                        <dd>Use independent I/O access.
                    <dt>H5D_XFER_COLLECTIVE
                        <dd>Use MPI collective I/O access.
                </dl></ul>
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Plist-GetXfer">H5Pget_xfer</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Pget_xfer</code>(<em>hid_t</em> <code>tid</code>,
            <em>H5D_transfer_t *</em> <code>data_xfer_mode</code>
        )
<dt><strong>Description:</strong>
        <dd>Retrieves the transfer mode from the dataset
	    transfer property list.
	    This function is available only in the parallel HDF5 library.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tid</code>
            <dd>ID of a dataset transfer property list.
        <dt><em>H5D_transfer_t *</em> <code>data_xfer_mode</code>
            <dd>Pointer to location to return the data_xfer_mode.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Plist-SetSymK">H5Pset_sym_k</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Pset_sym_k</code>(<em>hid_t</em> <code>plist_id</code>,
            <em>size_t</em> <code>ik</code>,
            <em>size_t</em> <code>lk</code>
        )
<dt><strong>Description:</strong>
        <dd>This function sets the size of parameters used to control the
            symbol table nodes.  This function is only valid for file
            creation property lists.  Passing in a value of 0 for one
            of the parameters retains the current value.
            <code>ik</code> is one half the rank of a tree that stores
            a symbol table for a group.  Internal nodes of the symbol
            table are on average 75% full.  That is, the average rank
            of the tree is 1.5 times the value of
            <code>ik</code>. <code>lk</code> is one half of the number
            of symbols that can be stored in a symbol table node.  A
            symbol table node is the leaf of a symbol table tree which
            is used to store a group.  When symbols are inserted
            randomly into a group, the group's symbol table nodes are
            75% full on average.  That is, they contain 1.5 times the
            number of symbols specified by <code>lk</code>.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>plist_id</code>
            <dd>Property list ID to query.
        <dt><em>size_t</em> <code>ik</code>
            <dd>Symbol table tree rank.
        <dt><em>size_t</em> <code>lk</code>
            <dd>Symbol table node size.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Plist-GetSymK">H5Pget_sym_k</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Pget_sym_k</code>(<em>hid_t</em> <code>plist_id</code>,
            <em>size_t *</em> <code>ik</code>,
            <em>size_t *</em> <code>lk</code>
        )
<dt><strong>Description:</strong>
        <dd>This function retrieves the size of the symbol table's B-tree
            1/2 rank and the symbol table's leaf node 1/2 size.  See
            information for <a href="#Plist-SetSymK">H5Pset_sym_k</a>
	    for more information.  This function is only valid for file
            creation property lists.  If a parameter valued is set to
            NULL, that parameter is not retrieved.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>plist_id</code>
            <dd>Property list ID to query.
        <dt><em>size_t *</em> <code>ik</code>
            <dd>Pointer to location to return the symbol table's B-tree 1/2 rank.
        <dt><em>size_t *</em> <code>size</code>
            <dd>Pointer to location to return the symbol table's leaf node 1/2 size.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Plist-SetIstoreK">H5Pset_istore_k</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Pset_istore_k</code>(<em>hid_t</em> <code>plist_id</code>,
            <em>size_t</em> <code>ik</code>
        )
<dt><strong>Description:</strong>
        <dd>This function sets the size of the parameter used to control the
            B-trees for indexing chunked datasets.  This function is
            only valid for file creation property lists.  Passing in a
            value of 0 for one of the parameters retains the current
            value.  <code>ik</code> is one half the rank of a tree
            that stores chunked raw data.  On average, such a tree
            will be 75% full, or have an average rank of 1.5 times the
            value of <code>ik</code>.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>plist_id</code>
            <dd>Property list ID to query.
        <dt><em>size_t</em> <code>ik</code>
            <dd>1/2 rank of chunked storage B-tree.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Plist-GetIstoreK">H5Pget_istore_k</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Pget_istore_k</code>(<em>hid_t</em> <code>plist_id</code>,
            <em>size_t *</em> <code>ik</code>
        )
<dt><strong>Description:</strong>
        <dd>Queries the 1/2 rank of an indexed storage B-tree.  See
            <a href="#Plist-SetIstoreK">H5Pset_istore_k</a> for details.
            The argument <code>ik</code> may be the null pointer.  This
            function is only valid for file creation property lists.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>plist_id</code>
            <dd>Property list ID to query.
        <dt><em>size_t *</em> <code>ik</code>
            <dd>Pointer to location to return the chunked storage B-tree 1/2 rank.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Plist-SetLayout">H5Pset_layout</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Pset_layout</code>(<em>hid_t</em> <code>plist_id</code>,
            <em>H5D_layout_t</em> <code>layout</code>
        )
<dt><strong>Description:</strong>
        <dd>This function sets the type of storage used store the raw data for
            a dataset.  This function is only valid for dataset
            creation property lists. Valid parameter for
            <code>layout</code> are:
            <ul> <dl>
                <dt>H5D_COMPACT
                    <dd>Store raw data and object header contiguously in file.
                        This should only be used for very small amounts of raw
                        data (suggested less than 1KB).
                <dt>H5D_CONTIGUOUS
                    <dd>Store raw data seperately from object header in one
                        large chunk in the file.
                <dt>H5D_CHUNKED
                    <dd>Store raw data seperately from object header in one
                        large chunk in the file and store chunks of the raw
                        data in seperate locations in the file.
            </dl> </ul>
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>plist_id</code>
            <dd>Property list ID to query.
        <dt><em>H5D_layout_t</em> <code>layout</code>
            <dd>Type of storage layout for raw data.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Plist-GetLayout">H5Pget_layout</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Pget_layout</code>(<em>hid_t</em> <code>plist_id</code>,
            <em>H5D_layout_t *</em> <code>layout</code>
        )
<dt><strong>Description:</strong>
        <dd>Queries the layout of the raw data for a dataset.
            This function is only valid for dataset creation property lists.
            Valid types for <code>layout</code> are:
            <ul> <dl>
                <dt>H5D_COMPACT
                    <dd>Raw data and object header stored contiguously in file.
                <dt>H5D_CONTIGUOUS
                    <dd>Raw data stored seperately from object header in one
                        large chunk in the file.
                <dt>H5D_CHUNKED
                    <dd>Raw data stored seperately from object header in 
                        chunks in seperate locations in the file.
            </dl> </ul>
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>plist_id</code>
            <dd>Property list ID to query.
        <dt><em>H5D_layout_t *</em> <code>layout</code>
            <dd>Pointer to location to return the storage layout.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Plist-SetChunk">H5Pset_chunk</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Pset_chunk</code>(<em>hid_t</em> <code>plist_id</code>,
            <em>int</em> <code>ndims</code>,
            <em>const hsize_t *</em> <code>dim</code>
        )
<dt><strong>Description:</strong>
        <dd>This function sets the size of the chunks used to store a chunked
            layout dataset.  This function is only valid for dataset
            creation property lists.  The <code>ndims</code> parameter
            currently must be the same size as the rank of the
            dataset.  The values of the <code>dim</code> array define
            the size of the chunks to store the dataset's raw data.
            As a side-effect, the layout of the dataset is changed to
            H5D_CHUNKED, if it isn't already.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>plist_id</code>
            <dd>Property list ID to query.
        <dt><em>int</em> <code>ndims</code>
            <dd>The number of dimensions of each chunk.
        <dt><em>const hsize_t *</em> <code>dim</code>
            <dd>An array containing the size of each chunk.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Plist-GetChunk">H5Pget_chunk</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Pget_chunk</code>(<em>hid_t</em> <code>plist_id</code>,
            <em>int</em> <code>max_ndims</code>
            <em>hsize_t *</em> <code>dims</code>
        )
<dt><strong>Description:</strong>
        <dd>Queries the size of chunks for the raw data of a chunked layout
            dataset.  This function is only valid for dataset creation
            property lists.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>plist_id</code>
            <dd>Property list ID to query.
        <dt><em>int</em> <code>max_ndims</code>
            <dd>Size of the <code>dims</code> array.
        <dt><em>hsize_t *</em> <code>dims</code>
            <dd>Array to store the chunk dimensions.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<!--
<hr>
<h2><a name="Error">Error API Functions</a></h2>
<P>These functions allow flexible error reporting for the HDF5 library.
<br>
<br>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Error-SetPush">H5Eset_push</a>
<dt><strong>Signature:</strong>
    <dd><em>H5E_push_func_t </em><code>H5Eset_push</code>(<em>H5E_push_func_t</em> <code>func</code>
        )
<dt><strong>Description:</strong>
        <dd>This function sets a function to call when an error is detected in
            the library.  The prototype of the H5E_push_func_t is: <br>
void H5E_push_func_t(int32 errid, hdf_maj_err_code_t maj, hdf_min_err_code_t min, const char *function_name, const char *file_name, intn line);
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>H5E_push_func_t</em><code>func</code>
            <dd>Pointer to the error reporting function.
    </dl>
<dt><strong>Returns:</strong>
    <dd>The pointer to the previous error repoting function on succes, NULL on failure
</dl>
-->

<!--
<hr>
<h2><a name="Relationships">Relationships API Functions</a></h2>
<P>These functions provide methods of creating links between logically
related objects in a file.
<br>
<br>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Relationships-GetNumRelations">H5Rget_num_relations</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Rget_num_relations</code>(<em>hid_t </em><code>obj_id</code>,
            <em>int32 *</em><code>num_attached</code>,
            <em>int32 *</em><code>num_memberof</code>
    )
<dt><strong>Description:</strong>
    <dd>This function retrieves the number of relationships attached to the
        object and the number of other objects that the object is a member of
        itself.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>obj_id</code>
            <dd>ID of the object to query the number of attached relations
        <dt><em>int32 *</em> <code>num_attached</code>
            <dd>Number of objects attached to the object
        <dt><em>int32 *</em> <code>num_memberof</code>
            <dd>Number of objects that the object is a member of
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Relationships-GetMemberOfOIDs">H5Rget_memberof_oids</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Rget_memberof_oids</code>(<em>hid_t </em><code>obj_id</code>,
            <em>hoid_t </em><code>memberof_list[]</code>
    )
<dt><strong>Description:</strong>
    <dd>This function retrieves the OIDs of the objects that the object is a
        member of.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>obj_id</code>
            <dd>ID of the object to get the members of list
        <dt><em>hoid_t *</em> <code>memberof_list</code>
            <dd>A list of the OIDs for objects which the object is attached to.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Relationships-GetAttachedOIDs">H5Rget_attached_oids</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Rget_attached_oids</code>(<em>hid_t </em><code>obj_id</code>,
            <em>hoid_t </em><code>attached_list[]</code>
    )
<dt><strong>Description:</strong>
    <dd>This function retrieves the OIDs of the objects that are attached to 
        the object.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>obj_id</code>
            <dd>ID of the object to get the attached OIDs from
        <dt><em>hoid_t *</em> <code>attached_list</code>
            <dd>A list of the OIDs for objects which are attached to the
                object
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Relationships-Attach">H5Rattach_oid</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Rattach_oid</code>(<em>hid_t </em><code>obj_id</code>,
            <em>hoid_t </em><code>attach</code>
    )
<dt><strong>Description:</strong>
    <dd>This function attaches an OID to the object.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>obj_id</code>
            <dd>ID of the object to attach an OID to
        <dt><em>hoid_t </em> <code>attach</code>
            <dd>The OID to attach to the object
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>
-->

<hr>
<h2><a name="Dataset">Dataset Object API Functions</a></h2>
<P>These functions create and manipulate dataset objects.  Each dataset must
be constructed from a datatype and a dataspace.
<br>
<br>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Dataset-Create">H5Dcreate</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Dcreate</code>(<em>hid_t </em><code>file_id</code>,
        <em>const char *</em><code>name</code>,
        <em>hid_t</em><code>type_id</code>,
        <em>hid_t</em><code>space_id</code>,
        <em>hid_t</em><code>plist_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function creates a new dataset in the file specified with the
        <code>file_id</code>.  The <code>type_id</code> and
        <code>space_id</code> are the IDs of the datatype and
        dataspace used to construct the framework of the dataset.  The
        datatype and dataspace parameters describe the dataset as it
        will exist in the file, which is not necessarily the same as
        it exists in memory.  The <code>plist_id</code> contains
        either the default property lists (H5P_DEFAULT) or a plist_id
        with particular constant properties used to create the
        dataset.  The <code>name</code> is used to identify the
        dataset in a group and must be unique within that group.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>file_id</code>
            <dd>ID of the file to create the dataset within.
        <dt><em>const char *</em> <code>name</code>
            <dd>The name of the dataset to create.
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of the datatype to use when creating the dataset.
        <dt><em>hid_t</em> <code>space_id</code>
            <dd>ID of the dataspace to use when creating the dataset.
        <dt><em>hid_t</em> <code>plist_id</code>
            <dd>ID of the dataset creation property list.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Dataset ID on success, negative on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Dataset-Open">H5Dopen</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Dopen</code>(<em>hid_t </em><code>file_id</code>,
        <em>const char *</em><code>name</code>
    )
<dt><strong>Description:</strong>
    <dd>This function opens an existing dataset for access in the file
        specified with the <code>file_id</code>.  The <code>name</code> is
        used to identify the dataset in the file.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>file_id</code>
            <dd>ID of the file to access the dataset within.
        <dt><em>const char *</em> <code>name</code>
            <dd>The name of the dataset to access.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Dataset ID on success, negative on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Dataset-GetSpace">H5Dget_space</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Dget_space</code>(<em>hid_t </em><code>dataset_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function returns a copy of the dataspace for a dataset.  The
        dataspace should be released with the H5Sclose() function.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>dataset_id</code>
            <dd>ID of the dataset to query.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Dataspace ID on success, negative on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Dataset-GetType">H5Dget_type</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Dget_type</code>(<em>hid_t </em><code>dataset_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function returns a copy of the datatype for a dataset.  The
        dataspace should be released with the H5Tclose() function.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>dataset_id</code>
            <dd>ID of the dataset to query.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Datatype ID on success, negative on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Dataset-GetCreateParms">H5Dget_create_plist</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Dget_create_plist</code>(<em>hid_t </em><code>dataset_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function returns a copy of the dataset creation property
        list for a dataset.  The property list should be released with the
        H5Pclose() function.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>dataset_id</code>
            <dd>ID of the dataset to query.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Dataset creation property list ID on success, negative on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Dataset-Read">H5Dread</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Dread</code>(<em>hid_t </em><code>dataset_id</code>,
        <em>hid_t</em> <code>mem_type_id</code>,
        <em>hid_t</em> <code>mem_space_id</code>,
        <em>hid_t</em> <code>file_space_id</code>,
        <em>hid_t</em> <code>transfer_plist_id</code>,
        <em>void *</em> <code>buf</code>
    )
<dt><strong>Description:</strong>
    <dd>This function reads raw data from the specified dataset into <code>buf</code>,
        converting from the file datatype of the dataset into the
        memory datatype specified in <code>mem_type_id</code>.  The
        portion of the dataset to read from disk is specified with the
        <code>file_spaceid</code> which can contain a dataspace with a
        hyperslab selected or the constant H5S_ALL, which indicates
        the entire dataset is to be read.  The portion of the dataset
        read into the memory buffer is specified with the
        <code>mem_space_id</code> which can also be a hyperslab of the
        same size or the H5S_ALL parameter to store the entire
        dataset.  The <code>transfer_plist_id</code> is a dataset
        transfer property list ID which is used to provide addition
        parameters for the I/O operation or can be H5P_DEFAULT for the
        default library behavior.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>dataset_id</code>
            <dd>ID of the dataset read from.
        <dt><em>hid_t</em> <code>mem_type_id</code>
            <dd>ID of the memory datatype.
        <dt><em>hid_t</em> <code>mem_space_id</code>
            <dd>ID of the memory dataspace.
        <dt><em>hid_t</em> <code>file_space_id</code>
            <dd>ID of the dataset's dataspace in the file.
        <dt><em>hid_t</em> <code>transfer_plist_id</code>
            <dd>ID of a transfer property list for this I/O operation.
        <dt><em>void *</em> <code>buf</code>
            <dd>Buffer to store information read from the file.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Dataset-Write">H5Dwrite</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Dwrite</code>(<em>hid_t </em><code>dataset_id</code>,
        <em>hid_t</em> <code>mem_type_id</code>,
        <em>hid_t</em> <code>mem_space_id</code>,
        <em>hid_t</em> <code>file_space_id</code>,
        <em>hid_t</em> <code>transfer_plist_id</code>,
        <em>const void *</em> <code>buf</code>
    )
<dt><strong>Description:</strong>
    <dd>This function writes raw data from memory into the specified dataset
        converting from the memory datatype of the dataset specified
        in <code>mem_type_id</code> into the file datatype.  The
        portion of the dataset to written to disk is specified with
        the <code>file_spaceid</code> which can contain a dataspace
        with a hyperslab selected or the constant H5S_ALL, which
        indicates the entire dataset is to be written.  The portion of
        the dataset written from the memory buffer is specified with
        the <code>mem_space_id</code> which can also be a hyperslab of
        the same size or the H5S_ALL parameter to store the entire
        dataset.  The <code>transfer_plist_id</code> is a dataset
        transfer property list ID which is used to provide addition
        parameters for the I/O operation or can be H5P_DEFAULT for the
        default library behavior.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>dataset_id</code>
            <dd>ID of the dataset read from.
        <dt><em>hid_t</em> <code>mem_type_id</code>
            <dd>ID of the memory datatype.
        <dt><em>hid_t</em> <code>mem_space_id</code>
            <dd>ID of the memory dataspace.
        <dt><em>hid_t</em> <code>file_space_id</code>
            <dd>ID of the dataset's dataspace in the file.
        <dt><em>hid_t</em> <code>transfer_plist_id</code>
            <dd>ID of a transfer property list for this I/O operation.
        <dt><em>const void *</em> <code>buf</code>
            <dd>Buffer to store information to be written to the file.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Dataset-Extend">H5Dextend</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Dextend</code>(<em>hid_t </em><code>dataset_id</code>,
        <em>const hsize_t *</em> <code>size</code>
    )
<dt><strong>Description:</strong>
    <dd>This function increases the size of the dataspace of a dataset with
        unlimited dimensions.  It cannot be used to extend the size of a
        dataspace's fixed dimensions.  The <code>size</code> array must have
        the same number of entries as the rank of the dataset's dataspace.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>dataset_id</code>
            <dd>ID of the dataset read from.
        <dt><em>const hsize_t *</em> <code>size</code>
            <dd>Array containing the new magnitude of each dimension.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Dataset-Close">H5Dclose</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Dclose</code>(<em>hid_t </em><code>dataset_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function ends access to a dataset and releases resources used by
        it.  Further use of the dataset ID is illegal in calls to the dataset
        API.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>dataset_id</code>
            <dd>ID of the dataset to finish access to.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<h2><a name="Datatype">Datatype Object API Functions</a></h2>
<P>These functions create and manipulate the datatype which describes elements
of a dataset.
<br>
<br>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-Create">H5Tcreate</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Tcreate</code>(<em>H5T_class_t </em><code>class</code>,
        <em>size_t</em><code>size</code>
    )
<dt><strong>Description:</strong>
    <dd>This function creates a new dataype of the specified class with the
        specified number of bytes.  Currently, only the <code>H5T_COMPOUND</code>
        datatype class is supported with this function, use <code>H5Tcopy</code>
        to create integer or floating-point datatypes.  The datatype ID
        returned from this function should be released with H5Tclose or resource
        leaks will result.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>H5T_class_t</em> <code>class</code>
            <dd>Class of datatype to create.
        <dt><em>size_t</em> <code>size</code>
            <dd>The number of bytes in the datatype to create.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Datatype ID on success, negative on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-Copy">H5Tcopy</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Tcopy</code>(<em>hid_t </em><code>type_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function copies an existing datatype.  The datatype ID returned
        should be released with H5Tclose or resource leaks will occur.  Native
        datatypes supported by the library are:
        <ul> <dl>
            <dt>H5T_NATIVE_CHAR
                <dd> Native character type, declare dataset array as 'char'
            <dt>H5T_NATIVE_UCHAR
                <dd> Native unsigned character type, declare dataset array as 'unsigned char'
            <dt>H5T_NATIVE_SHORT
                <dd> Native short type, declare dataset array as 'short'
            <dt>H5T_NATIVE_USHORT
                <dd> Native unsigned short type, declare dataset array as 'unsigned short'
            <dt>H5T_NATIVE_INT
                <dd> Native int type, declare dataset array as 'int'
            <dt>H5T_NATIVE_UINT
                <dd> Native unsigned int type, declare dataset array as 'unsigned int'
            <dt>H5T_NATIVE_LONG
                <dd> Native long type, declare dataset array as 'unsigned long'
            <dt>H5T_NATIVE_ULONG
                <dd> Native unsigned long type, declare dataset array as 'unsigned long'
            <dt>H5T_NATIVE_LLONG
                <dd> Native long long type, declare dataset array as 'unsigned long long'
            <dt>H5T_NATIVE_ULLONG
                <dd> Native unsigned long long type, declare dataset array as 'unsigned long long'
            <dt>H5T_NATIVE_INT8
                <dd> Native signed 8-bit type, declare dataset array as 'int8'
            <dt>H5T_NATIVE_UINT8
                <dd> Native unsigned 8-bit type, declare dataset array as 'uint8'
            <dt>H5T_NATIVE_INT16
                <dd> Native signed 16-bit type, declare dataset array as 'int16'
            <dt>H5T_NATIVE_UINT16
                <dd> Native unsigned 16-bit type, declare dataset array as 'uint16'
            <dt>H5T_NATIVE_INT32
                <dd> Native signed 32-bit type, declare dataset array as 'int32'
            <dt>H5T_NATIVE_UINT32
                <dd> Native unsigned 32-bit type, declare dataset array as 'uint32'
            <dt>H5T_NATIVE_INT64
                <dd> Native signed 64-bit type, declare dataset array as 'uint64'
            <dt>H5T_NATIVE_UINT64
                <dd> Native unsigned 64-bit type, declare dataset array as 'uint64'
            <dt>H5T_NATIVE_FLOAT
                <dd> Native single-precision float type, declare dataset array as 'float'
            <dt>H5T_NATIVE_DOUBLE
                <dd> Native double-precision float type, declare dataset array as 'double'
        </dl> </ul>
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to copy.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Datatype ID on success, negative on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-Equal">H5Tequal</a>
<dt><strong>Signature:</strong>
    <dd><em>hbool_t </em><code>H5Tequal</code>(<em>hid_t </em><code>type_id1</code>,
        <em>hid_t</em><code>type_id2</code>
    )
<dt><strong>Description:</strong>
    <dd>This function determines if two datatype IDs refer to the same 
        datatype.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id1</code>
            <dd>ID of datatype to compare.
        <dt><em>hid_t</em> <code>type_id2</code>
            <dd>ID of datatype to compare.
    </dl>
<dt><strong>Returns:</strong>
    <dd>TRUE/FALSE/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-Lock">H5Tlock</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Tlock</code>(<em>hid_t </em><code>type_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function locks a type, making it read-only and non-destrucible.
        This is normally done by the library for predefined data types so the
        application doesn't inadvertently change or delete a predefined type.
        Once a data type is locked it can never be unlocked.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to lock.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-GetClass">H5Tget_class</a>
<dt><strong>Signature:</strong>
    <dd><em>H5T_class_t </em><code>H5Tget_class</code>(<em>hid_t </em><code>type_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function returns the base class of a datatype.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to query.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Non-negative type class on success, negative on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-GetSize">H5Tget_size</a>
<dt><strong>Signature:</strong>
    <dd><em>size_t </em><code>H5Tget_size</code>(<em>hid_t </em><code>type_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function returns the size of a datatype in bytes.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to query.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Positve size in bytes on success, 0 on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-SetSize">H5Tset_size</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Tset_size</code>(<em>hid_t </em><code>type_id</code>,
        <em>size_t</em><code>size</code>
    )
<dt><strong>Description:</strong>
    <dd>This function sets the total size in bytes for an atomic data type (this
         operation is not permitted on compound data types).  If the size is
         decreased so that the significant bits of the data type extend beyond
         the edge of the new size, then the `offset' property is decreased
         toward zero.  If the `offset' becomes zero and the significant
         bits of the data type still hang over the edge of the new size, then
         the number of significant bits is decreased.
         Adjusting the size of an H5T_STRING automatically sets the precision
         to 8*size.  All data types have a positive size.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to change size.
        <dt><em>size_t</em> <code>size</code>
            <dd>Size in bytes to modify datatype.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-GetOrder">H5Tget_order</a>
<dt><strong>Signature:</strong>
    <dd><em>H5T_order_t </em><code>H5Tget_order</code>(<em>hid_t </em><code>type_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function returns the byte order of an atomic datatype.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to query.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Byte order constant on success, negative on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-SetOrder">H5Tset_order</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Tset_order</code>(<em>hid_t </em><code>type_id</code>,
        <em>H5T_order_t</em><code>order</code>
    )
<dt><strong>Description:</strong>
    <dd>This function sets the byte ordering of an atomic datatype.
        Byte orderings currently supported are:
        <ul> <dl>
            <dt>H5T_ORDER_LE
                <dd> Little-endian byte ordering (default)
            <dt>H5T_ORDER_BE
                <dd> Big-endian byte ordering
            <dt>H5T_ORDER_Vax
                <dd> VAX-endianness byte ordering (not currently supported)
        </dl> </ul>
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to set.
        <dt><em>H5T_order_t</em> <code>order</code>
            <dd>Byte ordering constant.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-GetPrecision">H5Tget_precision</a>
<dt><strong>Signature:</strong>
    <dd><em>size_t </em><code>H5Tget_precision</code>(<em>hid_t </em><code>type_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function returns the precision of an atomic data type.  The
        precision is the number of significant bits which, unless padding is
        present, is 8 times larger than the value returned by H5Tget_size().
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to query.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Number of significant bits on success, 0 on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-SetPrecision">H5Tset_precision</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Tset_precision</code>(<em>hid_t </em><code>type_id</code>,
        <em>size_t</em><code>precision</code>
    )
<dt><strong>Description:</strong>
    <dd>This function sets the precision of an atomic data type.  The precision
        is the number of significant bits which, unless padding is present, is 8
        times larger than the value returned by H5Tget_size().
        <P>If the precision is increased then the offset is decreased and then
            the size is increased to insure that significant bits do not "hang
            over" the edge of the data type.
        <P>Changing the precision of an H5T_STRING automatically changes the
            size as well.  The precision must be a multiple of 8.
        <P>When decreasing the precision of a floating point type, set the
            locations and sizes of the sign, mantissa, and exponent fields
            first.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to set.
        <dt><em>size_t</em> <code>precision</code>
            <dd>Number of bits of precision for datatype.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-GetOffset">H5Tget_offset</a>
<dt><strong>Signature:</strong>
    <dd><em>size_t </em><code>H5Tget_offset</code>(<em>hid_t </em><code>type_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function retrieves the bit offset of the first significant bit.
        The signficant bits of an atomic datum can be offset from the beginning
        of the memory for that datum by an amount of padding. The `offset'
        property specifies the number of bits of padding that appear to the
        "right of" the value.  That is, if we have a 32-bit datum with 16-bits
        of precision having the value 0x1122 then it will be layed out in
        memory as (from small byte address toward larger byte addresses):
        <br>
        <br>

      <table border align=center cellpadding=4 width="80%">
        <tr align=center>
          <th width="20%">Byte Position</th>
          <th width="20%">Big-Endian Offset=0</th>
          <th width="20%">Big-Endian Offset=16</th>
          <th width="20%">Little-Endian Offset=0</th>
          <th width="20%">Little-Endian Offset=16</th>
        </tr>  
        <tr align=center>
          <td>0:</td>
          <td>[ pad]</td>
          <td>[0x11]</td>
          <td>[0x22]</td>
          <td>[ pad]</td>
        </tr>
        <tr align=center>
          <td>1:</td>
          <td>[ pad]</td>
          <td>[0x22]</td>
          <td>[0x11]</td>
          <td>[ pad]</td>
        </tr>
        <tr align=center>
          <td>2:</td>
          <td>[0x11]</td>
          <td>[ pad]</td>
          <td>[ pad]</td>
          <td>[0x22]</td>
        </tr>
        <tr align=center>
          <td>3:</td>
          <td>[0x22]</td>
          <td>[ pad]</td>
          <td>[ pad]</td>
          <td>[0x11]</td>
        </tr>
      </table>
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to query.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Positive offset value on success, 0 on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-SetOffset">H5Tset_offset</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Tset_offset</code>(<em>hid_t </em><code>type_id</code>,
        <em>size_t</em> <code>offset</code>
    )
<dt><strong>Description:</strong>
    <dd>This function sets the bit offset of the first significant bit.  The
        signficant bits of an atomic datum can be offset from the beginning of
        the memory for that datum by an amount of padding. The `offset'
        property specifies the number of bits of padding that appear to the
        "right of" the value.  That is, if we have a 32-bit datum with 16-bits
        of precision having the value 0x1122 then it will be layed out in
        memory as (from small byte address toward larger byte addresses):
        <br>
        <br>

      <table border align=center cellpadding=4 width="80%">
        <tr align=center>
          <th width="20%">Byte Position</th>
          <th width="20%">Big-Endian Offset=0</th>
          <th width="20%">Big-Endian Offset=16</th>
          <th width="20%">Little-Endian Offset=0</th>
          <th width="20%">Little-Endian Offset=16</th>
        </tr>  
        <tr align=center>
          <td>0:</td>
          <td>[ pad]</td>
          <td>[0x11]</td>
          <td>[0x22]</td>
          <td>[ pad]</td>
        </tr>
        <tr align=center>
          <td>1:</td>
          <td>[ pad]</td>
          <td>[0x22]</td>
          <td>[0x11]</td>
          <td>[ pad]</td>
        </tr>
        <tr align=center>
          <td>2:</td>
          <td>[0x11]</td>
          <td>[ pad]</td>
          <td>[ pad]</td>
          <td>[0x22]</td>
        </tr>
        <tr align=center>
          <td>3:</td>
          <td>[0x22]</td>
          <td>[ pad]</td>
          <td>[ pad]</td>
          <td>[0x11]</td>
        </tr>
      </table>

<P>If the offset is incremented then the total size is
incremented also if necessary to prevent significant bits of
the value from hanging over the edge of the data type.

<P>The offset of an H5T_STRING cannot be set to anything but
zero.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to set.
        <dt><em>size_t</em> <code>offset</code>
            <dd>Offset of first significant bit.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-GetPad">H5Tget_pad</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Tget_pad</code>(<em>hid_t </em><code>type_id</code>,
        <em>H5T_pad_t *</em> <code>lsb</code>,
        <em>H5T_pad_t *</em> <code>msb</code>
    )
<dt><strong>Description:</strong>
    <dd>This function retrieves the padding type of the least and most-significant
        bit padding.  Valid types are:
        <ul> <dl>
            <dt>H5T_PAD_ZERO
               <dd>Set background to zeros.
            <dt>H5T_PAD_ONE
               <dd>Set background to ones.
            <dt>H5T_PAD_BACKGROUND
               <dd>Leave background alone.
        </dl> </ul>
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to query.
        <dt><em>H5T_pad_t *</em> <code>lsb</code>
            <dd>Pointer to location to return least-significant bit padding type.
        <dt><em>H5T_pad_t *</em> <code>msb</code>
            <dd>Pointer to location to return most-significant bit padding type.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-SetPad">H5Tset_pad</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Tset_pad</code>(<em>hid_t </em><code>type_id</code>,
        <em>H5T_pad_t</em> <code>lsb</code>,
        <em>H5T_pad_t</em> <code>msb</code>
    )
<dt><strong>Description:</strong>
    <dd>This function sets the least and most-significant bits padding types.
        <ul> <dl>
            <dt>H5T_PAD_ZERO
               <dd>Set background to zeros.
            <dt>H5T_PAD_ONE
               <dd>Set background to ones.
            <dt>H5T_PAD_BACKGROUND
               <dd>Leave background alone.
        </dl> </ul>
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to set.
        <dt><em>H5T_pad_t</em> <code>lsb</code>
            <dd>Padding type for least-significant bits.
        <dt><em>H5T_pad_t</em> <code>msb</code>
            <dd>Padding type for most-significant bits.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-GetSign">H5Tget_sign</a>
<dt><strong>Signature:</strong>
    <dd><em>H5T_sign_t </em><code>H5Tget_sign</code>(<em>hid_t </em><code>type_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function retrieves the sign type for an integer type.
        Valid types are:
        <ul> <dl>
            <dt>H5T_SGN_NONE
               <dd>Unsigned integer type.
            <dt>H5T_SGN_2
               <dd>Two's complement signed integer type.
        </dl> </ul>
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to query.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Non-negative sign type on success, negative on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-SetSign">H5Tset_sign</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Tset_sign</code>(<em>hid_t </em><code>type_id</code>,
        <em>H5T_sign_t</em> <code>sign</code>
    )
<dt><strong>Description:</strong>
    <dd>This function sets the sign proprety for an integer type.
        <ul> <dl>
            <dt>H5T_SGN_NONE
               <dd>Unsigned integer type.
            <dt>H5T_SGN_2
               <dd>Two's complement signed integer type.
        </dl> </ul>
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to set.
        <dt><em>H5T_sign_t</em> <code>sign</code>
            <dd>Sign type.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-GetFields">H5Tget_fields</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Tget_fields</code>(<em>hid_t </em><code>type_id</code>,
        <em>size_t *</em> <code>epos</code>,
        <em>size_t *</em> <code>esize</code>,
        <em>size_t *</em> <code>mpos</code>,
        <em>size_t *</em> <code>msize</code>
    )
<dt><strong>Description:</strong>
    <dd>This function retrieves information about the locations of the various
        bit fields of a floating point data type.  The field positions are bit
        positions in the significant region of the data type.  Bits are
        numbered with the least significant bit number zero.
        Any (or even all) of the arguments can be null pointers.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to query.
        <dt><em>size_t *</em> <code>epos</code>
            <dd>Pointer to location to return exponent bit-position.
        <dt><em>size_t *</em> <code>esize</code>
            <dd>Pointer to location to return size of exponent in bits.
        <dt><em>size_t *</em> <code>mpos</code>
            <dd>Pointer to location to return mantissa bit-position.
        <dt><em>size_t *</em> <code>msize</code>
            <dd>Pointer to location to return size of mantissa in bits.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-SetFields">H5Tset_fields</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Tset_fields</code>(<em>hid_t </em><code>type_id</code>,
        <em>size_t</em> <code>epos</code>,
        <em>size_t</em> <code>esize</code>,
        <em>size_t</em> <code>mpos</code>,
        <em>size_t</em> <code>msize</code>
    )
<dt><strong>Description:</strong>
    <dd>This function sets the locations and sizes of the various floating
        point bit fields.  The field positions are bit positions in the
        significant region of the data type.  Bits are numbered with the least
        significant bit number zero.
    
        <P>Fields are not allowed to extend beyond the number of bits of
        precision, nor are they allowed to overlap with one another.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to set.
        <dt><em>size_t</em> <code>epos</code>
            <dd>Exponent bit position.
        <dt><em>size_t</em> <code>esize</code>
            <dd>Size of exponent in bits.
        <dt><em>size_t</em> <code>mpos</code>
            <dd>Mantissa bit position.
        <dt><em>size_t</em> <code>msize</code>
            <dd>Size of mantissa in bits.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-GetEbias">H5Tget_ebias</a>
<dt><strong>Signature:</strong>
    <dd><em>size_t </em><code>H5Tget_ebias</code>(<em>hid_t </em><code>type_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function retrieves the exponent bias of a floating-point type.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to query.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Positive value on success, 0 on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-SetEbias">H5Tset_ebias</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Tset_ebias</code>(<em>hid_t </em><code>type_id</code>,
        <em>size_t</em> <code>ebias</code>
    )
<dt><strong>Description:</strong>
    <dd>This function sets the exponent bias of a floating-point type.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to set.
        <dt><em>size_t</em> <code>ebias</code>
            <dd>Exponent bias value.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-GetNorm">H5Tget_norm</a>
<dt><strong>Signature:</strong>
    <dd><em>H5T_norm_t </em><code>H5Tget_norm</code>(<em>hid_t </em><code>type_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function retrieves the mantissa normalization of a floating-point
        datatype.  Valid normalization values are:
        <ul> <dl>
            <dt>H5T_NORM_IMPLIED
                <dd>MSB of mantissa isn't stored, always 1
            <dt>H5T_NORM_MSBSET
                <dd>MSB of mantissa is always 1
            <dt>H5T_NORM_NONE
                <dd>Mantissa is not normalized
        </dl> </ul>
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to query.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Non-negative normalization type on success, negative on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-SetNorm">H5Tset_norm</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Tset_norm</code>(<em>hid_t </em><code>type_id</code>,
        <em>H5T_norm_t</em> <code>norm</code>
    )
<dt><strong>Description:</strong>
    <dd>This function sets the mantissa normalization of a floating-point
        datatype.  Valid normalization values are:
        <ul> <dl>
            <dt>H5T_NORM_IMPLIED
                <dd>MSB of mantissa isn't stored, always 1
            <dt>H5T_NORM_MSBSET
                <dd>MSB of mantissa is always 1
            <dt>H5T_NORM_NONE
                <dd>Mantissa is not normalized
        </dl> </ul>
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to set.
        <dt><em>H5T_norm_t</em> <code>norm</code>
            <dd>Mantissa normalization type.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-GetInpad">H5Tget_inpad</a>
<dt><strong>Signature:</strong>
    <dd><em>H5T_pad_t </em><code>H5Tget_inpad</code>(<em>hid_t </em><code>type_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function retrieves the internal padding type for unused bits in
        floating-point datatypes.
        Valid padding values are:
        <ul> <dl>
            <dt>H5T_PAD_ZERO
               <dd>Set background to zeros.
            <dt>H5T_PAD_ONE
               <dd>Set background to ones.
            <dt>H5T_PAD_BACKGROUND
               <dd>Leave background alone.
        </dl> </ul>
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to query.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Non-negative padding type on success, negative on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-SetInpad">H5Tset_inpad</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Tset_inpad</code>(<em>hid_t </em><code>type_id</code>,
        <em>H5T_pad_t</em> <code>inpad</code>
    )
<dt><strong>Description:</strong>
    <dd>If any internal bits of a floating point type are unused
        (that is, those significant bits which are not part of the
        sign, exponent, or mantissa) then they will be filled
        according to the value of this property.
        Valid padding values are:
        <ul> <dl>
            <dt>H5T_PAD_ZERO
               <dd>Set background to zeros.
            <dt>H5T_PAD_ONE
               <dd>Set background to ones.
            <dt>H5T_PAD_BACKGROUND
               <dd>Leave background alone.
        </dl> </ul>
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to modify.
        <dt><em>H5T_pad_t</em> <code>pad</code>
            <dd>Padding type.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-GetCset">H5Tget_cset</a>
<dt><strong>Signature:</strong>
    <dd><em>H5T_cset_t </em><code>H5Tget_cset</code>(<em>hid_t </em><code>type_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function retrieves the character set type of a string datatype.
        Valid character set values are:
        <ul> <dl>
            <dt>H5T_CSET_ASCII
               <dd>Character set is US ASCII
        </dl> </ul>
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to query.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Non-negative character set type on success, negative on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-SetCset">H5Tset_cset</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Tset_cset</code>(<em>hid_t </em><code>type_id</code>,
        <em>H5T_cset_t</em> <code>cset</code>
    )
<dt><strong>Description:</strong>
    <dd>HDF5 is able to distinguish between character sets of different
        nationalities and to convert between them to the extent possible.
        Valid character set values are:
        <ul> <dl>
            <dt>H5T_CSET_ASCII
               <dd>Character set is US ASCII
        </dl> </ul>
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to modify.
        <dt><em>H5T_cset_t</em> <code>cset</code>
            <dd>Character set type.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-GetStrpad">H5Tget_strpad</a>
<dt><strong>Signature:</strong>
    <dd><em>H5T_str_t </em><code>H5Tget_strpad</code>(<em>hid_t </em><code>type_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function retrieves the string padding method for a string datatype.
        Valid string padding values are:
        <ul> <dl>
            <dt>H5T_STR_NULL
               <dd>Pad with zeros (as C does)
            <dt>H5T_STR_SPACE
               <dd>Pad with spaces (as FORTRAN does)
        </dl> </ul>
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to query.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Non-negative string padding type on success, negative on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-SetStrpad">H5Tset_strpad</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Tset_strpad</code>(<em>hid_t </em><code>type_id</code>,
        <em>H5T_str_t</em> <code>strpad</code>
    )
<dt><strong>Description:</strong>
    <dd>The method used to store character strings differs with the programming
        language: C usually null terminates strings while Fortran
        left-justifies and space-pads strings.  This property defines the
        storage mechanism for the string.
        Valid string padding values are:
        <ul> <dl>
            <dt>H5T_STR_NULL
               <dd>Pad with zeros (as C does)
            <dt>H5T_STR_SPACE
               <dd>Pad with spaces (as FORTRAN does)
        </dl> </ul>
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to modify.
        <dt><em>H5T_str_t</em> <code>strpad</code>
            <dd>String padding type.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-GetNmembers">H5Tget_nmembers</a>
<dt><strong>Signature:</strong>
    <dd><em>intn </em><code>H5Tget_nmembers</code>(<em>hid_t </em><code>type_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function retrieves the number of fields a compound datatype has.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to query.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Number of members datatype has on success, negative on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-GetMemberName">H5Tget_member_name</a>
<dt><strong>Signature:</strong>
    <dd><em>char *</em> <code>H5Tget_member_name</code>(<em>hid_t </em><code>type_id</code>,
        <em>intn</em> <code>fieldno</code>
    )
<dt><strong>Description:</strong>
    <dd>This function retrieves the name of a field of a compound data type.
        Fields are stored in no particular order with numbers 0 through N-1
        where N is the value returned by H5Tget_nmembers().  The name of the
        field is allocated with malloc() and the caller is responsible for
        freeing the memory used by the name.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to query.
        <dt><em>intn</em> <code>fieldno</code>
            <dd>Field number (indexed from 0) of the field name to retrieve.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Valid pointer on success, NULL on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-GetMemberDims">H5Tget_member_dims</a>
<dt><strong>Signature:</strong>
    <dd><em>int</em> <code>H5Tget_member_dims</code>(<em>hid_t </em><code>type_id</code>,
        <em>intn</em> <code>fieldno</code>,
        <em>size_t *</em> <code>dims</code>,
        <em>int *</em> <code>perm</code>
    )
<dt><strong>Description:</strong>
    <dd>This function returns the dimensionality of the field.  The dimensions
        and permuation vector are returned through arguments <code>dims</code>
        and <code>perm</code>, both arrays of at least four elements.  Either
        (or even both) may be null pointers.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to query.
        <dt><em>intn</em> <code>fieldno</code>
            <dd>Field number (indexed from 0) of the field dims to retrieve.
        <dt><em>size_t *</em> <code>dims</code>
            <dd>Pointer to buffer to store the dimensions of the field.
        <dt><em>int *</em> <code>perm</code>
            <dd>Pointer to buffer to store the permutation vector of the field.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Number of dimensions on success, negative on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-GetMemberType">H5Tget_member_type</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t</em> <code>H5Tget_member_type</code>(<em>hid_t </em><code>type_id</code>,
        <em>intn</em> <code>fieldno</code>
    )
<dt><strong>Description:</strong>
    <dd>This function returns the data type of the specified member.  The caller
        should invoke H5Tclose() to release resources associated with the type.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to query.
        <dt><em>intn</em> <code>fieldno</code>
            <dd>Field number (indexed from 0) of the field type to retrieve.
    </dl>
<dt><strong>Returns:</strong>
    <dd>The ID of a copy of the datatype of the field, negative on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-Insert">H5Tinsert</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t</em> <code>H5Tinsert</code>(<em>hid_t </em><code>type_id</code>,
        <em>const char *</em> <code>name</code>,
        <em>off_t</em> <code>offset</code>,
        <em>hid_t</em> <code>field_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function adds another member to the compound data type
        <code>type_id</code>.  The new member has a <code>name</code> which
        must be unique within the compound data type. The <code>offset</code>
        argument defines the start of the member in an instance of the compound
        data type, and <code>field_id</code> is the type of the new member.
    
        <P>Note:    All members of a compound data type must be atomic; a
           compound data type cannot have a member which is a compound data
           type.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of compound datatype to modify.
        <dt><em>const char *</em> <code>name</code>
            <dd>Name of the field to insert.
        <dt><em>off_t</em> <code>offset</code>
            <dd>Offset in memory structure of the field to insert.
        <dt><em>hid_t</em> <code>field_id</code>
            <dd>Datatype ID of the field to insert.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-Pack">H5Tpack</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t</em> <code>H5Tpack</code>(<em>hid_t </em><code>type_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function recursively removes padding from within a compound
        datatype to make it more efficient (space-wise) to store that data.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to modify.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-RegisterHard">H5Tregister_hard</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t</em> <code>H5Tregister_hard</code>(<em>const char
        *</em> <code>name</code>, <em>hid_t </em><code>src_id</code>,
        <em>hid_t</em> <code>dst_id</code>,
        <em>H5T_conv_t</em> <code>func</code>
    )
<dt><strong>Description:</strong>
    <dd>This function registers a hard conversion function for a data type
        conversion path.  The path is specified by the source and destination
        datatypes <code>src_id</code> and <code>dst_id</code>.  A conversion
        path can only have one hard function, so <code>func</code> replaces any
        previous hard function.
        <P>If <code>func</code> is the null pointer then any hard function
        registered for this path is removed from this path.  The soft functions
        are then used when determining which conversion function is appropriate
        for this path.  The <code>name</code> argument is used only
        for debugging and should be a short identifier for the function.
        <P>The type of the conversion function pointer is declared as:
            typedef herr_t (*H5T_conv_t) (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                          size_t nelmts, void *buf, void *bkg);
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>const char *</em> <code>name</code>
            <dd>Name displayed in diagnostic output.
        <dt><em>hid_t</em> <code>src_id</code>
            <dd>ID of source datatype.
        <dt><em>hid_t</em> <code>dst_id</code>
            <dd>ID of destination datatype.
        <dt><em>H5T_conv_t</em> <code>func</code>
            <dd>Function to convert between source and destination datatypes.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-RegisterSoft">H5Tregister_soft</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t</em> <code>H5Tregister_soft</code>(<em>const char
    *</em> <code>name</code>, <em>hid_t </em><code>src_id</code>,
        <em>hid_t</em> <code>dst_id</code>,
        <em>H5T_conv_t</em> <code>func</code>
    )
<dt><strong>Description:</strong>
    <dd>This function registers a soft conversion function by adding it to the
        end of the master soft list and replacing the soft function in all
        applicable existing conversion paths.  The <code>name</code>
        is used only for debugging and should be a short identifier
        for the function.
        <P>The type of the conversion function pointer is declared as:
            typedef herr_t (*H5T_conv_t) (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                          size_t nelmts, void *buf, void *bkg);
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>const char *</em> <code>name</code>
            <dd>Name displayed in diagnostic output.
        <dt><em>hid_t</em> <code>src_id</code>
            <dd>ID of source datatype.
        <dt><em>hid_t</em> <code>dst_id</code>
            <dd>ID of destination datatype.
        <dt><em>H5T_conv_t</em> <code>func</code>
            <dd>Function to convert between source and destination datatypes.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-Unregister">H5Tunregister</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t</em> <code>H5Tunregister</code>(<em>H5T_conv_t</em> <code>func</code>
    )
<dt><strong>Description:</strong>
    <dd>This function removes a conversion function from all conversion paths.
        <P>The type of the conversion function pointer is declared as:
            typedef herr_t (*H5T_conv_t) (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
                          size_t nelmts, void *buf, void *bkg);
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>H5T_conv_t</em> <code>func</code>
            <dd>Function to remove from conversion paths.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Datatype-Close">H5Tclose</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Tclose</code>(<em>hid_t </em><code>type_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function releases a datatype.  Further access through the datatype
        ID is illegal.  Failure to release a datatype with this call will
        result in resource leaks.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>type_id</code>
            <dd>ID of datatype to release.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>


<hr>
<h2><a name="Dataspace">Dataspace Object API Functions</a></h2>
<P>These functions create and manipulate the dataspace in which to store the
elements of a dataset.
<br>
<br>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Dataspace-CreateSimple">H5Screate_simple</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t</em> <code>H5Screate_simple</code>(<em>int</em> <code>rank</code>,
        <em>const hsize_t *</em> <code>dims</code>,
        <em>const hsize_t *</em> <code>maxdims</code>
    )
<dt><strong>Description:</strong>
    <dd>This function creates a new simple data space object and opens it for
        access. The <code>rank</code> is the number of dimensions used in the
        dataspace.  The <code>dims</code> argument is the size of the simple
        dataset and the <code>maxdims</code> argument is the upper limit on the
        size of the dataset.  <code>maxdims</code> may be the null pointer in
        which case the upper limit is the same as <code>dims</code>.  If an
        element of <code>maxdims</code> is zero then the corresponding dimension
        is unlimited, otherwise no element of <code>maxdims</code> should be
        smaller than the corresponding element of <code>dims</code>.  The
        dataspace ID returned from this function should be released with
        H5Sclose or resource leaks will occur.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>int</em> <code>rank</code>
            <dd>Number of dimensions of dataspace.
        <dt><em>const hsize_t *</em> <code>dims</code>
            <dd>An array of the size of each dimension.
        <dt><em>const hsize_t *</em> <code>maxdims</code>
            <dd>An array of the maximum size of each dimension.
    </dl>
<dt><strong>Returns:</strong>
    <dd>A dataspace ID on success, negative on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Dataspace-Copy">H5Scopy</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Scopy</code>(<em>hid_t </em><code>space_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function copies a dataspace.  The dataspace ID returned from this
        function should be released with H5Sclose or resource leaks will occur.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>space_id</code>
            <dd>ID of dataspace to copy.
    </dl>
<dt><strong>Returns:</strong>
    <dd>A dataspace ID on success, negative on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Dataspace-GetNpoints">H5Sget_npoints</a>
<dt><strong>Signature:</strong>
    <dd><em>hsize_t</em> <code>H5Sget_npoints</code>(<em>hid_t </em><code>space_id</code>)
<dt><strong>Description:</strong>
    <dd>This function determines the number of elements in a dataspace.  For
        example, a simple 3-dimensional dataspace with dimensions 2, 3 and 4
        would have 24 elements.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>space_id</code>
            <dd>ID of the dataspace object to query
    </dl>
<dt><strong>Returns:</strong>
    <dd>Number of elements in the dataspace, 0 on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Dataspace-GetNdims">H5Sget_ndims</a>
<dt><strong>Signature:</strong>
    <dd><em>int</em> <code>H5Sget_ndims</code>(<em>hid_t</em> <code>space_id</code>)
<dt><strong>Description:</strong>
    <dd>This function determines the dimensionality (or rank) of a dataspace.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>space_id</code>
            <dd>ID of the dataspace object to query
    </dl>
<dt><strong>Returns:</strong>
    <dd>Number of dimensions in the dataspace, negative on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Dataspace-GetDims">H5Sget_dims</a>
<dt><strong>Signature:</strong>
    <dd><em>int</em> <code>H5Sget_dims</code>(<em>hid_t</em> <code>space_id</code>,
        <em>hsize_t *</em><code>dims</code>,
        <em>hsize_t *</em><code>maxdims</code>
    )
<dt><strong>Description:</strong>
    <dd>This function returns the size of each dimension in a dataspace through
       the <code>dims</code> parameter.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>space_id</code>
            <dd>ID of the dataspace object to query
        <dt><em>hsize_t *</em><code>dims</code>
            <dd>Pointer to array to store the size of each dimension.
        <dt><em>hsize_t *</em><code>maxdims</code>
            <dd>Pointer to array to store the maximum size of each dimension.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Number of dimensions in the dataspace, negative on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Dataspace-IsSimple">H5Sis_simple</a>
<dt><strong>Signature:</strong>
    <dd><em>hbool_t </em><code>H5Sis_simple</code>(<em>hid_t </em><code>space_id</code>)
<dt><strong>Description:</strong>
    <dd>This function determines whether a dataspace object is a simple
        dataspace or not.  [Currently, all dataspace objects are simple
        dataspaces, complex dataspace support will be added in the future]
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>space_id</code>
            <dd>ID of the dataspace object to query
    </dl>
<dt><strong>Returns:</strong>
    <dd>TRUE or FALSE on success, negative on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Dataspace-SetSpace">H5Sset_space</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Sset_space</code>(<em>hid_t </em><code>space_id</code>,
        <em>uint32 </em><code>rank</code>,
        <em>uint32 *</em><code>dims</code>
    )
<dt><strong>Description:</strong>
    <dd>This function determines the number of dimensions and the size of each
        dimension for the space that a dataset is stored within.  This function
        only creates simple dataspace objects.  Setting the rank to a
        value of zero allows scalar objects to be created.  Dimensions are
        specified from slowest to fastest changing in the <code>dims</code>
        array (i.e. 'C' order).  Setting the size of a dimension to zero
        indicates that the dimension is of unlimited size and should be allowed
        to expand.  Currently, only the first dimension in the array (the
        slowest) may be unlimited in size.
        [Currently, all dataspace objects are simple
        dataspaces, complex dataspace support will be added in the future]
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>space_id</code>
            <dd>ID of the dataspace object.
        <dt><em>uint32</em> <code>rank</code>
            <dd>The number of dimensions the object is composed of.
        <dt><em>uint32 *</em> <code>dims</code>
            <dd>An array of the size of each dimension. (NULL for scalar objects)
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Dataspace-SetHyperslab">H5Sset_hyperslab</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t</em> <code>H5Sset_hyperslab</code>(<em>hid_t</em> <code>space_id</code>,
        <em>const hssize_t *</em><code>start</code>,
        <em>const hsize_t *</em><code>count</code>,
        <em>const hsize_t *</em><code>stride</code>
    )
<dt><strong>Description:</strong>
    <dd>This function selects a hyperslab from a simple dataspace.  The stride
        array may be used to sub-sample the hyperslab chosen, a value of 1 in each
        position of the stride array selects contiguous elements in the array,
        a value of 2 selects every other element, etc.  If the stride parameter is
        set to NULL, a contiguous hyperslab is chosen.  The values in the start and
        count arrays may be negative, to allow for selecting hyperslabs in chunked
        datasets which extend in arbitrary directions.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>space_id</code>
            <dd>ID of the dataspace object to set hyperslab in.
        <dt><em>const hssize_t *</em><code>start</code>
            <dd>Pointer to array of starting location for hyperslab.
        <dt><em>const hsize_t *</em><code>count</code>
            <dd>Pointer to array of magnitude of hyperslab.
        <dt><em>const hsize_t *</em><code>stride</code>
            <dd>Pointer to array of stride of hyperslab.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Dataspace-GetHyperslab">H5Sget_hyperslab</a>
<dt><strong>Signature:</strong>
    <dd><em>int</em> <code>H5Sget_hyperslab</code>(<em>hid_t</em> <code>space_id</code>,
        <em>hssize_t *</em><code>start</code>,
        <em>hsize_t *</em><code>count</code>,
        <em>hsize_t *</em><code>stride</code>
    )
<dt><strong>Description:</strong>
    <dd>This function retrieves information about the hyperslab from a simple
        dataspace.  If no hyperslab has been defined then the hyperslab is the
        same as the entire array.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>space_id</code>
            <dd>ID of the dataspace object to set hyperslab in.
        <dt><em>hssize_t *</em><code>start</code>
            <dd>Pointer to array to store starting location of hyperslab.
        <dt><em>hsize_t *</em><code>count</code>
            <dd>Pointer to array to store magnitude of hyperslab.
        <dt><em>hsize_t *</em><code>stride</code>
            <dd>Pointer to array to store stride of hyperslab.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Hyperslab dimensionality on success, negative on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Dataspace-Close">H5Sclose</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Sclose</code>(<em>hid_t </em><code>space_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function releases a dataspace.  Further access through the dataspace
        ID is illegal.  Failure to release a dataspace with this call will
        result in resource leaks.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>space_id</code>
            <dd>ID of dataspace to release.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<h2><a name="Group">Group Object API Functions</a></h2>

<p>A group associates names with objects and provides a mechanism
which can map a name to an object. Since all objects
appear in at least one group (with the possible exception of the root
object) and since objects can have names in more than one group, the
set of all objects in an HDF5 file is a directed graph.  The internal
nodes (nodes with out-degree greater than zero) must be groups while
the leaf nodes (nodes with out-degree zero) are either empty groups or
objects of some other type.  Exactly one object in every non-empty
file is the root object.  The root object always has a positive
in-degree because it is pointed to by the file boot block.

<p>Every file handle returned by <code>H5Fcreate</code> or
<code>H5Fopen</code> maintains an independent current working group
stack, the top item of which is the current working group (the root
object is the current working group if the stack is empty).  The stack
can be manipulated with <code>H5Gset</code>, <code>H5Gpush</code>, and
<code>H5Gpop</code>.

<p>An object name consists of one or more components separated from
one another by slashes. If the name begins with a slash then the
object is located by looking for the first component in the root
object, then looking for the second component in that object, etc.,
until the entire name is traversed.  If the name doesn't begin with a
slash then the traversal begins with the current working group.

<p>The library does not maintain the full absolute name of its current
working group because (1) cycles in the graph can make the name length
unbounded and (2) a group doesn't necessarily have a unique name.  A
more Unix-like hierarchical naming scheme can be implemented on top of
the directed graph scheme by creating a ".." entry in each group that
points to its single predecessor and then a <code>getcwd</code>
function would be trivial.

<br>
<br>

<hr>
    <dl>
      <dt><strong>Name:</strong> <a name="Group-Create">H5Gcreate</a>
      <dt><strong>Signature:</strong>
      <dd><em>herr_t </em><code>H5Gset</code> (<em>hid_t</em>
	<code>file</code>, <em>const char *</em><code>name</code>,
	<em>size_t</em> <code>size_hint</code>)
      <dt><strong>Description:</strong>
      <dd>This function creates a new empty group and gives it a name.
      <dt><strong>Parameters:</strong>
      <dd>
	<dl>
	  <dt><em>hid_t</em> <code>file</code>
	  <dd>The file handle returned by <code>H5Fcreate</code> or
	    <code>H5Fopen</code>.
	  <dt><em>const char *</em><code>name</code>
	  <dd>The absolute or relative name of the new group.
	  <dt><em>size_t</em> <code>size_hint</code>
	  <dd>The size hint is an optional parameter that indicates
	    the number of bytes to reserve for the names that will
	    appear in the group. A conservative estimate could result
	    in multiple system-level I/O requests to read the group
	    name heap while a liberal estimate could result in a
	    single large I/O request even when the group has just a
	    few names.  HDF5 stores each name with a null terminator.
	</dl>
      <dt><strong>Returns:</strong>
      <dd>Returns a negative value on failure, non-negative otherwise.
    </dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Group-Open">H5Sopen</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Gopen</code>(<em>hid_t</em> <code>file_id</code>,
        <em>const char *</em><code>name</code>
    )
<dt><strong>Description:</strong>
    <dd>This function opens an existing group for modification.  When finished,
     call H5Gclose() to close it and release resources.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>file_id</code>
            <dd>ID of file to open group within.
        <dt><em>const char *</em> <code>name</code>
            <dd>Name of group to open.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Valid group ID on success, negative on failure.
</dl>

<hr>
    <dl>
      <dt><strong>Name:</strong> <a name="Group-Set">H5Gset</a>
      <dt><strong>Signature:</strong>
      <dd><em>herr_t </em><code>H5Gset</code> (<em>hid_t</em>
	<code>file</code>, <em>const char *</em><code>name</code>)
      <dt><strong>Description:</strong>
      <dd>This function sets the current working group by modifying the
	top element of the current working group stack or, if the
	stack is empty, by pushing a new element onto the stack.
      <dt><strong>Parameters:</strong>
      <dd>
	<dl>
	  <dt><em>hid_t</em> <code>file</code>
	  <dd>The file handle returned by <code>H5Fcreate</code> or
	    <code>H5Fopen</code>.
	  <dt><em>const char *</em><code>name</code>
	  <dd>The name of the new current working group.  If the name
	    doesn't begin with a slash then it is looked up relative the
	    the previous current working group.
	</dl>
      <dt><strong>Returns:</strong>
      <dd>Returns a negative value on failure, non-negative otherwise.
    </dl>

<hr>
    <dl>
      <dt><strong>Name:</strong> <a name="Group-Push">H5Gpush</a>
      <dt><strong>Signature:</strong>
      <dd><em>herr_t </em><code>H5Gpush</code> (<em>hid_t</em>
	<code>file</code>, <em>const char *</em><code>name</code>)
      <dt><strong>Description:</strong>
      <dd>This function sets the current working group by pushing a
	new element onto the current working group stack.
      <dt><strong>Parameters:</strong>
      <dd>
	<dl>
	  <dt><em>hid_t</em> <code>file</code>
	  <dd>The file handle returned by <code>H5Fcreate</code> or
	    <code>H5Fopen</code>.
	  <dt><em>const char *</em><code>name</code>
	  <dd>The name of the new current working group.  If the name
	    doesn't begin with a slash then it is looked up relative the
	    the previous current working group.
	</dl>
      <dt><strong>Returns:</strong>
      <dd>Returns a negative value on failure, non-negative otherwise.
    </dl>

<hr>
    <dl>
      <dt><strong>Name:</strong> <a name="Group-Pop">H5Gpop</a>
      <dt><strong>Signature:</strong>
      <dd><em>herr_t </em><code>H5Gpop</code> (<em>hid_t</em> 
	<code>file</code>)
      <dt><strong>Description:</strong>
      <dd>This function restores the previous current working group by
	popping an element from the current working group stack.  An
	empty stack implies that the current working group is the root
	object. Attempting to pop an empty stack results in failure.
      <dt><strong>Parameters:</strong>
      <dd>
	<dl>
	  <dt><em>hid_t</em> <code>file</code>
	  <dd>The file handle returned by <code>H5Fcreate</code> or
	    <code>H5Fopen</code>.
	</dl>
      <dt><strong>Returns:</strong>
      <dd>Returns a negative value on failure, non-negative otherwise.
    </dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Group-Close">H5Gclose</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Gclose</code>(<em>hid_t </em><code>group_id</code>
    )
<dt><strong>Description:</strong>
    <dd>This function releases a group.  Further access through the group
        ID is illegal.  Failure to release a group with this call will
        result in resource leaks.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>group_id</code>
            <dd>ID of group to release.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<!--
<hr>
<dl>
<dt><strong>Name:</strong> <a name="Group-GetNumContents">H5Gget_num_contents</a>
<dt><strong>Signature:</strong>
    <dd><em>uint32 </em><code>H5Gget_num_contents</code>(<em>hid_t </em><code>grp_id</code>)
<dt><strong>Description:</strong>
    <dd>This function retrieves the number of objects in the contents of the
        group.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>grp_id</code>
            <dd>ID of the group object to query
    </dl>
<dt><strong>Returns:</strong>
    <dd>Number of objects in group's contents on success, Unegative on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Group-GetContentInfo">H5Gget_content_info</a>
<dt><strong>Signature:</strong>
    <dd><em>uint32 </em><code>H5Gget_content_info</code>(<em>hid_t </em><code>grp_id</code>,
            <em>int32 </em><code>index</code>
    )
<dt><strong>Description:</strong>
    <dd>This function retrieves the type (dataset, dimension, datatype or
        group) of an item in a group.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>grp_id</code>
            <dd>ID of the group object to query
        <dt><em>uint32</em> <code>index</code>
            <dd>Item index in the group to query the type of
    </dl>
<dt><strong>Returns:</strong>
    <dd>The type of the object for an item on success, or Unegative on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Group-GetContentInfoMult">H5Gget_content_info_mult</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Gget_content_info</code>(<em>hid_t </em><code>grp_id</code>,
            <em>int32 </em><code>start_index</code>,
            <em>int32 </em><code>num_items</code>,
            <em>int32 </em><code>itemtype_list[]</code>
    )
<dt><strong>Description:</strong>
    <dd>This function retrieves the type (dataset, dimension, datatype or
        group) of a list of items in a group.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>grp_id</code>
            <dd>ID of the group object to query
        <dt><em>uint32</em> <code>start_index</code>
            <dd>The starting index to query the types of items
        <dt><em>uint32</em> <code>num_items</code>
            <dd>The number of items to query the types of
        <dt><em>uint32</em> <code>itemtype_list[]</code>
            <dd>A list to store the types of the items in
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Group-GetOIDByName">H5Gget_oid_by_name</a>
<dt><strong>Signature:</strong>
    <dd><em>hoid_t </em><code>H5Gget_oid_by_name</code>(<em>hid_t </em><code>grp_id</code>,
            <em>char *</em><code>name</code>
    )
<dt><strong>Description:</strong>
    <dd>This function retrieves the OID of an item in the group which matches
        the name supplied.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>grp_id</code>
            <dd>ID of the group object to query
        <dt><em>char *</em> <code>name</code>
            <dd>The name of the item to find
    </dl>
<dt><strong>Returns:</strong>
    <dd>A valid OID on success, or negative on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Group-GetOIDByIndex">H5Gget_oid_by_index</a>
<dt><strong>Signature:</strong>
    <dd><em>hoid_t </em><code>H5Gget_oid_by_index</code>(<em>hid_t </em><code>grp_id</code>,
            <em>uint32</em><code>index</code>
    )
<dt><strong>Description:</strong>
    <dd>This function retrieves the OID of the n'th item in a group.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>grp_id</code>
            <dd>ID of the group object to query
        <dt><em>uint32</em> <code>index</code>
            <dd>The index of the item in the group
    </dl>
<dt><strong>Returns:</strong>
    <dd>A valid OID on success, or negative on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Group-GetNameByOID">H5Gget_name_by_oid</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Gget_name_by_oid</code>(<em>hid_t </em><code>grp_id</code>,
            <em>hoid_t</em><code>oid</code>
    )
<dt><strong>Description:</strong>
    <dd>This function retrieves the name of the item in a group whose OID
        matches the one supplied.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>grp_id</code>
            <dd>ID of the group object to query
        <dt><em>hoid_t</em> <code>oid</code>
            <dd>The OID of the item in the group
    </dl>
<dt><strong>Returns:</strong>
    <dd>An atom for the string on success, NULL on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Group-GetNameByIndex">H5Gget_name_by_index</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Gget_name_by_index</code>(<em>hid_t </em><code>grp_id</code>,
            <em>uint32</em><code>index</code>
    )
<dt><strong>Description:</strong>
    <dd>This function retrieves the name of the n'th item in a group
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>grp_id</code>
            <dd>ID of the group object to query
        <dt><em>uint32</em> <code>index</code>
            <dd>The index of the item in the group
    </dl>
<dt><strong>Returns:</strong>
    <dd>An atom for the string on success, NULL on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Group-InsertItem">H5Ginsert_item</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Ginsert_item</code>(<em>hid_t </em><code>grp_id</code>,
            <em>hoid_t</em><code>item</code>
    )
<dt><strong>Description:</strong>
    <dd>This function inserts the item into a group
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>grp_id</code>
            <dd>ID of the group object to change
        <dt><em>hoid_t</em> <code>item</code>
            <dd>The OID of the item to insert into the group
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Group-InsertItemMult">H5Ginsert_item_mult</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Ginsert_item_mult</code>(<em>hid_t </em><code>grp_id</code>,
            <em>uint32</em><code>num_items</code>
            <em>hoid_t</em><code>item_list[]</code>
    )
<dt><strong>Description:</strong>
    <dd>This function inserts multiple items into a group
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>grp_id</code>
            <dd>ID of the group object to change
        <dt><em>hoid_t</em> <code>num_items</code>
            <dd>The number of items to insert into the group
        <dt><em>hoid_t</em> <code>item_list[]</code>
            <dd>The OIDs of the items to insert
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Group-RemoveItem">H5Gremove_item</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Gremove_item</code>(<em>hid_t </em><code>grp_id</code>,
            <em>hoid_t</em><code>item</code>
    )
<dt><strong>Description:</strong>
    <dd>This function removes an item from a group
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>grp_id</code>
            <dd>ID of the group object to change
        <dt><em>hoid_t</em> <code>item_list[]</code>
            <dd>The OID of the items to remove
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Group-RemoveItemMult">H5Gremove_item_mult</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Gremove_item_mult</code>(<em>hid_t </em><code>grp_id</code>,
            <em>uint32</em><code>num_items</code>
            <em>hoid_t</em><code>item_list[]</code>
    )
<dt><strong>Description:</strong>
    <dd>This function removes multiple items from a group
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>grp_id</code>
            <dd>ID of the group object to change
        <dt><em>hoid_t</em> <code>num_items</code>
            <dd>The number of items to remove from the group
        <dt><em>hoid_t</em> <code>item_list[]</code>
            <dd>The OIDs of the items to remove
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>
-->

<!--
<hr>
<h2><a name="LinkList">Linked-List Object API Functions</a></h2>
<P>These functions manage in-memory linked lists in various useful ways.
<br>
<br>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-AddToBeginning">H5Ladd_to_beginning</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Ladd_to_beginning</code>(<em>hid_t </em><code>lst_id</code>,
            <em>VOIDP</em><code>item</code>
    )
<dt><strong>Description:</strong>
    <dd>This function adds an object to the beginning of a linked list
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
        <dt><em>VOIDP</em> <code>item</code>
            <dd>A pointer to the object to add to the list.  This must not
                be NULL.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-AddToEnd">H5Ladd_to_end</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Ladd_to_end</code>(<em>hid_t </em><code>lst_id</code>,
            <em>VOIDP</em><code>item</code>
    )
<dt><strong>Description:</strong>
    <dd>This function adds an object to the end of a linked list
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
        <dt><em>VOIDP</em> <code>item</code>
            <dd>A pointer to the object to add to the list.  This must not
                be NULL.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-RemoveFromBeginning">H5Lremove_from_beginning</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Lremove_from_beginning</code>(<em>hid_t </em><code>lst_id</code>)
<dt><strong>Description:</strong>
    <dd>This function removes an object from the front of a linked list and
        returns it.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to an object on success/NULL on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-RemoveFromEnd">H5Lremove_from_end</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Lremove_from_end</code>(<em>hid_t </em><code>lst_id</code>)
<dt><strong>Description:</strong>
    <dd>This function removes an object from the back of a linked list and
        returns it.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to an object on success/NULL on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-RemoveCurrent">H5Lremove_current</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Lremove_current</code>(<em>hid_t </em><code>lst_id</code>)
<dt><strong>Description:</strong>
    <dd>This function removes the current object from the list and returns
        a pointer to it.  The list's current object is moved back to the
        previous item in the list, or set to NULL if the object removed is at
        the beginning of the list.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to an object on success/NULL on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-DeleteAll">H5Ldelete_all</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Ldelete_all</code>(<em>hid_t </em><code>lst_id</code>,
            <em>void</em><code>(*free_func)(VOIDP)</code>
    )
<dt><strong>Description:</strong>
    <dd>This function removes all the objects from a list.  If 
        <code>free_func</code> is not NULL, each object removed from the list
        is passed to <code>free_func</code> before being removed from the list.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
        <dt><em>void</em> <code>(*free_func)(VOIDP)</code>
            <dd>Pointer to the function to call for each item removed from
                the list.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-Index">H5Lindex</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Lindex</code>(<em>hid_t </em><code>lst_id</code>,
            <em>uintn</em><code>indx</code>
    )
<dt><strong>Description:</strong>
    <dd>This function finds the n'th object in a list and returns it.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
        <dt><em>uintn</em> <code>indx</code>
            <dd>Index of the object to return.
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to an object on success/NULL on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-PeekAtBeginning">H5Lpeek_at_beginning</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Lpeek_at_beginning</code>(<em>hid_t </em><code>lst_id</code>)
<dt><strong>Description:</strong>
    <dd>This function returns a pointer to the first object in the list.  If
        the list is empty, NULL is returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to an object on success/NULL on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-PeekAtEnd">H5Lpeek_at_end</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Lpeek_at_end</code>(<em>hid_t </em><code>lst_id</code>)
<dt><strong>Description:</strong>
    <dd>This function returns a pointer to the last object in the list.  If
        the list is empty, NULL is returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to an object on success/NULL on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-FirstInList">H5Lfirst_in_list</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Lfirst_in_list</code>(<em>hid_t </em><code>lst_id</code>)
<dt><strong>Description:</strong>
    <dd>This function returns a pointer to the first object in the list, and
        marks it as the current object.  If the list is empty, NULL is returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to an object on success/NULL on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-LastInList">H5Llast_in_list</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Llast_in_list</code>(<em>hid_t </em><code>lst_id</code>)
<dt><strong>Description:</strong>
    <dd>This function returns a pointer to the last object in the list, and
        marks it as the current object.  If the list is empty, NULL is returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to an object on success/NULL on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-CurrentInList">H5Lcurrent_in_list</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Lcurrent_in_list</code>(<em>hid_t </em><code>lst_id</code>)
<dt><strong>Description:</strong>
    <dd>This function returns a pointer to the object that is considered the
        "current object" in the list.
        If the current object has been removed, or current points before or
        after the list or the list is empty, NULL is returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to an object on success/NULL on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-NextInList">H5Lnext_in_list</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Lnext_in_list</code>(<em>hid_t </em><code>lst_id</code>)
<dt><strong>Description:</strong>
    <dd>This function returns a pointer to the next object in the list and marks
        it as the current object.
        If the end of the list has been reached or the list is empty, NULL is
        returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to an object on success/NULL on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-PreviousInList">H5Lprevious_in_list</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Lprevious_in_list</code>(<em>hid_t </em><code>lst_id</code>)
<dt><strong>Description:</strong>
    <dd>This function returns a pointer to the previous object in the list and
        marks it as the current object.
        If the beginning of the list has been reached or the list is empty, NULL
        is returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to an object on success/NULL on failure
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-ResetToBeginning">H5Lreset_to_beginning</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Lreset_to_beginning</code>(<em>hid_t </em><code>lst_id</code>)
<dt><strong>Description:</strong>
    <dd>This function resets the "current object" to the beginning of the list.
        Therefore the next object in the list is the first object.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-ResetToEnd">H5Lreset_to_end</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Lreset_to_end</code>(<em>hid_t </em><code>lst_id</code>)
<dt><strong>Description:</strong>
    <dd>This function resets the "current object" to the end of the list.
        Therefore the previous object in the list is the last object.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-NumOfObjects">H5Lnum_of_objects</a>
<dt><strong>Signature:</strong>
    <dd><em>uintn </em><code>H5Lnum_of_objects</code>(<em>hid_t </em><code>lst_id</code>)
<dt><strong>Description:</strong>
    <dd>This function returns the number of objects in the list.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
    </dl>
<dt><strong>Returns:</strong>
    <dd>The number of nodes in the list (possibly zero) on success or UFAIL on
        failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-IsEmpty">H5Lis_empty</a>
<dt><strong>Signature:</strong>
    <dd><em>hbool_t </em><code>H5Lis_empty</code>(<em>hid_t </em><code>lst_id</code>)
<dt><strong>Description:</strong>
    <dd>This function determines if the list is empty.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
    </dl>
<dt><strong>Returns:</strong>
    <dd>TRUE if the list is empty, FALSE if the list has objects, negative on
        failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-IsInList">H5Lis_in_list</a>
<dt><strong>Signature:</strong>
    <dd><em>hbool_t </em><code>H5Lis_in_list</code>(<em>hid_t </em><code>lst_id</code>,
            <em>VOIDP</em><code>search_ptr</code>
    )
<dt><strong>Description:</strong>
    <dd>This function determines if an object is in the list.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
        <dt><em>VOIDP</em> <code>search_ptr</code>
            <dd>Pointer to look for in list
    </dl>
<dt><strong>Returns:</strong>
    <dd>TRUE if the list contains the pointer, FALSE if the list has does not,
        negative on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-CopyList">H5Lcopy_list</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Lcopy_list</code>(<em>hid_t </em><code>lst_id</code>)
<dt><strong>Description:</strong>
    <dd>This function makes a copy of the list.  The objects themselves are not
        copied, only new references to them are made.  The new list has no
        current object set.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
    </dl>
<dt><strong>Returns:</strong>
    <dd>A valid list atom on success, negative on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-PerformOnList">H5Lperform_on_list</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Lperform_on_list</code>(<em>hid_t </em><code>lst_id</code>,
            <em>void</em><code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>,
            <em>VOIDP</em><code>args</code>,
    )
<dt><strong>Description:</strong>
    <dd>This function performs the specified function on each object in the
        list.  Any options arguments required can be passed through the "args"
        pointer.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
        <dt><em>void</em> <code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>
            <dd>Pointer to the function to operate on the objects
        <dt><em>VOIDP</em> <code>args</code>
            <dd>Pointer any additional arguments needed by the function as
                it is operating on the objects.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-FirstThat">H5Lfirst_that</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Lfirst_that</code>(<em>hid_t </em><code>lst_id</code>,
            <em>intn</em><code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>,
            <em>VOIDP</em><code>args</code>,
    )
<dt><strong>Description:</strong>
    <dd>This function will find and return the first object in the list which
        causes the specified function to return a TRUE (non-zero) value.  Any
        optional arguments required can be passed through the "args" variable.
        The found object is then marked as the current object.  If no objects
        in the list meet the criteria of the specified function or an error
        occurs, NULL is returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
        <dt><em>intn</em> <code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>
            <dd>Pointer to the function to operate on the objects
        <dt><em>VOIDP</em> <code>args</code>
            <dd>Pointer any additional arguments needed by the function as
                it is operating on the objects.
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to an object on success/NULL on failure or no matching objects
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-NextThat">H5Lnext_that</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Lnext_that</code>(<em>hid_t </em><code>lst_id</code>,
            <em>intn</em><code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>,
            <em>VOIDP</em><code>args</code>,
    )
<dt><strong>Description:</strong>
    <dd>This function will find and return the next object in the list which
        causes the specified function to return a TRUE (non-zero) value.  Any
        optional arguments required can be passed through the "args" variable.
        The found object is then marked as the current object.  If no objects
        in the list meet the criteria of the specified function or an error
        occurs, NULL is returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
        <dt><em>intn</em> <code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>
            <dd>Pointer to the function to operate on the objects
        <dt><em>VOIDP</em> <code>args</code>
            <dd>Pointer any additional arguments needed by the function as
                it is operating on the objects.
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to an object on success/NULL on failure or no matching objects
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-PreviousThat">H5Lprevious_that</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Lprevious_that</code>(<em>hid_t </em><code>lst_id</code>,
            <em>intn</em><code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>,
            <em>VOIDP</em><code>args</code>,
    )
<dt><strong>Description:</strong>
    <dd>This function will find and return the previous object in the list which
        causes the specified function to return a TRUE (non-zero) value.  Any
        optional arguments required can be passed through the "args" variable.
        The found object is then marked as the current object.  If no objects
        in the list meet the criteria of the specified function or an error
        occurs, NULL is returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
        <dt><em>intn</em> <code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>
            <dd>Pointer to the function to operate on the objects
        <dt><em>VOIDP</em> <code>args</code>
            <dd>Pointer any additional arguments needed by the function as
                it is operating on the objects.
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to an object on success/NULL on failure or no matching objects
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-LastThat">H5Llast_that</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Llast_that</code>(<em>hid_t </em><code>lst_id</code>,
            <em>intn</em><code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>,
            <em>VOIDP</em><code>args</code>,
    )
<dt><strong>Description:</strong>
    <dd>This function will find and return the last object in the list which
        causes the specified function to return a TRUE (non-zero) value.  Any
        optional arguments required can be passed through the "args" variable.
        The found object is then marked as the current object.  If no objects
        in the list meet the criteria of the specified function or an error
        occurs, NULL is returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
        <dt><em>intn</em> <code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>
            <dd>Pointer to the function to operate on the objects
        <dt><em>VOIDP</em> <code>args</code>
            <dd>Pointer any additional arguments needed by the function as
                it is operating on the objects.
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to an object on success/NULL on failure or no matching objects
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-AllSuchThat">H5Lall_such_that</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Lall_such_that</code>(<em>hid_t </em><code>lst_id</code>,
            <em>intn</em><code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>,
            <em>VOIDP</em><code>args</code>,
    )
<dt><strong>Description:</strong>
    <dd>This function will return a new list containing all of the objects in
        the list which cause the specified function to return a TRUE (non-zero)
        value.  Any optional arguments required can be passed through the "args"
        variable.  The objects themselves are not copied, onle new references
        to them are made.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
        <dt><em>intn</em> <code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>
            <dd>Pointer to the function to operate on the objects
        <dt><em>VOIDP</em> <code>args</code>
            <dd>Pointer any additional arguments needed by the function as
                it is operating on the objects.
    </dl>
<dt><strong>Returns:</strong>
    <dd>A valid list atom on success, negative on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="LinkList-RemoveAllSuchThat">H5Lremove_all_such_that</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Lremove_all_such_that</code>(<em>hid_t </em><code>lst_id</code>,
            <em>intn</em><code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>,
            <em>VOIDP</em><code>args</code>,
    )
<dt><strong>Description:</strong>
    <dd>This function will remove all of the objects in the list which cause
        the specified function to return a TRUE (non-zero) value.  Any optional
        arguments required can be passed through the "args" variable.  Note that
        the memory for the objects will not be reclaimed, so if the objects have
        no other references, it is best to avoid this function and remove the
        objects one by one, freeing them when necessary.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>lst_id</code>
            <dd>ID of the list object
        <dt><em>intn</em> <code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>
            <dd>Pointer to the function to operate on the objects
        <dt><em>VOIDP</em> <code>args</code>
            <dd>Pointer any additional arguments needed by the function as
                it is operating on the objects.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<h2><a name="TBBT">Threaded, Balanced, Binary-Tree Object API Functions</a></h2>
<P>These functions manage in-memory TBBTs in various useful ways.
<br>
<br>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-Add">H5Badd</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Badd</code>(<em>hid_t </em><code>tree_id</code>,
            <em>VOIDP</em><code>item</code>,
            <em>VOIDP</em><code>key</code>
    )
<dt><strong>Description:</strong>
    <dd>This function inserts a new node having a key value of <code>key</code>
        and a data pointer of <code>item</code> into the tree.  If a node
        already exists in the tree with the same key value or an error occurs,
        negative is returned, otherwise, zero is returned.  The comparison
        function which the tree was created with is used to determine the
        location of the new node in the tree.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
        <dt><em>VOIDP</em> <code>item</code>
            <dd>Pointer to the data of the object to insert into the tree.
        <dt><em>VOIDP</em> <code>key</code>
            <dd>Pointer to the key of the object to insert into the tree.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-Remove">H5Bremove</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Bremove</code>(<em>hid_t </em><code>tree_id</code>,
            <em>VOIDP</em><code>key</code>
    )
<dt><strong>Description:</strong>
    <dd>This function removes a node with a key value of <code>key</code>.
        The data pointer corresponding to the key is returned on success, or
        a NULL value is returned on failure.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
        <dt><em>VOIDP</em> <code>key</code>
            <dd>Pointer to the key of the object to remove from the tree.
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to the data item on success, NULL on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-RemoveAll">H5Bremove_all</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Bremove_all</code>(<em>hid_t </em><code>tree_id</code>,
            <em>void</em><code>(*free_func)(VOIDP)</code>
    )
<dt><strong>Description:</strong>
    <dd>This function removes all nodes from the tree.  If 
        <code>free_func</code> is not NULL, each object removed from the list
        is passed to <code>free_func</code> before being removed from the list.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
        <dt><em>void</em> <code>(*free_func)(VOIDP)</code>
            <dd>Pointer to the function to call for each item removed from
                the list.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-RemoveCurrent">H5Bremove_current</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Bremove_all</code>(<em>hid_t </em><code>tree_id</code>)
<dt><strong>Description:</strong>
    <dd>This function removes the "current object" from the tree and returns
        a pointer to it.  The tree's current object is moved back to the
        previous node in the tree, or set to NULL if the object removed is at
        the beginning of the tree.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to the data item removed on success, NULL on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-PeekAtBeginning">H5Bpeek_at_beginning</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Bpeek_at_beginning</code>(<em>hid_t </em><code>tree_id</code>)
<dt><strong>Description:</strong>
    <dd>This function returns a pointer to the first object in the tree.  If
        the tree is empty, NULL is returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to the first data item on success, NULL on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-PeekAtEnd">H5Bpeek_at_end</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Bpeek_at_end</code>(<em>hid_t </em><code>tree_id</code>)
<dt><strong>Description:</strong>
    <dd>This function returns a pointer to the last object in the tree.  If
        the tree is empty, NULL is returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to the last data item on success, NULL on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-Find">H5Bfind</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Bfind</code>(<em>hid_t </em><code>tree_id</code>,
            <em>VOIDP</em><code>key</code>
    )
<dt><strong>Description:</strong>
    <dd>This function returns a pointer to the object in the tree who's key
        matches the argument passed in.  If the no match is found, NULL is
        returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
        <dt><em>VOIDP</em> <code>key</code>
            <dd>Pointer to the key of the object to search for the tree.
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to the data item on success, NULL on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-Index">H5Bindex</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Bindex</code>(<em>hid_t </em><code>tree_id</code>,
            <em>uintn</em><code>indx</code>
    )
<dt><strong>Description:</strong>
    <dd>This function finds the n'th object in a tree and returns it.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
        <dt><em>uintn</em> <code>indx</code>
            <dd>Index of the object to return.
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to the data item on success, NULL on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-FirstInTree">H5Bfirst_in_tree</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Bfirst_in_tree</code>(<em>hid_t </em><code>tree_id</code>)
<dt><strong>Description:</strong>
    <dd>This function returns a pointer to the first object in the tree, and
        marks it as the current object.  If the tree is empty, NULL is returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to the data item on success, NULL on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-LastInTree">H5Blast_in_tree</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Blast_in_tree</code>(<em>hid_t </em><code>tree_id</code>)
<dt><strong>Description:</strong>
    <dd>This function returns a pointer to the last object in the tree, and
        marks it as the current object.  If the tree is empty, NULL is returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to the data item on success, NULL on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-CurrentInTree">H5Bcurrent_in_tree</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Bcurrent_in_tree</code>(<em>hid_t </em><code>tree_id</code>)
<dt><strong>Description:</strong>
    <dd>This function returns a pointer to the object that is considered the
        "current object" in the tree.
        If the current object has been removed, or current points before or
        after the tree or the tree is empty, NULL is returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to the data item on success, NULL on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-NextInTree">H5Bnext_in_tree</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Bnext_in_tree</code>(<em>hid_t </em><code>tree_id</code>)
<dt><strong>Description:</strong>
    <dd>This function returns a pointer to the next object in the tree and marks
        it as the current object.
        If the end of the tree has been reached or the tree is empty, NULL is
        returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to the data item on success, NULL on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-PreviousInTree">H5Bprevious_in_tree</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Bprevious_in_tree</code>(<em>hid_t </em><code>tree_id</code>)
<dt><strong>Description:</strong>
    <dd>This function returns a pointer to the previous object in the tree and
        marks it as the current object.
        If the beginning of the tree has been reached or the tree is empty, NULL
        is returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to the data item on success, NULL on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-ResetToBeginning">H5Breset_to_beginning</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Breset_to_beginning</code>(<em>hid_t </em><code>tree_id</code>)
<dt><strong>Description:</strong>
    <dd>This function resets the "current object" to the beginning of the tree.
        Therefore the next object in the tree is the first object.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to the data item on success, NULL on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-ResetToEnd">H5Breset_to_end</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Breset_to_end</code>(<em>hid_t </em><code>tree_id</code>)
<dt><strong>Description:</strong>
    <dd>This function resets the "current object" to the end of the tree.
        Therefore the previous object in the tree is the last object.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to the data item on success, NULL on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-NumOfObjects">H5Bnum_of_objects</a>
<dt><strong>Signature:</strong>
    <dd><em>uintn </em><code>H5Bnum_of_objects</code>(<em>hid_t </em><code>tree_id</code>)
<dt><strong>Description:</strong>
    <dd>This function returns the number of objects in the tree.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
    </dl>
<dt><strong>Returns:</strong>
    <dd>The number of nodes in the tree (possibly zero) on success or UFAIL on
        failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-IsEmpty">H5Bis_empty</a>
<dt><strong>Signature:</strong>
    <dd><em>hbool_t </em><code>H5Bis_empty</code>(<em>hid_t </em><code>tree_id</code>)
<dt><strong>Description:</strong>
    <dd>This function determines if the tree is empty.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
    </dl>
<dt><strong>Returns:</strong>
    <dd>TRUE if the tree is empty, FALSE if the tree has objects, negative on
        failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-IsInTree">H5Bis_in_tree</a>
<dt><strong>Signature:</strong>
    <dd><em>hbool_t </em><code>H5Bis_in_tree</code>(<em>hid_t </em><code>tree_id</code>,
            <em>VOIDP</em><code>item</code>,
            <em>VOIDP</em><code>key</code>
    )
<dt><strong>Description:</strong>
    <dd>This function determines if an object is in the tree.  If 
    <code>item</code> is NULL, only the key pointer will be used to search
    for nodes in the tree.  If <code>key</code> is NULL, only the item pointer
    will be used to search for nodes in the tree.  If both <code>item</code>
    and <code>key</code> are not NULL, only a node which matches both pointers
    will be considered a match for the search.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
        <dt><em>VOIDP</em> <code>item</code>
            <dd>Pointer to the data of the object to search for in the tree.
        <dt><em>VOIDP</em> <code>key</code>
            <dd>Pointer to the key of the object to search for in the tree.
    </dl>
<dt><strong>Returns:</strong>
    <dd>TRUE if a search node is found, FALSE if no nodes match, negative on
        failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-CopyTree">H5Bcopy_tree</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Bcopy_tree</code>(<em>hid_t </em><code>tree_id</code>)
<dt><strong>Description:</strong>
    <dd>This function makes a copy of the tree.  The objects themselves are not
        copied, only new references to them are made.  The new tree has no
        current object set.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
    </dl>
<dt><strong>Returns:</strong>
    <dd>A valid tree atom on success, negative on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-PerformOnTree">H5Bperform_on_tree</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Bperform_on_tree</code>(<em>hid_t </em><code>tree_id</code>,
            <em>void</em><code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>,
            <em>VOIDP</em><code>args</code>,
    )
<dt><strong>Description:</strong>
    <dd>This function performs the specified function on each object in the
        tree.  Any options arguments required can be passed through the "args"
        pointer.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
        <dt><em>void</em> <code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>
            <dd>Pointer to the function to operate on the objects
        <dt><em>VOIDP</em> <code>args</code>
            <dd>Pointer any additional arguments needed by the function as
                it is operating on the objects.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-FirstThat">H5Bfirst_that</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Bfirst_that</code>(<em>hid_t </em><code>tree_id</code>,
            <em>intn</em><code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>,
            <em>VOIDP</em><code>args</code>,
    )
<dt><strong>Description:</strong>
    <dd>This function will find and return the first object in the tree which
        causes the specified function to return a TRUE (non-zero) value.  Any
        optional arguments required can be passed through the "args" variable.
        The found object is then marked as the current object.  If no objects
        in the tree meet the criteria of the specified function or an error
        occurs, NULL is returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
        <dt><em>intn</em> <code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>
            <dd>Pointer to the function to operate on the objects
        <dt><em>VOIDP</em> <code>args</code>
            <dd>Pointer any additional arguments needed by the function as
                it is operating on the objects.
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to an object on success/NULL on failure or no matching objects
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-NextThat">H5Bnext_that</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Bnext_that</code>(<em>hid_t </em><code>tree_id</code>,
            <em>intn</em><code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>,
            <em>VOIDP</em><code>args</code>,
    )
<dt><strong>Description:</strong>
    <dd>This function will find and return the next object in the tree which
        causes the specified function to return a TRUE (non-zero) value.  Any
        optional arguments required can be passed through the "args" variable.
        The found object is then marked as the current object.  If no objects
        in the tree meet the criteria of the specified function or an error
        occurs, NULL is returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
        <dt><em>intn</em> <code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>
            <dd>Pointer to the function to operate on the objects
        <dt><em>VOIDP</em> <code>args</code>
            <dd>Pointer any additional arguments needed by the function as
                it is operating on the objects.
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to an object on success/NULL on failure or no matching objects
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-PreviousThat">H5Bprevious_that</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Bprevious_that</code>(<em>hid_t </em><code>tree_id</code>,
            <em>intn</em><code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>,
            <em>VOIDP</em><code>args</code>,
    )
<dt><strong>Description:</strong>
    <dd>This function will find and return the previous object in the tree which
        causes the specified function to return a TRUE (non-zero) value.  Any
        optional arguments required can be passed through the "args" variable.
        The found object is then marked as the current object.  If no objects
        in the tree meet the criteria of the specified function or an error
        occurs, NULL is returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
        <dt><em>intn</em> <code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>
            <dd>Pointer to the function to operate on the objects
        <dt><em>VOIDP</em> <code>args</code>
            <dd>Pointer any additional arguments needed by the function as
                it is operating on the objects.
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to an object on success/NULL on failure or no matching objects
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-LastThat">H5Blast_that</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Blast_that</code>(<em>hid_t </em><code>tree_id</code>,
            <em>intn</em><code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>,
            <em>VOIDP</em><code>args</code>,
    )
<dt><strong>Description:</strong>
    <dd>This function will find and return the last object in the tree which
        causes the specified function to return a TRUE (non-zero) value.  Any
        optional arguments required can be passed through the "args" variable.
        The found object is then marked as the current object.  If no objects
        in the tree meet the criteria of the specified function or an error
        occurs, NULL is returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
        <dt><em>intn</em> <code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>
            <dd>Pointer to the function to operate on the objects
        <dt><em>VOIDP</em> <code>args</code>
            <dd>Pointer any additional arguments needed by the function as
                it is operating on the objects.
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to an object on success/NULL on failure or no matching objects
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-AllSuchThat">H5Ball_such_that</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Ball_such_that</code>(<em>hid_t </em><code>tree_id</code>,
            <em>intn</em><code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>,
            <em>VOIDP</em><code>args</code>,
    )
<dt><strong>Description:</strong>
    <dd>This function will return a new tree containing all of the objects in
        the tree which cause the specified function to return a TRUE (non-zero)
        value.  Any optional arguments required can be passed through the "args"
        variable.  The objects themselves are not copied, onle new references
        to them are made.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
        <dt><em>intn</em> <code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>
            <dd>Pointer to the function to operate on the objects
        <dt><em>VOIDP</em> <code>args</code>
            <dd>Pointer any additional arguments needed by the function as
                it is operating on the objects.
    </dl>
<dt><strong>Returns:</strong>
    <dd>A valid tree atom on success, negative on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="TBBT-RemoveAllSuchThat">H5Bremove_all_such_that</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Bremove_all_such_that</code>(<em>hid_t </em><code>tree_id</code>,
            <em>intn</em><code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>,
            <em>VOIDP</em><code>args</code>,
    )
<dt><strong>Description:</strong>
    <dd>This function will remove all of the objects in the tree which cause
        the specified function to return a TRUE (non-zero) value.  Any optional
        arguments required can be passed through the "args" variable.  Note that
        the memory for the objects will not be reclaimed, so if the objects have
        no other references, it is best to avoid this function and remove the
        objects one by one, freeing them when necessary.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>tree_id</code>
            <dd>ID of the TBBT object
        <dt><em>intn</em> <code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>
            <dd>Pointer to the function to operate on the objects
        <dt><em>VOIDP</em> <code>args</code>
            <dd>Pointer any additional arguments needed by the function as
                it is operating on the objects.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<h2><a name="BitVector">Bit-Vector Object API Functions</a></h2>
<P>These functions manage in-memory bit-vectors used to provide "set"
operations and maintain groups of flags about file information.
<br>
<br>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="BitVector-Set">H5Vset</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Vset</code>(<em>hid_t </em><code>bv_id</code>,
            <em>uint32</em><code>bit_num</code>,
            <em>hbool_t</em><code>value</code>
    )
<dt><strong>Description:</strong>
    <dd>This function sets a bit in a bit-vector to a given boolean value.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>bv_id</code>
            <dd>ID of the bit-vector object.
        <dt><em>uint32</em> <code>bit_num</code>
            <dd>Which bit in the vector to set.
        <dt><em>hbool_t</em> <code>value</code>
            <dd>Value to set the bit to.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="BitVector-Get">H5Vget</a>
<dt><strong>Signature:</strong>
    <dd><em>hbool_t </em><code>H5Vget</code>(<em>hid_t </em><code>bv_id</code>,
            <em>uint32</em><code>bit_num</code>
    )
<dt><strong>Description:</strong>
    <dd>This function gets the value of a bit in a bit-vector.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>bv_id</code>
            <dd>ID of the bit-vector object.
        <dt><em>uint32</em> <code>bit_num</code>
            <dd>Which bit in the vector to get.
    </dl>
<dt><strong>Returns:</strong>
    <dd>Value of the bit or negative on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="BitVector-Clear">H5Vclear</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Vclear</code>(<em>hid_t </em><code>bv_id</code>,
            <em>hbool_t</em><code>value</code>
    )
<dt><strong>Description:</strong>
    <dd>This function clears an entire bit-vector to a given boolean value.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>bv_id</code>
            <dd>ID of the bit-vector object.
        <dt><em>hbool_t</em> <code>value</code>
            <dd>The value to clear the bit-vector to.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="BitVector-Size">H5Vsize</a>
<dt><strong>Signature:</strong>
    <dd><em>uint32 </em><code>H5Vclear</code>(<em>hid_t </em><code>bv_id</code>)
<dt><strong>Description:</strong>
    <dd>This function reports the number of bits used in a bit-vector.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>bv_id</code>
            <dd>ID of the bit-vector object.
    </dl>
<dt><strong>Returns:</strong>
    <dd>The number of bits in the bit-vector (possibly zero) on success or
        UFAIL on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="BitVector-Find">H5Vfind</a>
<dt><strong>Signature:</strong>
    <dd><em>uint32 </em><code>H5Vfind</code>(<em>hid_t </em><code>bv_id</code>,
            <em>hbool_t</em><code>value</code>
    )
<dt><strong>Description:</strong>
    <dd>This function finds the first bit in a bit-vector with a given value.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>bv_id</code>
            <dd>ID of the bit-vector object.
        <dt><em>hbool_t</em> <code>value</code>
            <dd>The value to search for.
    </dl>
<dt><strong>Returns:</strong>
    <dd>The position of the first bit with the given value on success or UFAIL
        on failure.
</dl>

<hr>
<h2><a name="Atom">Atom Object API Functions</a></h2>
<P>These functions manage in-memory atoms, which provide a portable and 
protected way of refering to memory structures.
<br>
<br>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Atom-Register">H5Aregister</a>
<dt><strong>Signature:</strong>
    <dd><em>hid_t </em><code>H5Aregister</code>(<em>hgroup_t </em><code>grp_id</code>,
            <em>VOIDP</em><code>ptr</code>
    )
<dt><strong>Description:</strong>
    <dd>This function registers a pointer (to a data-structure, usually) in a
        group and provides an atom for it.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hgroup_t</em> <code>grp_id</code>
            <dd>ID of the atom group.
        <dt><em>VOIDP</em> <code>ptr</code>
            <dd>The pointer (to a data-structure) to register in the group.
    </dl>
<dt><strong>Returns:</strong>
    <dd>A value atom on success, negative on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Atom-Unregister">H5Aunregister</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Aunregister</code>(<em>hid_t </em><code>atm</code>)
<dt><strong>Description:</strong>
    <dd>This function removes an atom from a group and returns a pointer to
        the structure which was registered.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>atm</code>
            <dd>Atom to remove.
    </dl>
<dt><strong>Returns:</strong>
    <dd>A valid memory pointer on success, NULL on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Atom-LookupObject">H5Alookup_object</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Alookup_object</code>(<em>hid_t </em><code>atm</code>)
<dt><strong>Description:</strong>
    <dd>This function retrieves the memory pointer which is associated with
        the atom.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>atm</code>
            <dd>Atom to look up.
    </dl>
<dt><strong>Returns:</strong>
    <dd>A valid memory pointer on success, NULL on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Atom-LookupGroup">H5Alookup_group</a>
<dt><strong>Signature:</strong>
    <dd><em>hgroup_t </em><code>H5Alookup_group</code>(<em>hid_t </em><code>atm</code>)
<dt><strong>Description:</strong>
    <dd>This function retrieves the group that the atom is in.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>atm</code>
            <dd>Atom to look up.
    </dl>
<dt><strong>Returns:</strong>
    <dd>A valid atom group on success, negative on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="Atom-Search">H5Asearch</a>
<dt><strong>Signature:</strong>
    <dd><em>VOIDP </em><code>H5Asearch</code>(<em>hgroup_t </em><code>grp</code>,
            <em>intn</em><code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>,
            <em>VOIDP</em><code>args</code>,
    )
<dt><strong>Description:</strong>
    <dd>This function will find and return the first object in the atomic
        group which causes the specified function to return a TRUE (non-zero)
        value.  Any optional arguments required can be passed through the
        "args" variable.  Currently, there is no way to resume a search.
        If no objects in the group meet the criteria of the specified function
        or an error occurs, NULL is returned.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hgroup_t</em> <code>grp</code>
            <dd>ID of the atom group to search.
        <dt><em>intn</em> <code>(*fcn)(VOIDP /* object */, VOIDP /* args */)</code>
            <dd>Pointer to the function to operate on the objects
        <dt><em>VOIDP</em> <code>args</code>
            <dd>Pointer any additional arguments needed by the function as
                it is operating on the objects.
    </dl>
<dt><strong>Returns:</strong>
    <dd>A pointer to an object on success/NULL on failure or no matching objects
</dl>

<hr>
<h2><a name="String">String Object API Functions</a></h2>
<P>These functions manage in-memory character strings in an object-oriented
way.
<br>
<br>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="String-Copy">H5Scopy</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Scopy</code>(<em>hid_t </em><code>strg_id1</code>,
            <em>hid_t</em><code>strg_id2</code>
    )
<dt><strong>Description:</strong>
    <dd>This function copies a string from one string object to another.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>strg_id1</code>
            <dd>ID of the destination string.
        <dt><em>hid_t</em> <code>strg_id2</code>
            <dd>ID of the source string.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="String-Convert">H5Sconvert</a>
<dt><strong>Signature:</strong>
    <dd><em>herr_t </em><code>H5Sconvert</code>(<em>hid_t </em><code>strg_id/code>,
            <em>char *</em><code>buf</code>
    )
<dt><strong>Description:</strong>
    <dd>This function copies a string object into a zero-terminated character
        buffer.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>strg_id</code>
            <dd>ID of the destination string.
        <dt><em>char *</em> <code>buf</code>
            <dd>Character buffer to store string in.
    </dl>
<dt><strong>Returns:</strong>
    <dd>zero/negative
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="String-Len">H5Slen</a>
<dt><strong>Signature:</strong>
    <dd><em>uintn </em><code>H5Slen</code>(<em>hid_t </em><code>strg_id</code>)
<dt><strong>Description:</strong>
    <dd>This function return the length of a string in characters.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>strg_id</code>
            <dd>ID of the string.
    </dl>
<dt><strong>Returns:</strong>
    <dd>The length of the string (possibly 0) on success, or UFAIL on failure.
</dl>

<hr>
<dl>
<dt><strong>Name:</strong> <a name="String-Compare">H5Scompare</a>
<dt><strong>Signature:</strong>
    <dd><em>intn </em><code>H5Scompare</code>(<em>hid_t </em><code>strg_id1</code>,
            <em>hid_t</em><code>strg_id2</code>
    )
<dt><strong>Description:</strong>
    <dd>This function compares the two strings, returning an integer less than,
        equal to, or greater than zero, indicating that the string referenced
        by <code>strg_id1</code> is less than, equal to, or greater than the
        string referenced by <code>strg_id2</code>.
<dt><strong>Parameters:</strong>
    <dl>
        <dt><em>hid_t</em> <code>strg_id1</code>
            <dd>ID of the first string.
        <dt><em>hid_t</em> <code>strg_id1</code>
            <dd>ID of the second string.
    </dl>
<dt><strong>Returns:</strong>
    <dd>An integer less than, equal to, or greater than zero based on the values
        of the strings.
</dl>
-->

<hr>
<h2><a name="Glossary">Glossary of data-types used</a></h2>
<P>Since many of the typedefs in the HDF5 API are not well-defined yet,
the types below may change radically en route to a final API...
<br>
<br>

<a name="Glossary-Basic">Basic Types:</a>
<ul>
    <li>char     - 8-bit character (only for ASCII information)
    <li>int8     - 8-bit signed integer
    <li>uint8    - 8-bit unsigned integer
    <li>int16    - 16-bit signed integer
    <li>uint16   - 16-bit unsigned integer
    <li>int32    - 32-bit signed integer
    <li>uint32   - 32-bit unsigned integer
    <li>intn     - "native" signed integer
    <li>uintn    - "native" unsigned integer
    <li>int64    - 64-bit signed integer (new)
    <li>uint64   - 64-bit unsigned integer (new)
    <li>float32  - 32-bit IEEE float
    <li>float64  - 64-bit IEEE float
</ul>

<a name="Glossary-Complex">Complex Types:</a>
<ul>
    <li>hid_t   - 32-bit unsigned integer used as ID for memory objects
    <li>hoid_t  - 32-bit unsigned integer (currently) used as ID for disk-based
                objects
    <li>hbool_t - boolean to indicate true/false/error codes from functions
    <li>herr_t  - 32-bit integer to indicate succeed/fail codes from functions
</ul>

<a name="Glossary-DiskIO">Disk I/O Types:</a>
<ul>
    <li>hoff_t  - (64-bit?) offset on disk in bytes
    <li>hlen_t  - (64-bit?) length on disk in bytes
</ul>