hdf5/doc/html/H5.api.html
1998-07-08 09:54:54 -05:00

4612 lines
176 KiB
HTML

<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>