summaryrefslogtreecommitdiffstats
path: root/doc/html/H5.api.html
diff options
context:
space:
mode:
Diffstat (limited to 'doc/html/H5.api.html')
-rw-r--r--doc/html/H5.api.html4611
1 files changed, 4611 insertions, 0 deletions
diff --git a/doc/html/H5.api.html b/doc/html/H5.api.html
new file mode 100644
index 0000000..b2402a5
--- /dev/null
+++ b/doc/html/H5.api.html
@@ -0,0 +1,4611 @@
+<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-GetCreateTemplate">H5Fget_create_template</a>
+ <li><a href="#File-Close">H5Fclose</a>
+</ol>
+
+<li><a href="#Template">Template</a> - H5P&lt;name&gt; - API for manipulating object templates
+<ol type=A>
+ <li><a href="#Template-Create">H5Pcreate</a>
+ <li><a href="#Template-GetClass">H5Pget_class</a>
+ <li><a href="#Template-Copy">H5Pcopy</a>
+ <li><a href="#Template-Close">H5Pclose</a>
+ <li><a href="#Template-GetVersion">H5Pget_version</a>
+ <li><a href="#Template-SetUserblock">H5Pset_userblock</a>
+ <li><a href="#Template-GetUserblock">H5Pget_userblock</a>
+ <li><a href="#Template-SetSizes">H5Pset_sizes</a>
+ <li><a href="#Template-GetSizes">H5Pget_sizes</a>
+ <li><a href="#Template-SetMPI">H5Pset_mpi</a>
+ <li><a href="#Template-GetMPI">H5Pget_mpi</a>
+ <li><a href="#Template-SetXfer">H5Pset_xfer</a>
+ <li><a href="#Template-GetXfer">H5Pget_xfer</a>
+ <li><a href="#Template-SetSymK">H5Pset_sym_k</a>
+ <li><a href="#Template-GetSymK">H5Pget_sym_k</a>
+ <li><a href="#Template-SetIstoreK">H5Pset_istore_k</a>
+ <li><a href="#Template-GetIstoreK">H5Pget_istore_k</a>
+ <li><a href="#Template-SetLayout">H5Pset_layout</a>
+ <li><a href="#Template-GetLayout">H5Pget_layout</a>
+ <li><a href="#Template-SetChunk">H5Pset_chunk</a>
+ <li><a href="#Template-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_template</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_template</code> parameter is a template containing
+ additional information required for specific methods of access,
+ parallel I/O for example. The paramters for access templates 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_template</code>
+ <dd>Template indicating the file access properties.
+ If parallel file access is desired, this is a collective
+ call according to the communicator stored in the
+ access_template. Use 0 for default access template.
+ </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_template</code>,
+ <em>hid_t</em> <code>access_template</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_template</code> and <code>access_template</code>
+ parameters are templates 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 templates 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_template</code>
+ <dd>File creation template ID, used when modifying default file meta-data
+ <dt><em>hid_t</em><code>access_template</code>
+ <dd>Template indicating the file access properties.
+ If parallel file access is desired, this is a collective
+ call according to the communicator stored in the
+ access_template. Use 0 for default access template.
+ </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-GetCreateTemplate">H5Fget_create_template</a>
+<dt><strong>Signature:</strong>
+ <dd><em>hid_t </em><code>H5Fget_create_template</code>(<em>hid_t</em> <code>file_id</code>
+ )
+<dt><strong>Description:</strong>
+ <dd>This function returns an template 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 to get creation template of
+ </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="Template">Template API Functions</a></h2>
+<P>These functions manipulate template objects to allow objects which require
+many different parameters to be easily manipulated.
+<br>
+<br>
+
+<hr>
+<dl>
+<dt><strong>Name:</strong> <a name="Template-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 template ID for a copy of the default
+ template of a given type.
+ <br>
+ <dl>
+ <dt>Template 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 template to create.
+ </dl>
+<dt><strong>Returns:</strong>
+ <dd>Valid ID on success, negative on failure
+</dl>
+
+<hr>
+<dl>
+<dt><strong>Name:</strong> <a name="Template-Close">H5Pclose</a>
+<dt><strong>Signature:</strong>
+ <dd><em>herr_t </em><code>H5Pclose</code>(<em>hid_t</em> <code>template_id</code>
+ )
+<dt><strong>Description:</strong>
+ <dd>This function terminates access to a template.
+<dt><strong>Parameters:</strong>
+ <dl>
+ <dt><em>hid_t</em> <code>template_id</code>
+ <dd>Template ID to terminate access to.
+ </dl>
+<dt><strong>Returns:</strong>
+ <dd>zero/negative
+</dl>
+
+<hr>
+<dl>
+<dt><strong>Name:</strong> <a name="Template-GetClass">H5Pget_class</a>
+<dt><strong>Signature:</strong>
+ <dd><em>H5P_class_t </em><code>H5Pget_class</code>(<em>hid_t</em> <code>template_id</code>
+ )
+<dt><strong>Description:</strong>
+ <dd>This function queries the class of a template ID.
+<dt><strong>Parameters:</strong>
+ <dl>
+ <dt><em>hid_t</em> <code>template_id</code>
+ <dd>Template ID to query.
+ </dl>
+<dt><strong>Returns:</strong>
+ <dd>Template class code on success, negative on failure
+</dl>
+
+<hr>
+<dl>
+<dt><strong>Name:</strong> <a name="Template-Copy">H5Pcopy</a>
+<dt><strong>Signature:</strong>
+ <dd><em>hid_t </em><code>H5Pcopy</code>(<em>hid_t</em> <code>template_id</code>
+ )
+<dt><strong>Description:</strong>
+ <dd>This function makes a copy of a template ID.
+<dt><strong>Parameters:</strong>
+ <dl>
+ <dt><em>hid_t</em> <code>template_id</code>
+ <dd>Template ID to duplicate.
+ </dl>
+<dt><strong>Returns:</strong>
+ <dd>Template ID on success, negative on failure
+</dl>
+
+<hr>
+<dl>
+<dt><strong>Name:</strong> <a name="Template-GetVersion">H5Pget_version</a>
+<dt><strong>Signature:</strong>
+ <dd><em>herr_t </em><code>H5Pget_version</code>(<em>hid_t</em> <code>template_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 template. Any pointer parameters which are
+ passed as NULL are not queried.
+<dt><strong>Parameters:</strong>
+ <dl>
+ <dt><em>hid_t</em> <code>template_id</code>
+ <dd>Template 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="Template-SetUserblock">H5Pset_userblock</a>
+<dt><strong>Signature:</strong>
+ <dd><em>herr_t </em><code>H5Pset_userblock</code>(<em>hid_t</em> <code>template_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 templates. 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>template_id</code>
+ <dd>Template 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="Template-GetUserblock">H5Pget_userblock</a>
+<dt><strong>Signature:</strong>
+ <dd><em>herr_t </em><code>H5Pget_userblock</code>(<em>hid_t</em> <code>template_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 templates.
+<dt><strong>Parameters:</strong>
+ <dl>
+ <dt><em>hid_t</em> <code>template_id</code>
+ <dd>Template 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="Template-SetSizes">H5Pset_sizes</a>
+<dt><strong>Signature:</strong>
+ <dd><em>herr_t </em><code>H5Pset_sizes</code>(<em>hid_t</em> <code>template_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 templates. 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>template_id</code>
+ <dd>Template 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="Template-GetSizes">H5Pget_sizes</a>
+<dt><strong>Signature:</strong>
+ <dd><em>herr_t </em><code>H5Pget_sizes</code>(<em>hid_t</em> <code>template_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
+ templates.
+<dt><strong>Parameters:</strong>
+ <dl>
+ <dt><em>hid_t</em> <code>template_id</code>
+ <dd>Template 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="Template-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 template 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 template 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 template. Users should call this function
+ again to setup the template.
+ <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 template. Users should call this function
+ again to setup the template.
+ </dl>
+<dt><strong>Returns:</strong>
+ <dd>zero/negative
+</dl>
+
+<hr>
+<dl>
+<dt><strong>Name:</strong> <a name="Template-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="Template-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="Template-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="Template-SetSymK">H5Pset_sym_k</a>
+<dt><strong>Signature:</strong>
+ <dd><em>herr_t </em><code>H5Pset_sym_k</code>(<em>hid_t</em> <code>template_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 templates. 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>template_id</code>
+ <dd>Template 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="Template-GetSymK">H5Pget_sym_k</a>
+<dt><strong>Signature:</strong>
+ <dd><em>herr_t </em><code>H5Pget_sym_k</code>(<em>hid_t</em> <code>template_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="#Template-SetSymK">H5Pset_sym_k</a> for
+ more information. This function is only valid for file creation
+ templates. If a parameter valued is set to NULL, that parameter is
+ not retrieved.
+<dt><strong>Parameters:</strong>
+ <dl>
+ <dt><em>hid_t</em> <code>template_id</code>
+ <dd>Template 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="Template-SetIstoreK">H5Pset_istore_k</a>
+<dt><strong>Signature:</strong>
+ <dd><em>herr_t </em><code>H5Pset_istore_k</code>(<em>hid_t</em> <code>template_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 templates. 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>template_id</code>
+ <dd>Template 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="Template-GetIstoreK">H5Pget_istore_k</a>
+<dt><strong>Signature:</strong>
+ <dd><em>herr_t </em><code>H5Pget_istore_k</code>(<em>hid_t</em> <code>template_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="#Template-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 templates.
+<dt><strong>Parameters:</strong>
+ <dl>
+ <dt><em>hid_t</em> <code>template_id</code>
+ <dd>Template 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="Template-SetLayout">H5Pset_layout</a>
+<dt><strong>Signature:</strong>
+ <dd><em>herr_t </em><code>H5Pset_layout</code>(<em>hid_t</em> <code>template_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 templates.
+ 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>template_id</code>
+ <dd>Template 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="Template-GetLayout">H5Pget_layout</a>
+<dt><strong>Signature:</strong>
+ <dd><em>herr_t </em><code>H5Pget_layout</code>(<em>hid_t</em> <code>template_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 templates.
+ 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>template_id</code>
+ <dd>Template 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="Template-SetChunk">H5Pset_chunk</a>
+<dt><strong>Signature:</strong>
+ <dd><em>herr_t </em><code>H5Pset_chunk</code>(<em>hid_t</em> <code>template_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
+ templates. 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>template_id</code>
+ <dd>Template 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="Template-GetChunk">H5Pget_chunk</a>
+<dt><strong>Signature:</strong>
+ <dd><em>herr_t </em><code>H5Pget_chunk</code>(<em>hid_t</em> <code>template_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
+ templates.
+<dt><strong>Parameters:</strong>
+ <dl>
+ <dt><em>hid_t</em> <code>template_id</code>
+ <dd>Template 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>template_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>template_id</code>
+ contains either the default template (H5P_DEFAULT) or a template_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>template_id</code>
+ <dd>ID of the dataset creation template.
+ </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 template for a
+ dataset. The template 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 template 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_template_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_template_id</code> is a dataset transfer template 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_template_id</code>
+ <dd>ID of a transfer template 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_template_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_template_id</code> is a dataset transfer template 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_template_id</code>
+ <dd>ID of a transfer template 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>
+