awips2/nativeLib/rary.cots.hdf5/ncsa/hdf/hdf5lib/H5.java
root 9f19e3f712 Initial revision of AWIPS2 11.9.0-7p5
Former-commit-id: 64fa9254b946eae7e61bbc3f513b7c3696c4f54f
2012-01-06 08:55:05 -06:00

5146 lines
190 KiB
Java
Executable file

/****************************************************************************
* NCSA HDF *
* National Comptational Science Alliance *
* University of Illinois at Urbana-Champaign *
* 605 E. Springfield, Champaign IL 61820 *
* *
* For conditions of distribution and use, see the accompanying *
* hdf-java/COPYING file. *
* *
****************************************************************************/
package ncsa.hdf.hdf5lib;
import java.io.*;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import ncsa.hdf.hdf5lib.exceptions.*;
/**
* This class is the Java interface for the HDF5 library.
* <p>
* This code is the called by Java programs to access the
* entry points of the HDF5 library.
* Each routine wraps a single HDF5 entry point, generally with the
* arguments and return codes analogous to the C interface.
* <p>
* For details of the HDF5 library, see the HDF5 Documentation at:
* <a href="http://hdfgroup.org/HDF5/">http://hdfgroup.org/HDF5/</a>
* <hr>
* <p>
* <b>Mapping of arguments for Java</b>
*
* <p>
* In general, arguments to the HDF Java API are straightforward
* translations from the 'C' API described in the HDF Reference
* Manual.
* <p>
*
* <center>
* <table border=2 cellpadding=2>
* <caption><b>HDF-5 C types to Java types</b> </caption>
* <tr><td> <b>HDF-5</b> </td><td> <b>Java</b> </td></tr>
* <tr><td> H5T_NATIVE_INT </td><td> int, Integer </td></tr>
* <tr><td> H5T_NATIVE_SHORT </td><td> short, Short </td></tr>
* <tr><td> H5T_NATIVE_FLOAT </td><td> float, Float </td></tr>
* <tr><td> H5T_NATIVE_DOUBLE </td><td> double, Double </td></tr>
* <tr><td> H5T_NATIVE_CHAR </td><td> byte, Byte </td></tr>
* <tr><td> H5T_C_S1 </td><td> java.lang.String </td></tr>
* <tr><td> void * <BR>(i.e., pointer to `Any') </td><td> Special -- see HDFArray </td></tr>
* </table>
* </center>
* <p>
* <center>
* <b>General Rules for Passing Arguments and Results</b>
* </center>
* <p>
* In general, arguments passed <b>IN</b> to Java are the analogous basic types, as above.
* The exception is for arrays, which are discussed below.
* <p>
* The <i>return value</i> of Java methods is also the analogous type, as above.
* A major exception to that rule is that all HDF functions that
* return SUCCEED/FAIL are declared <i>boolean</i> in the Java version, rather than
* <i>int</i> as in the C.
* Functions that return a value or else FAIL are declared
* the equivalent to the C function.
* However, in most cases the Java method will raise an exception instead
* of returning an error code. See
* <a href="#ERRORS">Errors and Exceptions</a> below.
* <p>
* Java does not support pass by reference of arguments, so
* arguments that are returned through <b>OUT</b> parameters
* must be wrapped in an object or array.
* The Java API for HDF consistently wraps arguments in
* arrays.
* <p>
* For instance, a function that returns two integers is
* declared:
* <p>
* <pre>
* h_err_t HDF5dummy( int *a1, int *a2)
* </pre>
* For the Java interface, this would be declared:
* <p>
* <pre>
* public synchronized static native int HDF5dummy( int args[] );
* </pre>
* where <i>a1</i> is <i>args[0]</i>
* and <i>a2</i> is <i>args[1]</i>, and would be invoked:
* <p>
* <pre>
* H5.HDF5dummy( a );
* </pre>
* <p>
* All the routines where this convention is used will have
* specific documentation of the details, given below.
* <p>
* <a NAME="ARRAYS">
* <b>Arrays</b>
* </a>
* <p>
* HDF5 needs to read and write multi-dimensional arrays
* of any number type (and records).
* The HDF5 API describes the layout of the source and destination,
* and the data for the array passed as a block of bytes, for instance,
* <p>
* <pre>
* herr_t H5Dread(int fid, int filetype, int memtype, int memspace,
* void * data);
* </pre>
* <p>
* where ``void *'' means that the data may be any valid numeric
* type, and is a contiguous block of bytes that is the data
* for a multi-dimensional array. The other parameters describe the
* dimensions, rank, and datatype of the array on disk (source) and
* in memory (destination).
* <p>
* For Java, this ``ANY'' is a problem, as the type of data must
* always be declared. Furthermore, multidimensional arrays
* are definitely <i>not</i> layed out contiguously
* in memory.
* It would be infeasible to declare a separate routine for
* every combination of number type and dimensionality.
* For that reason, the
* <a href="./ncsa.hdf.hdf5lib.HDFArray.html"><b>HDFArray</b></a>
* class is used to
* discover the type, shape, and size of the data array
* at run time, and to convert to and from a contiguous array
* of bytes in synchronized static native C order.
* <p>
* The upshot is that any Java array of numbers (either primitive
* or sub-classes of type <b>Number</b>) can be passed as
* an ``Object'', and the Java API will translate to and from
* the appropriate packed array of bytes needed by the C library.
* So the function above would be declared:
* <p>
* <pre>
* public synchronized static native int H5Dread(int fid, int filetype,
* int memtype, int memspace, Object data);
* </pre>
* and the parameter <i>data</i> can be any multi-dimensional
* array of numbers, such as float[][], or int[][][], or Double[][].
* <p>
* <a NAME="CONSTANTS">
* <b>HDF-5 Constants</b>
* <p>
* The HDF-5 API defines a set of constants and enumerated values.
* Most of these values are available to Java programs via the class
* <a href="./ncsa.hdf.hdf5lib.HDF5Constants.html">
* <b>HDF5Constants</b></a>.
* For example, the parameters for the h5open() call include two
* numeric values, <b><i>HDFConstants.H5F_ACC_RDWR</i></b> and
* <b><i>HDF5Constants.H5P_DEFAULT</i></b>. As would be expected,
* these numbers correspond to the C constants <b><i>H5F_ACC_RDWR</i></b>
* and <b><i>H5P_DEFAULT</i></b>.
* <p>
* The HDF-5 API defines a set of values that describe number types and
* sizes, such as "H5T_NATIVE_INT" and "hsize_t". These values are
* determined at run time by the HDF-5 C library.
* To support these parameters,
* the Java class
* <a href="./ncsa.hdf.hdf5lib.HDF5CDataTypes.html">
* <b>HDF5CDataTypes</b></a> looks up the values when
* initiated. The values can be accessed as public variables of the
* Java class, such as:
* <pre> int data_type = HDF5CDataTypes.JH5T_NATIVE_INT;</pre>
* The Java application uses both types of constants the same way, the only
* difference is that the <b><i>HDF5CDataTypes</i></b> may have different
* values on different platforms.
* <p>
* <a NAME="ERRORS">
* <b>Error handling and Exceptions</b>
* <p>
* The HDF5 error API (H5E) manages the behavior of the error stack in
* the HDF-5 library. This API is omitted from the JHI5. Errors
* are converted into Java exceptions. This is totally different from the
* C interface, but is very natural for Java programming.
* <p>
* The exceptions of the JHI5 are organized as sub-classes of the class
* <a href="./ncsa.hdf.hdf5lib.exceptions.HDF5Exception.html">
* <b>HDF5Exception</b></a>. There are two subclasses of
* <b>HDF5Exception</b>,
* <a href="./ncsa.hdf.hdf5lib.exceptions.HDF5LibraryException.html">
* <b>HDF5LibraryException</b></a>
* and
* <a href="./ncsa.hdf.hdf5lib.exceptions.HDF5JavaException.html">
* <b>HDF5JavaException</b></a>. The sub-classes of the former
* represent errors from the HDF-5 C library, while sub-classes of the latter
* represent errors in the JHI5 wrapper and support code.
* <p>
* The super-class <b><i>HDF5LibraryException</i></b> implements the method
* '<b><i>printStackTrace()</i></b>', which prints out the HDF-5 error stack,
* as described in the HDF-5 C API <i><b>H5Eprint()</b>.</i> This may
* be used by Java exception handlers to print out the HDF-5 error stack.
* <hr>
*
* @version HDF5 1.2 <BR>
* <b>See also:
* <a href ="./ncsa.hdf.hdf5lib.HDFArray.html">
* </b> ncsa.hdf.hdf5lib.HDFArray</a><BR>
* <a href ="./ncsa.hdf.hdf5lib.HDF5Constants.html">
* </b> ncsa.hdf.hdf5lib.HDF5Constants</a><BR>
* <a href ="./ncsa.hdf.hdf5lib.HDF5CDataTypes.html">
* </b> ncsa.hdf.hdf5lib.HDF5CDataTypes</a><BR>
* <a href ="./ncsa.hdf.hdf5lib.HDF5Exception.html">
* ncsa.hdf.hdf5lib.HDF5Exception<BR>
* <a href="http://hdfgroup.org/HDF5/">
* http://hdfgroup.org/HDF5"</a>
**/
public class H5 {
public final static String H5PATH_PROPERTY_KEY = "ncsa.hdf.hdf5lib.H5.hdf5lib";
//add system property to load library by name from library path, via System.loadLibrary()
public final static String H5_LIBRARY_NAME_PROPERTY_KEY = "ncsa.hdf.hdf5lib.H5.loadLibraryName";
private static boolean isLibraryLoaded = false;
private final static boolean IS_CRITICAL_PINNING = true;
private final static Vector<Integer> OPEN_IDS = new Vector<Integer>();
static { loadH5Lib(); }
public static void loadH5Lib()
{
// Make sure that the library is loaded only once
if (isLibraryLoaded)
return;
Logger s_logger;
String s_libraryName;
// use default logger, since spanning sources
s_logger = Logger.getLogger("ncsa.hdf.hdf5lib");
s_logger.setLevel(Level.INFO);
// first try loading library by name from user supplied library path
s_libraryName = System.getProperty(H5_LIBRARY_NAME_PROPERTY_KEY,null);
String mappedName = null;
if ((s_libraryName != null) && (s_libraryName.length() > 0))
{
try {
mappedName = System.mapLibraryName(s_libraryName);
System.loadLibrary(s_libraryName);
isLibraryLoaded = true;
} catch (Throwable err) {
err.printStackTrace();
isLibraryLoaded = false;
} finally {
s_logger.log(Level.INFO,"HDF5 library: " + s_libraryName + " resolved to: "+mappedName+"; "+(isLibraryLoaded ? "" : " NOT") + " successfully loaded from java.library.path");
}
}
if (!isLibraryLoaded) {
// else try loading library via full path
String filename = System.getProperty(H5PATH_PROPERTY_KEY,null);
if ((filename != null) && (filename.length() > 0))
{
File h5dll = new File(filename);
if (h5dll.exists() && h5dll.canRead() && h5dll.isFile()) {
try {
System.load(filename);
isLibraryLoaded = true;
} catch (Throwable err) {
err.printStackTrace();
isLibraryLoaded = false;
} finally {
s_logger.log(Level.INFO,"HDF5 library: " + filename + (isLibraryLoaded ? "" : " NOT") + " successfully loaded.");
}
} else {
isLibraryLoaded = false;
throw (new UnsatisfiedLinkError("Invalid HDF5 library, "+filename));
}
}
}
// else load standard library
if (!isLibraryLoaded)
{
try {
s_libraryName = "jhdf5";
mappedName = System.mapLibraryName(s_libraryName);
System.loadLibrary("jhdf5");
isLibraryLoaded = true;
} catch (Throwable err) {
err.printStackTrace();
isLibraryLoaded = false;
} finally {
s_logger.log(Level.INFO,"HDF5 library: " + s_libraryName + " resolved to: "+mappedName+"; "+(isLibraryLoaded ? "" : " NOT") + " successfully loaded from java.library.path");
}
}
/* Important! Exit quietly */
try {
H5.H5dont_atexit();
} catch (HDF5LibraryException e) {
System.exit(1);
}
/* Important! Disable error output to C stdout */
H5.H5error_off();
/* Optional: confirm the version
* This will crash immediately if not the
* specified version.
*/
Integer majnum = Integer.getInteger("ncsa.hdf.hdf5lib.H5.hdf5maj",null);
Integer minnum = Integer.getInteger("ncsa.hdf.hdf5lib.H5.hdf5min",null);
Integer relnum = Integer.getInteger("ncsa.hdf.hdf5lib.H5.hdf5rel",null);
if ((majnum != null) && (minnum != null) && (relnum != null)) {
H5.H5check_version(majnum.intValue(),minnum.intValue(),relnum.intValue());
}
}
/** Turn off error handling
* By default, the C library prints the error stack
* of the HDF-5 C library on stdout. This behavior
* may be disabled by calling H5error_off().
*/
public synchronized static native int H5error_off();
//////////////////////////////////////////////////////////////
// //
// H5: General Library Functions //
// //
//////////////////////////////////////////////////////////////
/**
* Get number of open IDs.
*/
public final static int getOpenIDCount() {
return OPEN_IDS.size();
}
/**
* Get the open ID at the specified index.
*
* @param index -- an index of the open ID.
* @return Returns the open ID at the specified index.
*/
public final static int getOpenID(int index) {
int id = -1;
if (index >= 0 && index < OPEN_IDS.size())
id = (int) OPEN_IDS.elementAt(index);
return id;
}
/**
* H5open initialize the library.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException
* - Error from the HDF-5 Library.
**/
public synchronized static native int H5open() throws HDF5LibraryException;
/**
* H5close flushes all data to disk, closes all file
* identifiers, and cleans up all memory used by the library.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException
* - Error from the HDF-5 Library.
**/
public synchronized static native int H5close() throws HDF5LibraryException;
/**
* H5dont_atexit indicates to the library that an atexit()
* cleanup routine should not be installed. In order to be
* effective, this routine must 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).
* <P>
* This is called by the static initializer, so this should
* never need to be explicitly called by a Java program.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
private synchronized static native int H5dont_atexit() throws HDF5LibraryException;
/**
* H5get_libversion retrieves the major, minor, and release
* numbers of the version of the HDF library which is linked
* to the application.
*
* @param libversion The version information of the HDF library.
* <pre>
* libversion[0] = The major version of the library.
* libversion[1] = The minor version of the library.
* libversion[2] = The release number of the library.
* </pre>
* @return a non-negative value if successful, along with
* the version information.
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5get_libversion(int[] libversion) throws HDF5LibraryException;
/**
* H5check_version verifies that the arguments match the version numbers
* compiled into the library.
*
* @param majnum The major version of the library.
* @param minnum The minor version of the library.
* @param relnum The release number of the library.
* @return a non-negative value if successful.
* Upon failure (when the versions do not match), this function
* causes the application to abort (i.e., crash)
*
* See C API function: herr_t H5check_version()
**/
public synchronized static native int H5check_version(int majnum, int minnum, int relnum);
/**
* H5garbage_collect collects on all free-lists of all types.
* <p>
* ** Note: this is new with HDF5.1.2.2. If using
* an earlier version, use
* 'configure --enable-hdf5_1_2_1'
* so this routine will fail safely.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException
* - Error from the HDF-5 Library.
**/
public synchronized static native int H5garbage_collect() throws HDF5LibraryException;
//////////////////////////////////////////////////////////////
// //
// H5E: Error Stack //
// //
//////////////////////////////////////////////////////////////
/**
* H5Eclear clears the error stack for the current thread.
* H5Eclear can fail if there are problems initializing the
* library.
* <p>
* This may be used by exception handlers to assure that
* the error condition in the HDF-5 library has been reset.
*
* @return Returns a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Eclear() throws HDF5LibraryException;
//////////////////////////////////////////////////////////////
// //
// H5A: Attribute Interface Functions //
// //
//////////////////////////////////////////////////////////////
/**
* H5Acreate creates an attribute which is attached to the
* object specified with loc_id.
*
* @param loc_id IN: Object (dataset, group, or named datatype) to be attached to.
* @param name IN: Name of attribute to create.
* @param type_id IN: Identifier of datatype for attribute.
* @param space_id IN: Identifier of dataspace for attribute.
* @param create_plist IN: Identifier of creation property
* list (currently not used).
*
* @return an attribute identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public static int H5Acreate(int loc_id, String name,
int type_id, int space_id, int create_plist)
throws HDF5LibraryException, NullPointerException
{
int id = _H5Acreate(loc_id, name, type_id, space_id, create_plist);
if (id>0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Acreate(int loc_id, String name,
int type_id, int space_id, int create_plist)
throws HDF5LibraryException, NullPointerException;
/**
* H5Aopen_name opens an attribute specified by its name,
* name, which is attached to the object specified with loc_id.
*
* @param loc_id IN: Identifier of a group, dataset, or named datatype atttribute
* @param name IN: Attribute name.
*
* @return attribute identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public static int H5Aopen_name(int loc_id, String name)
throws HDF5LibraryException, NullPointerException {
int id = _H5Aopen_name(loc_id, name);
if (id>0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Aopen_name(int loc_id, String name)
throws HDF5LibraryException, NullPointerException;
/**
* H5Aopen_idx opens an attribute which is attached to the
* object specified with loc_id. The location object may
* be either a group, dataset, or named datatype, all of
* which may have any sort of attribute.
*
* @param loc_id IN: Identifier of the group, dataset, or
* named datatype attribute
* @param idx IN: Index of the attribute to open.
*
* @return attribute identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Aopen_idx(int loc_id, int idx)
throws HDF5LibraryException {
int id = _H5Aopen_idx(loc_id, idx);
if (id>0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Aopen_idx(int loc_id, int idx)
throws HDF5LibraryException;
/**
* H5Awrite writes an attribute, specified with attr_id. The
* attribute's memory datatype is specified with mem_type_id.
* The entire attribute is written from buf to the file.
*
* @param attr_id IN: Identifier of an attribute to write.
* @param mem_type_id IN: Identifier of the attribute datatype
* (in memory).
* @param buf IN: Data to be written.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - data is null.
**/
public synchronized static native int H5Awrite(int attr_id, int mem_type_id,
byte[] buf)
throws HDF5LibraryException, NullPointerException;
/**
* H5Awrite writes an attribute, specified with attr_id. The
* attribute's memory datatype is specified with mem_type_id.
* The entire attribute is written from data object to the file.
*
* @param attr_id IN: Identifier of an attribute to write.
* @param mem_type_id IN: Identifier of the attribute datatype
* (in memory).
* @param obj IN: Data object to be written.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - data object is null.
* See public synchronized static native int H5Awrite(int attr_id, int mem_type_id, byte[] buf);
**/
public synchronized static int H5Awrite(int attr_id, int mem_type_id,
Object obj )
throws HDF5Exception, NullPointerException
{
HDFArray theArray = new HDFArray(obj);
byte[] buf = theArray.byteify();
int retVal = H5Awrite(attr_id, mem_type_id, buf);
buf = null;
theArray = null;
return retVal;
}
/** H5Acopy copies the content of one attribute to another.
* @param src_aid the identifier of the source attribute
* @param dst_aid the identifier of the destinaiton attribute
*/
public synchronized static native int H5Acopy(int src_aid, int dst_aid)
throws HDF5LibraryException;
/**
* H5Aread reads an attribute, specified with attr_id. The
* attribute's memory datatype is specified with mem_type_id.
* The entire attribute is read into buf from the file.
*
* @param attr_id IN: Identifier of an attribute to read.
* @param mem_type_id IN: Identifier of the attribute datatype
* (in memory).
* @param buf IN: Buffer for data to be read.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - data buffer is null.
**/
public synchronized static native int H5Aread(int attr_id, int mem_type_id, byte[] buf)
throws HDF5LibraryException, NullPointerException;
/**
* H5Aread reads an attribute, specified with attr_id. The
* attribute's memory datatype is specified with mem_type_id.
* The entire attribute is read into data object from the file.
*
* @param attr_id IN: Identifier of an attribute to read.
* @param mem_type_id IN: Identifier of the attribute datatype
* (in memory).
* @param obj IN: Object for data to be read.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - data buffer is null.
* See public synchronized static native int H5Aread( )
**/
public synchronized static int H5Aread(int attr_id, int mem_type_id, Object obj)
throws HDF5Exception, NullPointerException
{
HDFArray theArray = new HDFArray(obj);
byte[] buf = theArray.emptyBytes();
// This will raise an exception if there is an error
int status = H5Aread(attr_id, mem_type_id, buf);
// No exception: status really ought to be OK
if (status >= 0) {
obj = theArray.arrayify( buf);
}
return status;
}
public synchronized static native int H5AreadVL(int attr_id, int mem_type_id, String[] buf)
throws HDF5LibraryException, NullPointerException;
/**
* H5Aget_space retrieves a copy of the dataspace for an
* attribute.
*
* @param attr_id IN: Identifier of an attribute.
*
* @return attribute dataspace identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Aget_space(int attr_id) throws HDF5LibraryException {
int id = _H5Aget_space(attr_id);
if (id > 0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Aget_space(int attr_id) throws HDF5LibraryException;
/**
* H5Aget_type retrieves a copy of the datatype for an attribute.
*
* @param attr_id IN: Identifier of an attribute.
*
* @return a datatype identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Aget_type(int attr_id) throws HDF5LibraryException {
int id = _H5Aget_type(attr_id);
if (id > 0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Aget_type(int attr_id) throws HDF5LibraryException;
/**
* H5Aget_name retrieves the name of an attribute specified by
* the identifier, attr_id.
*
* @param attr_id IN: Identifier of the attribute.
* @param buf_size IN: The size of the buffer to store the
* name in.
* @param name OUT: Buffer to store name in.
*
* @exception ArrayIndexOutOfBoundsException JNI error writing
* back array
* @exception ArrayStoreException JNI error writing back array
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
* @exception IllegalArgumentException - bub_size <= 0.
*
* @return the length of the attribute's name if successful.
**/
public synchronized static native long H5Aget_name(int attr_id, long buf_size,
String[] name)
throws ArrayIndexOutOfBoundsException,
ArrayStoreException,
HDF5LibraryException,
NullPointerException,
IllegalArgumentException;
/**
* H5Aget_num_attrs returns the number of attributes attached
* to the object specified by its identifier, loc_id.
*
* @param loc_id IN: Identifier of a group, dataset, or named
* datatype.
*
* @return the number of attributes if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Aget_num_attrs(int loc_id)
throws HDF5LibraryException;
/**
* H5Adelete removes the attribute specified by its name, name,
* from a dataset, group, or named datatype.
*
* @param loc_id IN: Identifier of the dataset, group, or
* named datatype.
* @param name IN: Name of the attribute to delete.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public synchronized static native int H5Adelete(int loc_id, String name)
throws HDF5LibraryException, NullPointerException;
/**
* H5Aclose terminates access to the attribute specified by
* its identifier, attr_id.
*
* @param attr_id IN: Attribute to release access to.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Aclose(int attr_id)
throws HDF5LibraryException {
OPEN_IDS.removeElement(attr_id);
return _H5Aclose(attr_id);
}
private synchronized static native int _H5Aclose(int attr_id)
throws HDF5LibraryException;
//////////////////////////////////////////////////////////////
// //
// H5D: Datasets Interface Functions //
// //
//////////////////////////////////////////////////////////////
/**
* H5Dcreate creates a data set with a name, name, in the file
* or in the group specified by the identifier loc_id.
*
* @param loc_id Identifier of the file or group to create the
* dataset within.
* @param name The name of the dataset to create.
* @param type_id Identifier of the datatype to use when
* creating the dataset.
* @param space_id Identifier of the dataspace to use when
* creating the dataset.
* @param create_plist_id Identifier of the set creation
* property list.
*
* @return a dataset identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public static int H5Dcreate(int loc_id, String name,
int type_id, int space_id, int create_plist_id)
throws HDF5LibraryException, NullPointerException {
int id = _H5Dcreate(loc_id, name,type_id, space_id, create_plist_id);
if (id>0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Dcreate(int loc_id, String name,
int type_id, int space_id, int create_plist_id)
throws HDF5LibraryException, NullPointerException;
/**
* H5Dopen opens an existing dataset for access in the file or
* group specified in loc_id.
*
* @param loc_id Identifier of the dataset to open or the file
* or group
* @param name The name of the dataset to access.
*
* @return a dataset identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public static int H5Dopen(int loc_id, String name)
throws HDF5LibraryException, NullPointerException {
int id = _H5Dopen(loc_id, name);
if (id>0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Dopen(int loc_id, String name)
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Dchdir_ext(String dir_name)
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Dgetdir_ext(String[] dir_name, int size)
throws HDF5LibraryException, NullPointerException;
/**
* H5Dget_space returns an identifier for a copy of the
* dataspace for a dataset.
*
* @param dataset_id Identifier of the dataset to query.
*
* @return a dataspace identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Dget_space(int dataset_id)
throws HDF5LibraryException {
int id = _H5Dget_space(dataset_id);
if (id > 0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Dget_space(int dataset_id)
throws HDF5LibraryException ;
/**
* H5Dget_type returns an identifier for a copy of the datatype
* for a dataset.
*
* @param dataset_id Identifier of the dataset to query.
*
* @return a datatype identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Dget_type(int dataset_id)
throws HDF5LibraryException {
int id = _H5Dget_type(dataset_id);
if (id > 0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Dget_type(int dataset_id)
throws HDF5LibraryException ;
/**
* H5Dget_create_plist returns an identifier for a copy of the
* dataset creation property list for a dataset.
*
* @param dataset_id Identifier of the dataset to query.
* @return a dataset creation property list identifier
* if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Dget_create_plist(int dataset_id)
throws HDF5LibraryException {
int id = _H5Dget_create_plist(dataset_id);
if (id >0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Dget_create_plist(int dataset_id)
throws HDF5LibraryException;
/**
* H5Dread reads a (partial) dataset, specified by its
* identifier dataset_id, from the file into the application
* memory buffer buf.
*
* @param dataset_id Identifier of the dataset read from.
* @param mem_type_id Identifier of the memory datatype.
* @param mem_space_id Identifier of the memory dataspace.
* @param file_space_id Identifier of the dataset's dataspace
* in the file.
* @param xfer_plist_id Identifier of a transfer property
* list for this I/O operation.
* @param buf Buffer to store data read from the file.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - data buffer is null.
**/
public synchronized static native int H5Dread(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
byte[] buf, boolean isCriticalPinning)
throws HDF5LibraryException, NullPointerException;
public synchronized static int H5Dread(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
byte[] buf) throws HDF5LibraryException, NullPointerException
{
return H5Dread(dataset_id, mem_type_id,mem_space_id, file_space_id,
xfer_plist_id, buf, IS_CRITICAL_PINNING);
}
public synchronized static native int H5DreadVL(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id, Object[] buf)
throws HDF5LibraryException, NullPointerException;
/**
* H5Dread reads a (partial) dataset, specified by its
* identifier dataset_id, from the file into the application
* data object.
*
* @param dataset_id Identifier of the dataset read from.
* @param mem_type_id Identifier of the memory datatype.
* @param mem_space_id Identifier of the memory dataspace.
* @param file_space_id Identifier of the dataset's dataspace
* in the file.
* @param xfer_plist_id Identifier of a transfer property
* list for this I/O operation.
* @param obj Object to store data read from the file.
*
* @return a non-negative value if successful
*
* @exception HDF5Exception - Failure in the data conversion.
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - data object is null.
**/
public synchronized static int H5Dread(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id,
int xfer_plist_id, Object obj, boolean isCriticalPinning)
throws HDF5Exception, HDF5LibraryException, NullPointerException
{
int status = -1;
boolean is1D = false;
Class dataClass = obj.getClass();
if (!dataClass.isArray()) {
throw (new HDF5JavaException("H5Dread: data is not an array"));
}
String cname = dataClass.getName();
is1D = (cname.lastIndexOf('[') ==cname.indexOf('['));
char dname = cname.charAt(cname.lastIndexOf("[")+1);
if (is1D && (dname == 'B')) {
status = H5Dread(dataset_id, mem_type_id,mem_space_id, file_space_id,
xfer_plist_id, (byte[])obj, isCriticalPinning);
}
else if (is1D && (dname == 'S')) {
status = H5Dread_short(dataset_id, mem_type_id,mem_space_id, file_space_id,
xfer_plist_id, (short[])obj, isCriticalPinning);
}
else if (is1D && (dname == 'I')) {
status = H5Dread_int(dataset_id, mem_type_id,mem_space_id, file_space_id,
xfer_plist_id, (int[])obj, isCriticalPinning);
}
else if (is1D && (dname == 'J')) {
status = H5Dread_long(dataset_id, mem_type_id,mem_space_id, file_space_id,
xfer_plist_id, (long[])obj);
}
else if (is1D && (dname == 'F')) {
status = H5Dread_float(dataset_id, mem_type_id,mem_space_id, file_space_id,
xfer_plist_id, (float[])obj, isCriticalPinning);
}
else if (is1D && (dname == 'D')) {
status = H5Dread_double(dataset_id, mem_type_id,mem_space_id, file_space_id,
xfer_plist_id, (double[])obj, isCriticalPinning);
}
else if (H5.H5Tequal(mem_type_id, HDF5Constants.H5T_STD_REF_DSETREG)) {
status = H5Dread_reg_ref(dataset_id, mem_type_id,mem_space_id, file_space_id,
xfer_plist_id, (String[])obj);
}
else if (is1D && (dataClass.getComponentType() == String.class)) {
// Rosetta Biosoftware - add support for Strings (variable length)
if (H5.H5Tis_variable_str(mem_type_id)) {
status = H5DreadVL(dataset_id, mem_type_id,mem_space_id, file_space_id,
xfer_plist_id, (Object[])obj);
} else {
status = H5Dread_string(dataset_id, mem_type_id,mem_space_id, file_space_id,
xfer_plist_id, (String[])obj);
}
} else {
// Create a data buffer to hold the data into a Java Array
HDFArray theArray = new HDFArray(obj);
byte[] buf = theArray.emptyBytes();
// will raise exception if read fails
status = H5Dread(dataset_id, mem_type_id, mem_space_id,
file_space_id, xfer_plist_id, buf, isCriticalPinning);
if (status >= 0) {
// convert the data into a Java Array */
obj = theArray.arrayify( buf);
}
// clean up these: assign 'null' as hint to gc() */
buf = null;
theArray = null;
}
return status;
}
public synchronized static int H5Dread(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id,
int xfer_plist_id, Object obj)
throws HDF5Exception, HDF5LibraryException, NullPointerException
{
return H5Dread(dataset_id, mem_type_id,mem_space_id, file_space_id,
xfer_plist_id, obj, true);
}
/**
* H5DwriteString writes a (partial) variable length String dataset, specified by its
* identifier dataset_id, from the application memory buffer
* buf into the file.
*
* @param dataset_id Identifier of the dataset read from.
* @param mem_type_id Identifier of the memory datatype.
* @param mem_space_id Identifier of the memory dataspace.
* @param file_space_id Identifier of the dataset's dataspace
* in the file.
* @param xfer_plist_id Identifier of a transfer property
* list for this I/O operation.
* @param buf Buffer with data to be written to the file.
*
* @return a non-negative value if successful
*
* @author contributed by Rosetta Biosoftware
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public synchronized static native int H5DwriteString(int dataset_id,
int mem_type_id, int mem_space_id,
int file_space_id, int xfer_plist_id, String[] buf)
throws HDF5LibraryException, NullPointerException;
/**
* H5Dwrite writes a (partial) dataset, specified by its
* identifier dataset_id, from the application memory buffer
* buf into the file.
*
* @param dataset_id Identifier of the dataset read from.
* @param mem_type_id Identifier of the memory datatype.
* @param mem_space_id Identifier of the memory dataspace.
* @param file_space_id Identifier of the dataset's dataspace
* in the file.
* @param xfer_plist_id Identifier of a transfer property
* list for this I/O operation.
* @param buf Buffer with data to be written to the file.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public synchronized static native int H5Dwrite(int dataset_id,
int mem_type_id, int mem_space_id, int file_space_id,
int xfer_plist_id, byte[] buf, boolean isCriticalPinning)
throws HDF5LibraryException, NullPointerException;
public synchronized static int H5Dwrite(int dataset_id,
int mem_type_id, int mem_space_id, int file_space_id,
int xfer_plist_id, byte[] buf)
throws HDF5LibraryException, NullPointerException
{
return H5Dwrite(dataset_id,mem_type_id, mem_space_id, file_space_id,
xfer_plist_id, buf, IS_CRITICAL_PINNING);
}
/**
* H5Dwrite writes a (partial) dataset, specified by its
* identifier dataset_id, from the application memory data
* object into the file.
*
* @param dataset_id Identifier of the dataset read from.
* @param mem_type_id Identifier of the memory datatype.
* @param mem_space_id Identifier of the memory dataspace.
* @param file_space_id Identifier of the dataset's dataspace
* in the file.
* @param xfer_plist_id Identifier of a transfer property
* list for this I/O operation.
* @param obj Object with data to be written to the file.
*
* @return a non-negative value if successful
*
* @exception HDF5Exception - Failure in the data conversion.
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - data object is null.
**/
public synchronized static int H5Dwrite(int dataset_id, int mem_type_id, int mem_space_id,
int file_space_id, int xfer_plist_id, Object obj, boolean isCriticalPinning)
throws HDF5Exception, HDF5LibraryException, NullPointerException
{
int status = -1;
boolean is1D = false;
Class dataClass = obj.getClass();
if (!dataClass.isArray()) {
throw (new HDF5JavaException("H5Dread: data is not an array"));
}
String cname = dataClass.getName();
is1D = (cname.lastIndexOf('[') ==cname.indexOf('['));
char dname = cname.charAt(cname.lastIndexOf("[")+1);
if (is1D && (dname == 'B')) {
status = H5Dwrite(dataset_id, mem_type_id,mem_space_id, file_space_id,
xfer_plist_id, (byte[])obj, isCriticalPinning);
}
else if (is1D && (dname == 'S')) {
status = H5Dwrite_short(dataset_id, mem_type_id,mem_space_id, file_space_id,
xfer_plist_id, (short[])obj, isCriticalPinning);
}
else if (is1D && (dname == 'I')) {
status = H5Dwrite_int(dataset_id, mem_type_id,mem_space_id, file_space_id,
xfer_plist_id, (int[])obj, isCriticalPinning);
}
else if (is1D && (dname == 'J')) {
status = H5Dwrite_long(dataset_id, mem_type_id,mem_space_id, file_space_id,
xfer_plist_id, (long[])obj, isCriticalPinning);
}
else if (is1D && (dname == 'F')) {
status = H5Dwrite_float(dataset_id, mem_type_id,mem_space_id, file_space_id,
xfer_plist_id, (float[])obj, isCriticalPinning);
}
else if (is1D && (dname == 'D')) {
status = H5Dwrite_double(dataset_id, mem_type_id,mem_space_id, file_space_id,
xfer_plist_id, (double[])obj, isCriticalPinning);
}
// Rosetta Biosoftware - call into H5DwriteString for variable length Strings
else if ((H5.H5Tget_class(mem_type_id) == HDF5Constants.H5T_STRING) && H5.H5Tis_variable_str(mem_type_id)
&& dataClass.isArray() && (dataClass.getComponentType() == String.class) && is1D) {
status = H5DwriteString(dataset_id, mem_type_id,
mem_space_id, file_space_id, xfer_plist_id, (String[])obj);
} else {
HDFArray theArray = new HDFArray(obj);
byte[] buf = theArray.byteify();
/* will raise exception on error */
status = H5Dwrite(dataset_id, mem_type_id, mem_space_id,
file_space_id, xfer_plist_id, buf, isCriticalPinning);
// clean up these: assign 'null' as hint to gc() */
buf = null;
theArray = null;
}
return status;
}
public synchronized static int H5Dwrite(int dataset_id, int mem_type_id, int mem_space_id,
int file_space_id, int xfer_plist_id, Object obj)
throws HDF5Exception, HDF5LibraryException, NullPointerException
{
return H5Dwrite(dataset_id, mem_type_id, mem_space_id,
file_space_id, xfer_plist_id, obj, IS_CRITICAL_PINNING);
}
/**
* H5Dextend verifies that the dataset is at least of size size.
*
* @param dataset_id Identifier of the dataset.
* @param size Array containing the new magnitude of each
* dimension.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - size array is null.
**/
public synchronized static native int H5Dextend(int dataset_id, byte[] size)
throws HDF5LibraryException, NullPointerException;
public synchronized static int H5Dextend(int dataset_id, long[] size)
throws HDF5Exception, NullPointerException
{
int rval = -1;
HDFArray theArray = new HDFArray(size);
byte[] buf = theArray.byteify();
rval = H5Dextend(dataset_id, buf);
buf = null;
theArray = null;
return rval;
}
/**
* H5Dclose ends access to a dataset specified by dataset_id and
* releases resources used by it.
*
* @param dataset_id Identifier of the dataset to finish
* access to.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Dclose(int dataset_id)
throws HDF5LibraryException {
OPEN_IDS.removeElement(dataset_id);
return _H5Dclose(dataset_id);
}
private synchronized static native int _H5Dclose(int dataset_id)
throws HDF5LibraryException;
// following synchronized static native functions are missing from HDF5 RM version 1.0.1
/** H5Dget_storage_size returns the amount of storage that is
* required for the dataset.
*
* @param dataset_id Identifier of the dataset in question
*
* @return he amount of storage space allocated for the dataset.
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native long H5Dget_storage_size(int dataset_id)
throws HDF5LibraryException;
/** H5Dcopy copies the content of one dataset to another dataset.
* @param src_did the identifier of the source dataset
* @param dst_did the identifier of the destinaiton dataset
*/
public synchronized static native int H5Dcopy(int src_did, int dst_did)
throws HDF5LibraryException;
/*
*
*/
public synchronized static native int H5Dvlen_get_buf_size( int dataset_id, int type_id, int space_id, int[]size)
throws HDF5LibraryException;
/**
*
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - buf is null.
**/
public synchronized static native int H5Dvlen_reclaim(
int type_id, int space_id,
int xfer_plist_id, byte[] buf)
throws HDF5LibraryException, NullPointerException;
//////////////////////////////////////////////////////////////
// //
// H5F: File Interface Functions //
// //
//////////////////////////////////////////////////////////////
/**
* H5Fopen opens an existing file and is the primary function
* for accessing existing HDF5 files.
*
* @param name Name of the file to access.
* @param flags File access flags.
* @param access_id Identifier for the file access properties
* list.
*
* @return a file identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public static int H5Fopen(String name, int flags, int access_id)
throws HDF5LibraryException, NullPointerException {
int id = _H5Fopen(name, flags, access_id);
if (id > 0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Fopen(String name, int flags,
int access_id)
throws HDF5LibraryException, NullPointerException;
/**
* H5Fcreate is the primary function for creating HDF5 files.
*
* @param name Name of the file to access.
* @param flags File access flags. Possible values include:
* <UL>
* <LI>
* H5F_ACC_RDWR Allow read and write access to file.
* </LI>
* <LI>
* H5F_ACC_RDONLY Allow read-only access to file.
* </LI>
* <LI>
* H5F_ACC_TRUNC Truncate file, if it already exists,
* erasing all data previously stored in the file.
* </LI>
* <LI>
* H5F_ACC_EXCL Fail if file already exists.
* </LI>
* <LI>
* H5F_ACC_DEBUG Print debug information.
* </LI>
* <LI>
* H5P_DEFAULT Apply default file access and creation
* properties.
* </LI>
* </UL>
*
* @param create_id File creation property list identifier,
* used when modifying default file meta-data.
* Use H5P_DEFAULT for default access properties.
* @param access_id File access property list identifier.
* If parallel file access is desired,
* this is a collective call according to the communicator
* stored in the access_id (not supported in Java).
* Use H5P_DEFAULT for default access properties.
*
* @return a file identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public static int H5Fcreate(String name, int flags,
int create_id, int access_id)
throws HDF5LibraryException, NullPointerException {
int id = _H5Fcreate(name, flags,create_id, access_id);
if (id > 0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Fcreate(String name, int flags,
int create_id, int access_id)
throws HDF5LibraryException, NullPointerException;
/**
* H5Fflush causes all buffers associated with a file or
* object to be immediately flushed (written) to disk
* without removing the data from the (memory) cache.
* <P>
* After this call completes, the file (or object) is in
* a consistent state and all data written to date is
* assured to be permanent.
*
* @param object_id Identifier of object used to identify
* the file. <b>object_id</b> can be any object associated
* with the file, including the file itself, a dataset,
* a group, an attribute, or a named data type.
* @param scope specifies the scope of the
* flushing action, in the case that the HDF-5 file is not
* a single physical file.
* <P>
* Valid values are:
* <UL>
* <LI>
* H5F_SCOPE_GLOBAL
* Flushes the entire virtual file.
* </LI>
* <LI>
* H5F_SCOPE_LOCAL
* Flushes only the specified file.
* </LI>
* </UL>
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Fflush(int object_id, int scope)
throws HDF5LibraryException;
/**
* H5Fis_hdf5 determines whether a file is in the HDF5 format.
*
* @param name File name to check format.
*
* @return true if is HDF-5, false if not.
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public synchronized static native boolean H5Fis_hdf5(String name)
throws HDF5LibraryException, NullPointerException;
/**
* H5Fget_create_plist returns a file creation property list
* identifier identifying the creation properties used to
* create this file.
*
* @param file_id Identifier of the file to get creation
* property list
*
* @return a file creation property list identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Fget_create_plist(int file_id)
throws HDF5LibraryException {
int id = _H5Fget_create_plist(file_id);
if (id > 0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Fget_create_plist(int file_id)
throws HDF5LibraryException;
/**
* H5Fget_access_plist returns the file access property list
* identifier of the specified file.
*
* @param file_id Identifier of file to get access property
* list of
*
* @return a file access property list identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Fget_access_plist(int file_id)
throws HDF5LibraryException {
int id = _H5Fget_access_plist(file_id);
if (id > 0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Fget_access_plist(int file_id)
throws HDF5LibraryException;
/**
* H5Fclose terminates access to an HDF5 file.
*
* @param file_id Identifier of a file to terminate access to.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Fclose(int file_id)
throws HDF5LibraryException {
OPEN_IDS.removeElement(file_id);
return _H5Fclose(file_id);
}
private synchronized static native int _H5Fclose(int file_id)
throws HDF5LibraryException;
/**
* H5Fmount mounts the file specified by child_id onto the
* group specified by loc_id and name using the mount
* properties plist_id.
*
* @param loc_id The identifier for the group onto which
* the file specified by child_id is to be mounted.
* @param name The name of the group onto which the file
* specified by child_id is to be mounted.
* @param child_id The identifier of the file to be mounted.
* @param plist_id The identifier of the property list to be used.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public synchronized static native int H5Fmount(int loc_id, String name,
int child_id, int plist_id)
throws HDF5LibraryException, NullPointerException;
/**
* Given a mount point, H5Funmount dissassociates the mount
* point's file from the file mounted there.
*
* @param loc_id The identifier for the location at which
* the specified file is to be unmounted.
* @param name The name of the file to be unmounted.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public synchronized static native int H5Funmount(int loc_id, String name)
throws HDF5LibraryException, NullPointerException;
/**
* H5Freopen reopens an HDF5 file.
*
* @param file_id Identifier of a file to terminate and
* reopen access to.
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @return a new file identifier if successful
**/
public static int H5Freopen(int file_id)
throws HDF5LibraryException {
int id = _H5Freopen(file_id);
if (id > 0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Freopen(int file_id)
throws HDF5LibraryException;
//////////////////////////////////////////////////////////////
// //
// H5G: Group Interface Functions //
// //
//////////////////////////////////////////////////////////////
/**
* H5Gcreate creates a new group with the specified name at
* the specified location, loc_id.
*
* @param loc_id The file or group identifier.
* @param name The absolute or relative name of the new group.
* @param size_hint An optional parameter indicating the
* number of bytes to reserve for the names that will appear
* in the group.
*
* @return a valid group identifier for the open group if
* successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public static int H5Gcreate(int loc_id, String name, int size_hint)
throws HDF5LibraryException, NullPointerException {
int id = _H5Gcreate(loc_id, name, size_hint);
if (id >0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Gcreate(int loc_id, String name,
int size_hint)
throws HDF5LibraryException, NullPointerException;
/**
* H5Gopen opens an existing group with the specified name
* at the specified location, loc_id.
*
* @param loc_id File or group identifier within which group
* is to be open.
* @param name Name of group to open.
*
* @return a valid group identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public static int H5Gopen(int loc_id, String name)
throws HDF5LibraryException, NullPointerException {
int id = _H5Gopen(loc_id, name);
if (id > 0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Gopen(int loc_id, String name)
throws HDF5LibraryException, NullPointerException;
/**
* H5Gclose releases resources used by a group which was opened
* by a call to H5Gcreate() or H5Gopen().
*
* @param group_id Group identifier to release.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Gclose(int group_id)
throws HDF5LibraryException {
OPEN_IDS.removeElement(group_id);
return _H5Gclose(group_id);
}
private synchronized static native int _H5Gclose(int group_id)
throws HDF5LibraryException;
/**
* H5Glink creates a new name for an already existing object.
*
* @param loc_id File, group, dataset, or datatype identifier.
* @param link_type Link type. Possible values are:
* <UL>
* <LI>
* H5G_LINK_HARD
* </LI>
* <LI>
* H5G_LINK_SOFT.
* </LI>
* </UL>
* @param current_name A name of the existing object if link is
* a hard link. Can be anything for the soft link.
* @param new_name New name for the object.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - current_name or name is null.
**/
public synchronized static native int H5Glink(int loc_id, int link_type,
String current_name, String new_name)
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Glink2(int curr_loc_id,
String current_name, int link_type, int new_loc_id, String new_name )
throws HDF5LibraryException, NullPointerException;
/**
* H5Gunlink removes an association between a name and an object.
*
* @param loc_id Identifier of the file containing the object.
* @param name Name of the object to unlink.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public synchronized static native int H5Gunlink(int loc_id, String name)
throws HDF5LibraryException, NullPointerException;
/**
* H5Gmove renames an object within an HDF5 file.
* The original name, src, is unlinked from the group graph
* and the new name, dst, is inserted as an atomic operation.
* Both names are interpreted relative to loc_id, which is
* either a file or a group identifier.
*
* @param loc_id File or group identifier.
* @param src Object's original name.
* @param dst Object's new name.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - src or dst is null.
**/
public synchronized static native int H5Gmove(int loc_id, String src,
String dst)
throws HDF5LibraryException, NullPointerException;
/**
* H5Gget_linkval returns size characters of the link value
* through the value argument if loc_id (a file or group
* identifier) and name specify a symbolic link.
*
* @param loc_id IN: Identifier of the file, group, dataset,
* or datatype.
* @param name IN: Name of the object whose link value is to
* be checked.
* @param size IN: Maximum number of characters of value to
* be returned.
* @param value OUT: Link value.
*
* @return a non-negative value, with the link value in value,
* if successful.
*
* @exception ArrayIndexOutOfBoundsException Copy back failed
* @exception ArrayStoreException Copy back failed
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
* @exception IllegalArgumentException - size is invalid
**/
public synchronized static native int H5Gget_linkval(int loc_id, String name,
int size, String[] value)
throws ArrayIndexOutOfBoundsException,
ArrayStoreException,
HDF5LibraryException,
NullPointerException,
IllegalArgumentException;
/**
* H5Gset_comment sets the comment for the the object name
* to comment. Any previously existing comment is overwritten.
*
* @param loc_id IN: Identifier of the file, group, dataset,
* or datatype.
* @param name IN: Name of the object whose comment is to
* be set or reset.
* @param comment IN: The new comment.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name or comment is null.
**/
public synchronized static native int H5Gset_comment(int loc_id, String name,
String comment)
throws HDF5LibraryException, NullPointerException;
/**
* H5Gget_comment retrieves the comment for the the object name.
* The comment is returned in the buffer comment.
*
* @param loc_id IN: Identifier of the file, group, dataset,
* or datatype.
* @param name IN: Name of the object whose comment is to be
* set or reset.
* @param bufsize IN: Anticipated size of the buffer required
* to hold comment.
* @param comment OUT: The comment.
* @return the number of characters in the comment, counting
* the null terminator, if successful
*
* @exception ArrayIndexOutOfBoundsException - JNI error writing
* back data
* @exception ArrayStoreException - JNI error writing
* back data
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
* @exception IllegalArgumentException - size < 1,
* comment is invalid.
**/
public synchronized static native int H5Gget_comment(int loc_id, String name,
int bufsize,
String[] comment)
throws ArrayIndexOutOfBoundsException,
ArrayStoreException,
HDF5LibraryException,
NullPointerException,
IllegalArgumentException;
//////////////////////////////////////////////////////////////
// //
// H5I: Identifier Interface Functions //
// //
//////////////////////////////////////////////////////////////
/**
* H5Iget_type retrieves the type of the object identified
* by obj_id.
*
* @param obj_id IN: Object identifier whose type is to be
* determined.
*
* @return the object type if successful; otherwise H5I_BADID.
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Iget_type(int obj_id)
throws HDF5LibraryException;
//////////////////////////////////////////////////////////////
// //
// H5P: Property List Interface Functions //
// //
//////////////////////////////////////////////////////////////
/**
* H5Pcreate creates a new property as an instance of some
* property list class.
*
* @param type IN: The type of property list
* to create.
*
* @return a property list identifier (plist) if successful;
* otherwise Fail (-1).
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Pcreate(int type)
throws HDF5LibraryException {
int id = _H5Pcreate(type);
if (id >0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Pcreate(int type)
throws HDF5LibraryException;
/**
* H5Pclose terminates access to a property list.
*
* @param plist IN: Identifier of the property list to
* terminate access to.
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Pclose(int plist)
throws HDF5LibraryException {
OPEN_IDS.removeElement(plist);
return _H5Pclose(plist);
}
private synchronized static native int _H5Pclose(int plist)
throws HDF5LibraryException;
/**
* H5Pget_class returns the property list class for the
* property list identified by the plist parameter.
*
* @param plist IN: Identifier of property list to query.
* @return a property list class if successful. Otherwise
* returns H5P_NO_CLASS (-1).
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Pget_class(int plist)
throws HDF5LibraryException;
/**
* H5Pcopy copies an existing property list to create a
* new property list.
*
* @param plist IN: Identifier of property list to duplicate.
*
* @return a property list identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Pcopy(int plist)
throws HDF5LibraryException {
int id = _H5Pcopy(plist);
if (id >0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Pcopy(int plist)
throws HDF5LibraryException;
/**
* H5Pget_version retrieves the version information of various
* objects for a file creation property list.
*
* @param plist IN: Identifier of the file creation property
* list.
* @param version_info OUT: version information.
* <pre>
* version_info[0] = boot // boot block version number
* version_info[1] = freelist // global freelist version
* version_info[2] = stab // symbol tabl version number
* version_info[3] = shhdr // hared object header version
* </pre>
* @return a non-negative value, with the values of version_info
* initialized, if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - version_info is null.
* @exception IllegalArgumentException - version_info is illegal.
**/
public synchronized static native int H5Pget_version(int plist,
int[] version_info)
throws HDF5LibraryException,
NullPointerException,
IllegalArgumentException;
/**
* H5Pset_userblock sets the user block size of a file
* creation property list.
*
* @param plist IN: Identifier of property list to modify.
* @param size IN: Size of the user-block in bytes.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Pset_userblock(int plist, long size)
throws HDF5LibraryException;
/**
* H5Pget_userblock retrieves the size of a user block in a
* file creation property list.
*
* @param plist IN: Identifier for property list to query.
* @param size OUT: Pointer to location to return user-block
* size.
*
* @return a non-negative value and the size of the user block;
* if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - size is null.
**/
public synchronized static native int H5Pget_userblock(int plist, long[] size)
throws HDF5LibraryException,
NullPointerException;
/**
* H5Pset_small_data_block_size reserves blocks of size bytes for the
* contiguous storage of the raw data portion of small datasets.
*
* @param plist IN: Identifier of property list to modify.
* @param size IN: Size of the blocks in bytes.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Pset_small_data_block_size(int plist, long size)
throws HDF5LibraryException;
/**
* H5Pget_small_data_block_size retrieves the size of a block of small
* data in a file creation property list.
*
* @param plist IN: Identifier for property list to query.
* @param size OUT: Pointer to location to return block
* size.
*
* @return a non-negative value and the size of the user block;
* if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - size is null.
**/
public synchronized static native int H5Pget_small_data_block_size(int plist, long[] size)
throws HDF5LibraryException,
NullPointerException;
/**
* H5Pset_sizes sets the byte size of the offsets and lengths
* used to address objects in an HDF5 file.
*
* @param plist IN: Identifier of property list to modify.
* @param sizeof_addr IN: Size of an object offset in bytes.
* @param sizeof_size IN: Size of an object length in bytes.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Pset_sizes(int plist, int sizeof_addr,
int sizeof_size)
throws HDF5LibraryException;
/**
* H5Pget_sizes retrieves the size of the offsets and lengths
* used in an HDF5 file. This function is only valid for file
* creation property lists.
*
* @param plist IN: Identifier of property list to query.
* @param size OUT: the size of the offsets and length.
* <pre>
* size[0] = sizeof_addr // offset size in bytes
* size[1] = sizeof_size // length size in bytes
* </pre>
* @return a non-negative value with the sizes initialized;
* if successful;
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - size is null.
* @exception IllegalArgumentException - size is invalid.
**/
public synchronized static native int H5Pget_sizes(int plist, int[] size)
throws HDF5LibraryException,
NullPointerException,
IllegalArgumentException;
/**
* H5Pset_sym_k sets the size of parameters used to control the
* symbol table nodes.
*
* @param plist IN: Identifier for property list to query.
* @param ik IN: Symbol table tree rank.
* @param lk IN: Symbol table node size.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Pset_sym_k(int plist, int ik, int lk)
throws HDF5LibraryException;
/**
* H5Pget_sym_k retrieves the size of the symbol table
* B-tree 1/2 rank and the symbol table leaf node 1/2 size.
*
* @param plist IN: Property list to query.
* @param size OUT: the symbol table's B-tree 1/2 rank
* and leaf node 1/2 size.
* <pre>
* size[0] = ik // the symbol table's B-tree 1/2 rank
* size[1] = lk // leaf node 1/2 size
* </pre>
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - size is null.
* @exception IllegalArgumentException - size is invalid.
**/
public synchronized static native int H5Pget_sym_k(int plist, int[] size)
throws HDF5LibraryException,
NullPointerException,
IllegalArgumentException;
/**
* H5Pset_istore_k sets the size of the parameter used to
* control the B-trees for indexing chunked datasets.
*
* @param plist IN: Identifier of property list to query.
* @param ik IN: 1/2 rank of chunked storage B-tree.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Pset_istore_k(int plist, int ik)
throws HDF5LibraryException;
/**
* H5Pget_istore_k queries the 1/2 rank of an indexed
* storage B-tree.
*
* @param plist IN: Identifier of property list to query.
* @param ik OUT: Pointer to location to return the chunked
* storage B-tree 1/2 rank.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - ik array is null.
**/
public synchronized static native int H5Pget_istore_k(int plist, int[] ik)
throws HDF5LibraryException,
NullPointerException;
/**
* H5Pset_layout sets the type of storage used store the
* raw data for a dataset.
*
* @param plist IN: Identifier of property list to query.
* @param layout IN: Type of storage layout for raw data.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Pset_layout(int plist, int layout)
throws HDF5LibraryException;
/**
* H5Pget_layout returns the layout of the raw data for a dataset.
*
* @param plist IN: Identifier for property list to query.
*
* @return the layout type of a dataset creation property
* list if successful.
* Otherwise returns H5D_LAYOUT_ERROR (-1).
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Pget_layout(int plist)
throws HDF5LibraryException;
/**
* H5Pset_chunk sets the size of the chunks used to store a
* chunked layout dataset.
*
* @param plist IN: Identifier for property list to query.
* @param ndims IN: The number of dimensions of each chunk.
* @param dim IN: An array containing the size of each chunk.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - dims array is null.
* @exception IllegalArgumentException - dims <=0
**/
public synchronized static native int H5Pset_chunk(int plist, int ndims,
byte[] dim)
throws HDF5LibraryException,
NullPointerException,
IllegalArgumentException;
public synchronized static int H5Pset_chunk(int plist, int ndims,
long[] dim)
throws HDF5Exception,
NullPointerException,
IllegalArgumentException
{
if (dim == null) {
return -1;
}
HDFArray theArray = new HDFArray(dim);
byte[] thedims = theArray.byteify();
int retVal = H5Pset_chunk(plist, ndims, thedims );
thedims = null;
theArray = null;
return retVal;
}
/**
* H5Pget_chunk retrieves the size of chunks for the raw
* data of a chunked layout dataset.
*
* @param plist IN: Identifier of property list to query.
* @param max_ndims IN: Size of the dims array.
* @param dims OUT: Array to store the chunk dimensions.
*
* @return chunk dimensionality successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - dims array is null.
* @exception IllegalArgumentException - max_ndims <=0
**/
public synchronized static native int H5Pget_chunk(int plist, int max_ndims,
long[] dims)
throws HDF5LibraryException,
NullPointerException,
IllegalArgumentException;
/**
* H5Pset_alignment sets the alignment properties of a
* file access property list so that any file object >=
* THRESHOLD bytes will be aligned on an address which
* is a multiple of ALIGNMENT.
*
* @param plist IN: Identifier for a file access property list.
* @param threshold IN: Threshold value.
* @param alignment IN: Alignment value.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Pset_alignment(int plist,
long threshold, long alignment)
throws HDF5LibraryException;
/**
* H5Pget_alignment retrieves the current settings for
* alignment properties from a file access property list.
*
* @param plist IN: Identifier of a file access property list.
* @param alignment OUT: threshold value and alignment value.
* <pre>
* alignment[0] = threshold // threshold value
* alignment[1] = alignment // alignment value
* </pre>
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - aligment array is null.
* @exception IllegalArgumentException - aligment array is
* invalid.
**/
public synchronized static native int H5Pget_alignment(int plist,
long[] alignment)
throws HDF5LibraryException,
NullPointerException,
IllegalArgumentException;
/**
* H5Pset_external adds an external file to the list of
* external files.
*
* @param plist IN: Identifier of a dataset creation property
* list.
* @param name IN: Name of an external file.
* @param offset IN: Offset, in bytes, from the beginning
* of the file to the location in the file where the
* data starts.
* @param size IN: Number of bytes reserved in the file for
* the data.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public synchronized static native int H5Pset_external(int plist, String name,
long offset, long size)
throws HDF5LibraryException, NullPointerException;
/**
* H5Pget_external_count returns the number of external
* files for the specified dataset.
*
* @param plist IN: Identifier of a dataset creation property
* list.
*
* @return the number of external files if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Pget_external_count(int plist)
throws HDF5LibraryException;
/**
* H5Pget_external returns information about an external file.
*
* @param plist IN: Identifier of a dataset creation property
* list.
* @param idx IN: External file index.
* @param name_size IN: Maximum length of name array.
* @param name OUT: Name of the external file.
* @param size OUT: the offset value and the size of
* the external file data.
* <pre>
* size[0] = offset // a location to return an offset value
* size[1] = size // a location to return the size of
* // the external file data.
* </pre>
*
* @return a non-negative value if successful
*
* @exception ArrayIndexOutOfBoundsException Fatal
* error on Copyback
* @exception ArrayStoreException Fatal error on Copyback
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name or size is null.
* @exception IllegalArgumentException - name_size <= 0 .
*
**/
public synchronized static native int H5Pget_external(int plist, int idx,
int name_size, String[] name, long[] size)
throws ArrayIndexOutOfBoundsException,
ArrayStoreException,
HDF5LibraryException,
NullPointerException,
IllegalArgumentException;
/**
* H5Pset_fill_value sets the fill value for a dataset creation
* property list.
*
* @param plist_id IN: Property list identifier.
* @param type_id IN: The datatype identifier of value.
* @param value IN: The fill value.
*
* @return a non-negative value if successful
*
* @exception HDF5Exception - Error converting data array
**/
public synchronized static native int H5Pset_fill_value(int plist_id,
int type_id, byte[] value)
throws HDF5Exception;
/**
* H5Pset_fill_value sets the fill value for a dataset creation
* property list.
*
* @param plist_id IN: Property list identifier.
* @param type_id IN: The datatype identifier of value.
* @param obj IN: The fill value.
*
* @return a non-negative value if successful
*
* @exception HDF5Exception - Error converting data array
**/
public synchronized static int H5Pset_fill_value(int plist_id,
int type_id, Object obj)
throws HDF5Exception
{
HDFArray theArray = new HDFArray(obj);
byte[] buf = theArray.byteify();
int retVal = H5Pset_fill_value(plist_id, type_id, buf);
buf = null;
theArray = null;
return retVal;
}
/**
* H5Pget_fill_value queries the fill value property of a dataset
* creation property list. <b>NOT IMPLEMENTED YET</B>
*
* @param plist_id IN: Property list identifier.
* @param type_id IN: The datatype identifier of value.
* @param value IN: The fill value.
*
* @return a non-negative value if successful
*
**/
public synchronized static native int H5Pget_fill_value(int plist_id,
int type_id, byte[] value)
throws HDF5Exception;
/**
* H5Pget_fill_value queries the fill value property of a dataset
* creation property list. <b>NOT IMPLEMENTED YET</B>
*
* @param plist_id IN: Property list identifier.
* @param type_id IN: The datatype identifier of value.
* @param obj IN: The fill value.
*
* @return a non-negative value if successful
*
**/
public synchronized static int H5Pget_fill_value(int plist_id, int type_id, Object obj)
throws HDF5Exception
{
HDFArray theArray = new HDFArray(obj);
byte[] buf = theArray.emptyBytes();
int status = H5Pget_fill_value(plist_id, type_id, buf);
if (status >= 0) {
obj = theArray.arrayify( buf);
}
return status;
}
/**
* H5Pset_filter adds the specified filter and corresponding
* properties to the end of an output filter pipeline.
*
* @param plist IN: Property list identifier.
* @param filter IN: Filter to be added to the pipeline.
* @param flags IN: Bit vector specifying certain general
* properties of the filter.
* @param cd_nelmts IN: Number of elements in cd_values
* @param cd_values IN: Auxiliary data for the filter.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Pset_filter(int plist, int filter,
int flags, int cd_nelmts, int[] cd_values)
throws HDF5LibraryException;
/**
* H5Pget_nfilters returns the number of filters defined in
* the filter pipeline associated with the property list plist.
*
* @param plist IN: Property list identifier.
*
* @return the number of filters in the pipeline if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Pget_nfilters(int plist)
throws HDF5LibraryException;
/**
* H5Pget_filter returns information about a filter, specified
* by its filter number, in a filter pipeline, specified by
* the property list with which it is associated.
*
* @param plist IN: Property list identifier.
* @param filter_number IN: Sequence number within the
* filter pipeline of the filter for which information is sought.
* @param flags OUT: Bit vector specifying certain general
* properties of the filter.
* @param cd_nelmts IN/OUT: Number of elements in cd_values
* @param cd_values OUT: Auxiliary data for the filter.
* @param namelen IN: Anticipated number of characters in name.
* @param name OUT: Name of the filter.
*
* @return the filter identification number if successful. Otherwise
* returns H5Z_FILTER_ERROR (-1).
*
* @exception ArrayIndexOutOfBoundsException
* Fatal error on Copyback
* @exception ArrayStoreException Fatal error on Copyback
* @exception NullPointerException - name or an array is null.
*
**/
public synchronized static native int H5Pget_filter(int plist,
int filter_number, int[] flags,
int[] cd_nelmts, int[] cd_values,
int namelen, String[] name)
throws ArrayIndexOutOfBoundsException,
ArrayStoreException,
HDF5LibraryException,
NullPointerException ;
// REMOVED in HDF5.1.4
// /**
// * H5Pget_driver returns the identifier of the low-level
// * file driver.
// * <p>
// * Valid identifiers are:
// * <UL>
// * <LI>
// * H5F_LOW_STDIO (0)
// * </LI>
// * <LI>
// * H5F_LOW_SEC2 (1)
// * </LI>
// * <LI>
// * H5F_LOW_MPIO (2)
// * </LI>
// * <LI>
// * H5F_LOW_CORE (3)
// * </LI>
// * <LI>
// * H5F_LOW_SPLIT (4)
// * </LI>
// * <LI>
// * H5F_LOW_FAMILY (5)
// * </LI>
// * </UL>
// *
// * @param plist IN: Identifier of a file access property list.
// *
// * @return a low-level driver identifier if successful. Otherwise returns
// * H5F_LOW_ERROR (-1).
// *
// * @exception HDF5LibraryException - Error from the HDF-5 Library.
// **/
// public synchronized static native int H5Pget_driver(int plist)
// throws HDF5LibraryException;
// /**
// * H5Pset_stdio sets the low level file driver to use the
// * functions declared in the stdio.h file: fopen(), fseek()
// * or fseek64(), fread(), fwrite(), and fclose().
// *
// * @param plist IN: Identifier of a file access property list.
// *
// * @return a non-negative value if successful
// *
// **/
// public synchronized static native int H5Pset_stdio(int plist)
// throws HDF5LibraryException;
// /**
// * H5Pget_stdio checks to determine whether the file access
// * property list is set to the stdio driver.
// *
// * @param plist IN: Identifier of a file access property list.
// * @return true if the file access property list is set to
// * the stdio driver. Otherwise returns a negative value.
// *
// **/
// public synchronized static native boolean H5Pget_stdio(int plist);
// /**
// * H5Pset_sec2 sets the low-level file driver to use the
// * functions declared in the unistd.h file: open(), lseek()
// * or lseek64(), read(), write(), and close().
// *
// * @param plist IN: Identifier of a file access property list.
// * @return a non-negative value if successful
// *
// * @exception HDF5LibraryException - Error from the HDF-5 Library.
// **/
// public synchronized static native int H5Pset_sec2(int plist)
// throws HDF5LibraryException;
// /**
// * H5Pget_sec2 checks to determine whether the file access
// * property list is set to the sec2 driver.
// *
// * @param plist IN: Identifier of a file access property list.
// * @return true if the file access property list is set to
// * the sec2 driver. Otherwise returns a negative value.
// *
// * @exception HDF5LibraryException - Error from the HDF-5 Library.
// **/
// public synchronized static native boolean H5Pget_sec2(int plist)
// throws HDF5LibraryException;
// /**
// * H5Pset_core sets the low-level file driver to use malloc() and
// * free().
// *
// * @param plist IN: Identifier of a file access property list.
// * @param increment IN: File block size in bytes.
// *
// * @return a non-negative value if successful
// *
// * @exception HDF5LibraryException - Error from the HDF-5 Library.
// **/
// public synchronized static native int H5Pset_core(int plist, int increment)
// throws HDF5LibraryException;
// /**
// * H5Pget_core checks to determine whether the file access
// * property list is set to the core driver.
// *
// * @param plist IN: Identifier of the file access property list.
// * @param increment OUT: A location to return the file block size
// * @return true if the file access property list is set to
// * the core driver.
// *
// * @exception HDF5LibraryException - Error from the HDF-5 Library.
// **/
// public synchronized static native boolean H5Pget_core(int plist,
// int[] increment)
// throws HDF5LibraryException;
// /**
// * H5Pset_split sets the low-level driver to split meta data
// * from raw data, storing meta data in one file and raw data
// * in another file.
// *
// * @param plist IN: Identifier of the file access property list.
// * @param meta_ext IN: Name of the extension for the metafile
// * filename. Recommended default value: <i>.meta</i>.
// * @param meta_plist IN: Identifier of the meta file access
// * property list.
// * @param raw_ext IN: Name extension for the raw file filename.
// * Recommended default value: <i>.raw</i>.
// * @param raw_plist IN: Identifier of the raw file access
// * property list.
// * @return a non-negative value if successful
// *
// * @exception HDF5LibraryException - Error from the HDF-5 Library.
// * @exception NullPointerException - a string is null.
// **/
// public synchronized static native int H5Pset_split(int plist, String meta_ext,
// int meta_plist, String raw_ext, int raw_plist)
// throws HDF5LibraryException,
// NullPointerException;
// /**
// * H5Pget_split checks to determine whether the file access
// * property list is set to the split driver.
// *
// * @param plist IN: Identifier of the file access property list.
// * @param meta_ext_size IN: Number of characters of the
// * meta file extension to be copied to the meta_ext buffer.
// * @param meta_ext IN: Meta file extension.
// * @param *meta_properties OUT: A copy of the meta file
// * access property list.
// * @param raw_ext_size IN: Number of characters of the
// * raw file extension to be copied to the raw_ext buffer.
// * @param raw_ext OUT: Raw file extension.
// * @param *raw_properties OUT: A copy of the raw file
// * access property list.
// *
// * @return true if the file access property list is set to
// * the split driver.
// *
// * @exception ArrayIndexOutOfBoundsException JNI error
// * writing back array
// * @exception ArrayStoreException JNI error writing back array
// * @exception HDF5LibraryException - Error from the HDF-5 Library.
// * @exception NullPointerException - a string or array is null.
// **/
// public synchronized static native boolean H5Pget_split(int plist,
// int meta_ext_size, String[] meta_ext,
// int[] meta_properties, int raw_ext_size,
// String[] raw_ext, int[] raw_properties)
// throws ArrayIndexOutOfBoundsException,
// ArrayStoreException,
// HDF5LibraryException,
// NullPointerException;
// /**
// * H5Pset_family sets the file access properties to use the
// * family driver; any previously defined driver properties
// * are erased from the property list.
// *
// * @param plist IN: Identifier of the file access property list.
// * @param memb_size IN: Logical size, in bytes, of each
// * family member.
// * @param memb_plist IN: Identifier of the file access
// * property list for each member of the family.
// * @return a non-negative value if successful
// *
// * @exception HDF5LibraryException - Error from the HDF-5 Library.
// **/
// public synchronized static native int H5Pset_family(int plist, long memb_size,
// int memb_plist)
// throws HDF5LibraryException;
// /**
// * H5Pget_family checks to determine whether the file access
// * property list is set to the family driver.
// *
// * @param plist IN: Identifier of the file access property list.
// * @param memb_size OUT: Logical size, in bytes, of each
// * family member.
// * @param *memb_plist OUT: Identifier of the file access
// * property list for each member of the family.
// *
// * @return a non-negative value if the file access property
// * list is set to the family driver.
// *
// * @exception HDF5LibraryException - Error from the HDF-5 Library.
// * @exception NullPointerException - an array is null.
// **/
// public synchronized static native int H5Pget_family(int tid, long[] memb_size,
// int[] memb_plist)
// throws HDF5LibraryException, NullPointerException;
/**
* H5Pset_cache sets the number of elements (objects) in the meta
* data cache and the total number of bytes in the raw data chunk
* cache.
*
* @param plist IN: Identifier of the file access property list.
* @param mdc_nelmts IN: Number of elements (objects) in the
* meta data cache.
* @param rdcc_nbytes IN: Total size of the raw data chunk
* cache, in bytes.
* @param rdcc_w0 IN: Preemption policy.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Pset_cache(int plist, int mdc_nelmts,
int rdcc_nelmts, int rdcc_nbytes, double rdcc_w0)
throws HDF5LibraryException;
/**
* Retrieves the maximum possible number of elements in the meta
* data cache and the maximum possible number of bytes and the
* RDCC_W0 value in the raw data chunk cache.
*
* @param plist IN: Identifier of the file access property list.
* @param mdc_nelmts IN/OUT: Number of elements (objects) in
* the meta data cache.
* @param rdcc_nbytes IN/OUT: Total size of the raw data
* chunk cache, in bytes.
* @param rdcc_w0 IN/OUT: Preemption policy.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - an array is null.
**/
public synchronized static native int H5Pget_cache(int plist, int[] mdc_nelmts,
int[] rdcc_nelmts, int[] rdcc_nbytes, double[] rdcc_w0)
throws HDF5LibraryException, NullPointerException;
/**
* H5Pset_buffer sets type conversion and background buffers.
* status to TRUE or FALSE.
*
* Given a dataset transfer property list, H5Pset_buffer sets the maximum
* size for the type conversion buffer and background buffer and optionally
* supplies pointers to application-allocated buffers. If the buffer size
* is smaller than the entire amount of data being transferred between the
* application and the file, and a type conversion buffer or background
* buffer is required, then strip mining will be used.
*
* Note that there are minimum size requirements for the buffer. Strip
* mining can only break the data up along the first dimension, so the
* buffer must be large enough to accommodate a complete slice that
* encompasses all of the remaining dimensions. For example, when strip
* mining a 100x200x300 hyperslab of a simple data space, the buffer must
* be large enough to hold 1x200x300 data elements. When strip mining a
* 100x200x300x150 hyperslab of a simple data space, the buffer must be
* large enough to hold 1x200x300x150 data elements.
*
* If tconv and/or bkg are null pointers, then buffers will be allocated
* and freed during the data transfer.
*
* @param plist Identifier for the dataset transfer property list.
* @param size Size, in bytes, of the type conversion and background buffers.
* @param tconv byte array of application-allocated type conversion buffer.
* @param bkg byte array of application-allocated background buffer.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception IllegalArgumentException - plist is invalid.
**/
public synchronized static native int H5Pset_buffer(int plist, int size,
byte[] tconv, byte[] bkg)
throws HDF5LibraryException, IllegalArgumentException;
/**
* HH5Pget_buffer gets type conversion and background buffers.
* Returns buffer size, in bytes, if successful; otherwise 0 on failure.
*
* @param plist Identifier for the dataset transfer property list.
* @param tconv byte array of application-allocated type conversion buffer.
* @param bkg byte array of application-allocated background buffer.
*
* @return buffer size, in bytes, if successful; otherwise 0 on failure
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception IllegalArgumentException - plist is invalid.
**/
public synchronized static native int H5Pget_buffer(int plist,
byte[] tconv, byte[] bkg)
throws HDF5LibraryException, IllegalArgumentException;
/**
* H5Pset_preserve sets the dataset transfer property list
* status to TRUE or FALSE.
*
* @param plist IN: Identifier for the dataset transfer
* property list.
* @param status IN: Status of for the dataset transfer
* property list.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception IllegalArgumentException - plist is invalid.
**/
public synchronized static native int H5Pset_preserve(int plist,
boolean status)
throws HDF5LibraryException, IllegalArgumentException;
/**
* H5Pget_preserve checks the status of the dataset transfer
* property list.
*
* @param plist IN: Identifier for the dataset transfer
* property list.
*
* @return TRUE or FALSE if successful; otherwise returns a negative value
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Pget_preserve(int plist)
throws HDF5LibraryException;
/**
* H5Pset_deflate sets the compression method for a dataset.
*
* @param plist IN: Identifier for the dataset creation
* property list.
* @param level IN: Compression level.
*
* @return non-negative if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Pset_deflate(int plist, int level)
throws HDF5LibraryException;
/**
* H5Pset_gc_references Sets the flag for garbage collecting
* references for the file. Default value for garbage
* collecting references is off.
*
* @param fapl_id IN File access property list
* @param gc_ref IN set GC on (true) or off (false)
*
* @return non-negative if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Pset_gc_references(int fapl_id,
boolean gc_ref)
throws HDF5LibraryException;
/**
* H5Pget_gc_references Returns the current setting for the
* garbage collection refernces property from a file
* access property list.
* <p>
* ** Note: this routine changed name with HDF5.1.2.2. If using
* an earlier version, use
* 'configure --enable-hdf5_1_2_1'
* so this routine will link to the old name.
*
* @param fapl_id IN File access property list
* @param gc_ref OUT GC is on (true) or off (false)
*
* @return non-negative if succeed
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - array is null.
**/
public synchronized static native int H5Pget_gc_references(int fapl_id,
boolean[] gc_ref)
throws HDF5LibraryException,
NullPointerException;
/*
* Earlier versions of the HDF5 library had a different
* name. This is included as an alias.
*/
public synchronized static int H5Pget_gc_reference(int fapl_id,
boolean[] gc_ref)
throws HDF5LibraryException,
NullPointerException
{
return H5Pget_gc_references(fapl_id,
gc_ref);
}
/**
* H5Pset_btree_ratio Sets B-tree split ratios for a dataset
* transfer property list. The split ratios determine what
* percent of children go in the first node when a node splits.
*
* @param plist_id IN Dataset transfer property list
* @param left IN split ratio for leftmost nodes
* @param right IN split ratio for righttmost nodes
* @param middle IN split ratio for all other nodes
*
* @return non-negative if succeed
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Pset_btree_ratios(int plist_id,
double left, double middle, double right)
throws HDF5LibraryException;
/**
* H5Pget_btree_ratio Get the B-tree split ratios for a dataset
* transfer property list.
*
* @param plist_id IN Dataset transfer property list
* @param left OUT split ratio for leftmost nodes
* @param right OUT split ratio for righttmost nodes
* @param middle OUT split ratio for all other nodes
*
* @return non-negative if succeed
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - an input array is null.
**/
public synchronized static native int H5Pget_btree_ratios(int plist_id,
double[] left, double[] middle, double[] right)
throws HDF5LibraryException, NullPointerException;
//////////////////////////////////////////////////////////////
// //
// H5R: Reference Interface Functions //
// //
//////////////////////////////////////////////////////////////
private synchronized static native int H5Rcreate(byte[] ref,
int loc_id, String name, int ref_type, int space_id)
throws HDF5LibraryException,
NullPointerException,
IllegalArgumentException;
/**
* H5Rcreate creates the reference, ref, of the type specified in
* ref_type, pointing to the object name located at loc_id.
*
* @param loc_id IN: Location identifier used to locate
* the object being pointed to.
* @param name IN: Name of object at location loc_id.
* @param ref_type IN: Type of reference.
* @param space_id IN: Dataspace identifier with selection.
*
* @return the reference (byte[]) if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - an input array is null.
* @exception IllegalArgumentException - an input array is
* invalid.
**/
public synchronized static byte[] H5Rcreate(
int loc_id, String name, int ref_type, int space_id)
throws HDF5LibraryException,
NullPointerException,
IllegalArgumentException
{
/* These sizes are correct for HDF5.1.2 */
int ref_size = 8;
if (ref_type == HDF5Constants.H5R_DATASET_REGION) {
ref_size = 12;
}
byte rbuf[] = new byte[ref_size];
/* will raise an exception if fails */
H5Rcreate(rbuf, loc_id, name, ref_type, space_id);
return rbuf;
}
/**
* Given a reference to some object, H5Rdereference opens
* that object and return an identifier.
*
* @param dataset IN: Dataset containing reference object.
* @param ref_type IN: The reference type of ref.
* @param ref IN: reference to an object
*
* @return valid identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - output array is null.
* @exception IllegalArgumentException - output array is invalid.
**/
public static int H5Rdereference(int dataset,
int ref_type, byte[] ref)
throws HDF5LibraryException,
NullPointerException,
IllegalArgumentException {
int id = _H5Rdereference(dataset, ref_type, ref);
if (id >0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Rdereference(int dataset,
int ref_type, byte[] ref)
throws HDF5LibraryException,
NullPointerException,
IllegalArgumentException;
/**
* Given a reference to an object ref, H5Rget_region creates
* a copy of the dataspace of the dataset pointed to and
* defines a selection in the copy which is the region
* pointed to.
*
* @param loc_id IN: loc_id of the reference object.
* @param ref_type IN: The reference type of ref.
* @param ref OUT: the reference to the object and region
*
* @return a valid identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - output array is null.
* @exception IllegalArgumentException - output array is invalid.
**/
public static int H5Rget_region(int loc_id, int ref_type,
byte[] ref )
throws HDF5LibraryException,
NullPointerException,
IllegalArgumentException {
int id = _H5Rget_region(loc_id, ref_type, ref );
if (id >0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Rget_region(int loc_id, int ref_type,
byte[] ref )
throws HDF5LibraryException,
NullPointerException,
IllegalArgumentException;
/*
[NOTE: This function is only supported in HDF5 Releases 1.4.x. It has been
replaced in Release 1.6 by the function H5Rget_obj_type
public synchronized static native int H5Rget_object_type(int loc_id,
byte ref[])
throws HDF5LibraryException,
NullPointerException,
IllegalArgumentException;
*/
/**
* Given a reference to an object ref, H5Rget_obj_type
* returns the type of the object pointed to.
*
* @param loc_id IN: loc_id of the reference object.
* @param ref_type IN: Type of reference to query. *
* @param ref IN: the reference
*
* @return a valid identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - array is null.
* @exception IllegalArgumentException - array is invalid.
**/
public synchronized static native int H5Rget_obj_type(int loc_id,
int ref_type,
byte ref[])
throws HDF5LibraryException,
NullPointerException,
IllegalArgumentException;
//////////////////////////////////////////////////////////////
// //
// H5S: Dataspace Interface Functions //
// //
//////////////////////////////////////////////////////////////
/**
* H5Screate creates a new dataspace of a particular type.
*
* @param type The type of dataspace to be created.
*
* @return a dataspace identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Screate(int type)
throws HDF5LibraryException {
int id = _H5Screate(type);
if (id > 0) OPEN_IDS.addElement(type);
return id;
}
private synchronized static native int _H5Screate(int type)
throws HDF5LibraryException;
/**
* H5Screate_simple creates a new simple data space and opens
* it for access.
*
* @param rank Number of dimensions of dataspace.
* @param dims An array of the size of each dimension.
* @param maxdims An array of the maximum size of each dimension.
*
* @return a dataspace identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - dims or maxdims is null.
**/
public static int H5Screate_simple(int rank, byte[] dims,
byte[] maxdims)
throws HDF5LibraryException,
NullPointerException {
int id = _H5Screate_simple(rank, dims,maxdims);
if (id>0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Screate_simple(int rank, byte[] dims,
byte[] maxdims)
throws HDF5LibraryException,
NullPointerException;
public synchronized static int H5Screate_simple(int rank, long[] dims,
long[] maxdims)
throws HDF5Exception,
NullPointerException
{
if (dims == null) {
return -1;
}
HDFArray theArray = new HDFArray(dims);
byte[] thedims = theArray.byteify();
byte[] themaxdims = null;
HDFArray theArr = null;
if (maxdims != null) {
theArr = new HDFArray(maxdims);
themaxdims = theArr.byteify();
}
int retVal = H5Screate_simple(rank, thedims,
themaxdims);
thedims = null;
themaxdims = null;
theArr = null;
theArray = null;
return retVal;
}
/**
* H5Scopy creates a new dataspace which is an exact copy of the
* dataspace identified by space_id.
*
* @param space_id Identifier of dataspace to copy.
* @return a dataspace identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Scopy(int space_id)
throws HDF5LibraryException {
int id = _H5Scopy(space_id);
if (id > 0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Scopy(int space_id)
throws HDF5LibraryException;
/**
* H5Sselect_elements selects array elements to be included in the
* selection for the space_id dataspace.
*
* @param space_id Identifier of the dataspace.
* @param op operator specifying how the new selection is
* combined.
* @param num_elements Number of elements to be selected.
* @param coord A 2-dimensional array specifying the
* coordinates of the elements.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
private synchronized static native int H5Sselect_elements(int space_id, int op,
int num_elements, byte[] coord)
throws HDF5LibraryException,
NullPointerException;
/**
* H5Sselect_elements selects array elements to be included in the
* selection for the space_id dataspace.
*
* @param space_id Identifier of the dataspace.
* @param op operator specifying how the new selection is
* combined.
* @param num_elements Number of elements to be selected.
* @param coord2D A 2-dimensional array specifying the
* coordinates of the elements.
*
* @return a non-negative value if successful
*
* @exception HDF5Exception - Error in the data conversion
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - cord array is
**/
public synchronized static int H5Sselect_elements(int space_id, int op,
int num_elements, long[][] coord2D)
throws HDF5Exception,
HDF5LibraryException,
NullPointerException
{
if (coord2D == null) {
return -1;
}
HDFArray theArray = new HDFArray(coord2D);
byte[] coord = theArray.byteify();
int retVal = H5Sselect_elements(space_id, op,
num_elements, coord);
coord = null;
theArray = null;
return retVal;
}
/**
* H5Sselect_all selects the entire extent of the
* dataspace space_id.
*
* @param space_id IN: The identifier of the dataspace
* to be selected.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Sselect_all(int space_id)
throws HDF5LibraryException;
/**
* H5Sselect_none resets the selection region for the
* dataspace space_id to include no elements.
*
* @param space_id IN: The identifier of the dataspace to
* be reset.
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Sselect_none(int space_id)
throws HDF5LibraryException;
/**
* H5Sselect_valid verifies that the selection for the dataspace.
*
* @param space_id The identifier for the dataspace in
* which the selection is being reset.
*
* @return true if the selection is contained within
* the extent and FALSE if it is not or is an error.
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native boolean H5Sselect_valid(int space_id)
throws HDF5LibraryException;
/**
* H5Sget_simple_extent_npoints determines the number of elements
* in a dataspace.
*
* @param space_id ID of the dataspace object to query
* @return the number of elements in the dataspace if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native long H5Sget_simple_extent_npoints(
int space_id)
throws HDF5LibraryException;
/**
* H5Sget_select_npoints determines the number of elements in the
* current selection of a dataspace.
*
* @param space_id Dataspace identifier.
*
* @return the number of elements in the selection if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native long H5Sget_select_npoints(int space_id)
throws HDF5LibraryException;
/**
* H5Sget_simple_extent_ndims determines the dimensionality
* (or rank) of a dataspace.
*
* @param space_id Identifier of the dataspace
* @return the number of dimensions in the dataspace if
* successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Sget_simple_extent_ndims(int space_id)
throws HDF5LibraryException;
/**
* H5Sget_simple_extent_dims returns the size and maximum sizes of
* each dimension of a dataspace through the dims and maxdims
* parameters.
*
* @param space_id IN: Identifier of the dataspace object to
* query
* @param dims OUT: Pointer to array to store the size of
* each dimension.
* @param maxdims OUT: Pointer to array to store the maximum
* size of each dimension.
*
* @return the number of dimensions in the dataspace if
* successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - dims or maxdims is null.
**/
public synchronized static native int H5Sget_simple_extent_dims(int space_id,
long[] dims, long[] maxdims)
throws HDF5LibraryException,
NullPointerException;
/**
* H5Sget_simple_extent_type queries a dataspace to determine the
* current class of a dataspace.
*
* @param space_id Dataspace identifier.
*
* @return a dataspace class name if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Sget_simple_extent_type(int space_id)
throws HDF5LibraryException;
/**
* H5Sset_extent_simple sets or resets the size of an existing
* dataspace.
*
* @param space_id Dataspace identifier.
* @param rank Rank, or dimensionality, of the dataspace.
* @param current_size Array containing current size of dataspace.
* @param maximum_size Array containing maximum size of dataspace.
*
* @return a dataspace identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Sset_extent_simple(int space_id,
int rank, byte[] current_size, byte[] maximum_size)
throws HDF5LibraryException,
NullPointerException;
public synchronized static int H5Sset_extent_simple(int space_id,
int rank, long[] current_size, long[] maximum_size)
throws HDF5Exception,
NullPointerException
{
if (current_size == null) {
return -1;
}
HDFArray theArray = new HDFArray(current_size);
byte[] thecurr = theArray.byteify();
byte[] themax = null;
HDFArray theArr = null;
if (maximum_size != null) {
theArr = new HDFArray(maximum_size);
themax = theArr.byteify();
}
int retVal = H5Sset_extent_simple(space_id, rank, thecurr, themax);
thecurr = null;
themax = null;
theArr = null;
theArray = null;
return retVal;
}
/**
* H5Sis_simple determines whether a dataspace is a simple
* dataspace.
*
* @param space_id Identifier of the dataspace to query
*
* @return true if is a simple dataspace
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native boolean H5Sis_simple(int space_id)
throws HDF5LibraryException;
/**
* H5Soffset_simple sets the offset of a simple dataspace
* space_id.
*
* @param space_id IN: The identifier for the dataspace
* object to reset.
* @param offset IN: The offset at which to position the
* selection.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - offset array is null.
**/
public synchronized static native int H5Soffset_simple(int space_id,
byte[] offset)
throws HDF5LibraryException,
NullPointerException;
public synchronized static int H5Soffset_simple(int space_id,
long[] offset)
throws HDF5Exception,
NullPointerException
{
if (offset == null) {
return -1;
}
HDFArray theArray = new HDFArray(offset);
byte[] theArr = theArray.byteify();
int retVal = H5Soffset_simple(space_id, theArr);
theArr = null;
theArray = null;
return retVal;
}
/**
* H5Sextent_copy copies the extent from source_space_id to
* dest_space_id. This action may change the type of the
* dataspace.
*
* @param dest_space_id IN: The identifier for the dataspace
* from which the extent is copied.
* @param source_space_id IN: The identifier for the
* dataspace to which the extent is copied.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Sextent_copy(int dest_space_id,
int source_space_id)
throws HDF5LibraryException;
/**
* H5Sset_extent_none removes the extent from a dataspace and
* sets the type to H5S_NONE.
*
* @param space_id The identifier for the dataspace from
* which the extent is to be removed.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Sset_extent_none(int space_id)
throws HDF5LibraryException;
/**
* H5Sselect_hyperslab selects a hyperslab region to add to
* the current selected region for the dataspace specified
* by space_id. The start, stride, count, and block arrays
* must be the same size as the rank of the dataspace.
*
* @param space_id IN: Identifier of dataspace selection
* to modify
* @param op IN: Operation to perform on current selection.
* @param start IN: Offset of start of hyperslab
* @param stride IN: Hyperslab stride.
* @param count IN: Number of blocks included in hyperslab.
* @param block IN: Size of block in hyperslab.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - an input array is null.
* @exception NullPointerException - an input array is invalid.
**/
public synchronized static native int H5Sselect_hyperslab(int space_id,
int op, byte[] start,
byte[] stride, byte[] count, byte[] block)
throws HDF5LibraryException,
NullPointerException,
IllegalArgumentException;
public synchronized static int H5Sselect_hyperslab(int space_id,
int op, long[] start,
long[] stride, long[] count, long[] block)
throws HDF5Exception,
NullPointerException,
IllegalArgumentException
{
byte[] thestart = null;
if (start != null) {
HDFArray theA1 = new HDFArray(start);
thestart = theA1.byteify();
theA1 = null;
}
byte[] thecount = null;
if (count != null) {
HDFArray theA2 = new HDFArray(count);
thecount = theA2.byteify();
theA2 = null;
}
byte[] thestride = null;
if (stride != null) {
HDFArray theA3 = new HDFArray(stride);
thestride = theA3.byteify();
theA3 = null;
}
byte[] theblock = null;
if (block != null) {
HDFArray theA4 = new HDFArray(block);
theblock = theA4.byteify();
theA4 = null;
}
int retVal = H5Sselect_hyperslab(space_id,
op, thestart, thestride, thecount, theblock);
thestart = null;
thestride = null;
thecount = null;
theblock = null;
return retVal;
}
/**
* H5Sclose releases a dataspace.
*
* @param space_id Identifier of dataspace to release.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Sclose(int space_id)
throws HDF5LibraryException {
OPEN_IDS.removeElement(space_id);
return _H5Sclose(space_id);
}
private synchronized static native int _H5Sclose(int space_id)
throws HDF5LibraryException;
// --//
// following synchronized static native functions are missing from HDF5 (version 1.0.1) RM
/**
* H5Sget_select_hyper_nblocks returns the number of
* hyperslab blocks in the current dataspace selection.
*
* @param spaceid Identifier of dataspace to release.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native long H5Sget_select_hyper_nblocks(int spaceid)
throws HDF5LibraryException;
/**
* H5Sget_select_elem_npoints returns the number of
* element points in the current dataspace selection.
*
* @param spaceid Identifier of dataspace to release.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native long H5Sget_select_elem_npoints(int spaceid)
throws HDF5LibraryException;
/**
* H5Sget_select_hyper_blocklist returns an array of
* hyperslab blocks. The block coordinates have the
* same dimensionality (rank) as the dataspace they
* are located within. The list of blocks is formatted
* as follows:
* <pre>
* <"start" coordinate>, immediately followed by
* <"opposite" corner coordinate>, followed by
* the next "start" and "opposite" coordinates,
* etc.
* until all of the selected blocks have been listed.
* </pre>
*
* @param spaceid Identifier of dataspace to release.
* @param startblock first block to retrieve
* @param numblocks number of blocks to retrieve
* @param buf returns blocks startblock to startblock+num-1,
* each block is <i>rank</i> * 2 (corners) longs.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - buf is null.
**/
public synchronized static native int H5Sget_select_hyper_blocklist(int spaceid,
long startblock, long numblocks, long[] buf)
throws HDF5LibraryException,
NullPointerException;
/**
* H5Sget_select_elem_pointlist returns an array of
* of element points in the current dataspace selection.
* The point coordinates have the same dimensionality
* (rank) as the dataspace they are located within,
* one coordinate per point.
*
* @param spaceid Identifier of dataspace to release.
* @param startpoint first point to retrieve
* @param numpoints number of points to retrieve
* @param buf returns points startblock to startblock+num-1,
* each points is <i>rank</i> longs.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - buf is null.
**/
public synchronized static native int H5Sget_select_elem_pointlist(int spaceid,
long startpoint, long numpoints, long[] buf)
throws HDF5LibraryException,
NullPointerException;
/**
* H5Sget_select_bounds retrieves the coordinates of
* the bounding box containing the current
* selection and places them into user-supplied buffers.
* <P>
* The start and end buffers must be large enough to
* hold the dataspace rank number of coordinates.
*
* @param spaceid Identifier of dataspace to release.
* @param start coordinates of lowest corner of bounding box.
* @param end coordinates of highest corner of bounding box.
*
* @return a non-negative value if successful,with start and
* end initialized.
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - start or end is null.
**/
public synchronized static native int H5Sget_select_bounds(int spaceid,
long[] start, long[] end)
throws HDF5LibraryException,
NullPointerException;
//////////////////////////////////////////////////////////////
// //
// H5T: Datatype Interface Functions //
// //
//////////////////////////////////////////////////////////////
/**
* H5Topen opens a named datatype at the location specified
* by loc_id and return an identifier for the datatype.
*
* @param loc_id A file, group, or datatype identifier.
* @param name A datatype name.
*
* @return a named datatype identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public static int H5Topen(int loc_id, String name)
throws HDF5LibraryException, NullPointerException {
int id = _H5Topen(loc_id, name);
if (id > 0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Topen(int loc_id, String name)
throws HDF5LibraryException, NullPointerException;
/**
* H5Tcommit commits a transient datatype (not immutable)
* to a file, turned it into a named datatype.
*
* @param loc_id A file or group identifier.
* @param name A datatype name.
* @param type A datatype identifier.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public synchronized static native int H5Tcommit(int loc_id, String name,
int type)
throws HDF5LibraryException, NullPointerException;
/**
* H5Tcommitted queries a type to determine whether the type
* specified by the type identifier is a named type or a
* transient type.
*
* @param type Datatype identifier.
*
* @return true if successfully committed
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native boolean H5Tcommitted(int type)
throws HDF5LibraryException;
/**
* H5Tcreate creates a new dataype of the specified class with
* the specified number of bytes.
*
* @param dclass Class of datatype to create.
* @param size The number of bytes in the datatype to create.
*
* @return datatype identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Tcreate(int dclass, int size)
throws HDF5LibraryException {
int id = _H5Tcreate(dclass, size);
if (id > 0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Tcreate(int dclass, int size)
throws HDF5LibraryException;
/**
* H5Tcopy copies an existing datatype. The returned type is
* always transient and unlocked.
*
* @param type_id Identifier of datatype to copy. Can
* be a datatype identifier, a predefined datatype
* (defined in H5Tpublic.h), or a dataset Identifier.
*
* @return a datatype identifier if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Tcopy(int type_id)
throws HDF5LibraryException {
int id = _H5Tcopy(type_id);
if (id>0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Tcopy(int type_id)
throws HDF5LibraryException;
/**
* H5Tequal determines whether two datatype identifiers refer
* to the same datatype.
*
* @param type_id1 Identifier of datatype to compare.
* @param type_id2 Identifier of datatype to compare.
*
* @return true if the datatype identifiers refer to the
* same datatype, else FALSE.
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native boolean H5Tequal(int type_id1, int type_id2)
throws HDF5LibraryException;
/**
* H5Tlock locks the datatype specified by the type_id
* identifier, making it read-only and non-destrucible.
*
* @param type_id Identifier of datatype to lock.
*
* @return a non-negative value if successful
*
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tlock(int type_id)
throws HDF5LibraryException;
/**
* H5Tget_class returns the datatype class identifier.
*
* @param type_id Identifier of datatype to query.
*
* @return datatype class identifier if successful;
* otherwise H5T_NO_CLASS (-1).
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tget_class(int type_id)
throws HDF5LibraryException;
/**
* H5Tget_size returns the size of a datatype in bytes.
*
* @param type_id Identifier of datatype to query.
*
* @return the size of the datatype in bytes if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tget_size(int type_id)
throws HDF5LibraryException;
/**
* H5Tset_size sets the total size in bytes, size, for an
* atomic datatype (this operation is not permitted on
* compound datatypes).
*
* @param type_id Identifier of datatype to change size.
* @param size Size in bytes to modify datatype.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tset_size(int type_id, int size)
throws HDF5LibraryException;
/**
* H5Tget_order returns the byte order of an atomic datatype.
*
* @param type_id Identifier of datatype to query.
*
* @return a byte order constant if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tget_order(int type_id)
throws HDF5LibraryException;
/**
* H5Tset_order sets the byte ordering of an atomic datatype.
*
* @param type_id Identifier of datatype to set.
* @param order Byte ordering constant.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tset_order(int type_id, int order)
throws HDF5LibraryException;
/**
* H5Tget_precision returns the precision of an atomic datatype.
*
* @param type_id Identifier of datatype to query.
*
* @return the number of significant bits if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tget_precision(int type_id)
throws HDF5LibraryException;
/**
* H5Tset_precision sets the precision of an atomic datatype.
*
* @param type_id Identifier of datatype to set.
* @param precision Number of bits of precision for datatype.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tset_precision(int type_id,
int precision)
throws HDF5LibraryException;
/**
* H5Tget_offset retrieves the bit offset of the first
* significant bit.
*
* @param type_id Identifier of datatype to query.
* @return a positive offset value if successful; otherwise 0.
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tget_offset(int type_id)
throws HDF5LibraryException;
/**
* H5Tset_offset sets the bit offset of the first
* significant bit.
*
* @param type_id Identifier of datatype to set.
* @param offset Offset of first significant bit.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tset_offset(int type_id, int offset)
throws HDF5LibraryException;
/**
* H5Tget_pad retrieves the padding type of the least and
* most-significant bit padding.
*
* @param type_id IN: Identifier of datatype to query.
* @param pad OUT: locations to return least-significant
* and most-significant bit padding type.
* <pre>
* pad[0] = lsb // least-significant bit padding type
* pad[1] = msb // most-significant bit padding type
* </pre>
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - pad is null.
**/
public synchronized static native int H5Tget_pad(int type_id, int[] pad)
throws HDF5LibraryException, NullPointerException;
/**
* H5Tset_pad sets the least and most-significant bits
* padding types.
*
* @param type_id Identifier of datatype to set.
* @param lsb Padding type for least-significant bits.
* @param msb Padding type for most-significant bits.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tset_pad(int type_id, int lsb, int msb)
throws HDF5LibraryException;
/**
* H5Tget_sign retrieves the sign type for an integer type.
*
* @param type_id Identifier of datatype to query.
*
* @return a valid sign type if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tget_sign(int type_id)
throws HDF5LibraryException;
/**
* H5Tset_sign sets the sign proprety for an integer type.
*
* @param type_id Identifier of datatype to set.
* @param sign Sign type.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tset_sign(int type_id, int sign)
throws HDF5LibraryException;
/**
* H5Tget_fields retrieves information about the locations of
* the various bit fields of a floating point datatype.
*
* @param type_id IN: Identifier of datatype to query.
* @param fields OUT: location of size and bit-position.
* <pre>
* fields[0] = spos OUT: location to return size of in bits.
* fields[1] = epos OUT: location to return exponent
* bit-position.
* fields[2] = esize OUT: location to return size of
* exponent in bits.
* fields[3] = mpos OUT: location to return mantissa
* bit-position.
* fields[4] = msize OUT: location to return size of
* mantissa in bits.
* </pre>
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - fileds is null.
* @exception IllegalArgumentException - fileds array is invalid.
**/
public synchronized static native int H5Tget_fields(int type_id, int[] fields)
throws HDF5LibraryException,
NullPointerException,
IllegalArgumentException;
/**
* H5Tset_fields sets the locations and sizes of the various
* floating point bit fields.
*
* @param type_id Identifier of datatype to set.
* @param spos Size position.
* @param epos Exponent bit position.
* @param esize Size of exponent in bits.
* @param mpos Mantissa bit position.
* @param msize Size of mantissa in bits.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tset_fields(int type_id, int spos,
int epos, int esize,
int mpos, int msize) throws HDF5LibraryException;
/**
* H5Tget_ebias retrieves the exponent bias of a
* floating-point type.
*
* @param type_id Identifier of datatype to query.
*
* @return the bias if successful; otherwise 0.
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tget_ebias(int type_id)
throws HDF5LibraryException;
/**
* H5Tset_ebias sets the exponent bias of a floating-point type.
*
* @param type_id Identifier of datatype to set.
* @param ebias Exponent bias value.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tset_ebias(int type_id, int ebias)
throws HDF5LibraryException;
/**
* H5Tget_norm retrieves the mantissa normalization of a
* floating-point datatype.
*
* @param type_id Identifier of datatype to query.
*
* @return a valid normalization type if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tget_norm(int type_id)
throws HDF5LibraryException;
/**
* H5Tset_norm sets the mantissa normalization of a
* floating-point datatype.
*
* @param type_id Identifier of datatype to set.
* @param norm Mantissa normalization type.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tset_norm(int type_id, int norm)
throws HDF5LibraryException;
/**
* H5Tget_inpad retrieves the internal padding type for unused
* bits in floating-point datatypes.
*
* @param type_id Identifier of datatype to query.
*
* @return a valid padding type if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tget_inpad(int type_id)
throws HDF5LibraryException;
/**
* 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 H5Tset_inpad will
* be filled according to the value of the padding value
* property inpad.
*
* @param type_id Identifier of datatype to modify.
* @param inpad Padding type.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tset_inpad(int type_id, int inpad)
throws HDF5LibraryException;
/**
* H5Tget_cset retrieves the character set type of a
* string datatype.
*
* @param type_id Identifier of datatype to query.
*
* @return a valid character set type if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tget_cset(int type_id)
throws HDF5LibraryException;
/**
* H5Tset_cset the character set to be used.
*
* @param type_id Identifier of datatype to modify.
* @param cset Character set type.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tset_cset(int type_id, int cset)
throws HDF5LibraryException;
/**
* H5Tget_strpad retrieves the string padding method for
* a string datatype.
*
* @param type_id Identifier of datatype to query.
*
* @return a valid string padding type if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tget_strpad(int type_id)
throws HDF5LibraryException;
/**
* H5Tset_strpad defines the storage mechanism for the string.
*
* @param type_id Identifier of datatype to modify.
* @param strpad String padding type.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tset_strpad(int type_id, int strpad)
throws HDF5LibraryException;
/**
* H5Tget_nmembers retrieves the number of fields a
* compound datatype has.
*
* @param type_id Identifier of datatype to query.
*
* @return number of members datatype has if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tget_nmembers(int type_id)
throws HDF5LibraryException;
/**
* H5Tget_member_name retrieves the name of a field of a compound
* datatype.
*
* @param type_id Identifier of datatype to query.
* @param field_idx Field index (0-based) of the field name
* to retrieve.
*
* @return a valid pointer if successful; otherwise null.
*
**/
public synchronized static native String H5Tget_member_name(int type_id,
int field_idx);
/**
* H5Tget_member_index retrieves the index of a field of a compound
* datatype.
*
* @param type_id Identifier of datatype to query.
* @param field_name Field name of the field index
* to retrieve.
*
* @return if field is defined, the index; else negative.
*
**/
public synchronized static native int H5Tget_member_index(int type_id,
String field_name);
/**
* H5Tget_member_class returns the datatype of the specified
* member.
*
* @param type_id Identifier of datatype to query.
* @param field_idx Field index (0-based) of the field type to
* retrieve.
*
* @return the identifier of a copy of the datatype of the
* field if successful;
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tget_member_class(int type_id,
int field_idx)
throws HDF5LibraryException;
/**
* H5Tget_member_type returns the datatype of the specified
* member.
*
* @param type_id Identifier of datatype to query.
* @param field_idx Field index (0-based) of the field type to
* retrieve.
*
* @return the identifier of a copy of the datatype of the
* field if successful;
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Tget_member_type(int type_id, int field_idx)
throws HDF5LibraryException {
int id = _H5Tget_member_type(type_id,field_idx);
if (id > 0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Tget_member_type(int type_id,
int field_idx)
throws HDF5LibraryException;
/**
* H5Tget_member_offset returns the byte offset of the
* specified member of the compound datatype. This
* is the byte offset in the HDF-5 file/library, NOT
* the offset of any Java object which might be mapped
* to this data item.
*
* @param type_id Identifier of datatype to query.
* @param membno Field index (0-based) of the field type to
* retrieve.
*
* @return the offset of the member.
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native long H5Tget_member_offset(int type_id,
int membno)
throws HDF5LibraryException;
/**
* H5Tinsert adds another member to the compound datatype type_id.
*
* @param type_id Identifier of compound datatype to modify.
* @param name Name of the field to insert.
* @param offset Offset in memory structure of the field to
* insert.
* @param field_id Datatype identifier of the field to insert.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public synchronized static native int H5Tinsert(int type_id, String name,
long offset, int field_id)
throws HDF5LibraryException, NullPointerException;
/**
* H5Tpack recursively removes padding from within a
* compound datatype to make it more efficient (space-wise)
* to store that data.
* <P>
* <b>WARNING:</b> This call only affects the
* C-data, even if it succeeds, there may be no visible
* effect on Java objects.
*
* @param type_id Identifier of datatype to modify.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tpack(int type_id)
throws HDF5LibraryException;
/**
* H5Tclose releases a datatype.
*
* @param type_id Identifier of datatype to release.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Tclose(int type_id)
throws HDF5LibraryException {
OPEN_IDS.removeElement(type_id);
return _H5Tclose(type_id);
}
private synchronized static native int _H5Tclose(int type_id)
throws HDF5LibraryException;
/**
* H5Tenum_create creates a new enumeration datatype
* based on the specified base datatype, parent_id,
* which must be an integer type.
*
* @param base_id Identifier of the parent datatype to release.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Tenum_create(int base_id)
throws HDF5LibraryException {
int id = _H5Tenum_create(base_id);
if (id >0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Tenum_create(int base_id)
throws HDF5LibraryException;
/**
* H5Tenum_insert inserts a new enumeration datatype member
* into an enumeration datatype.
*
* @param type Identifier of datatype.
* @param name The name of the member
* @param value The value of the member, data of the correct type
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public synchronized static native int H5Tenum_insert(int type, String name,
int[] value) throws HDF5LibraryException, NullPointerException;
public synchronized static int H5Tenum_insert(int type, String name,
int value) throws HDF5LibraryException, NullPointerException {
int[] val = {value};
return H5Tenum_insert(type, name, val);
}
/**
* H5Tenum_nameof finds the symbol name that corresponds
* to the specified value of the enumeration datatype type.
*
* @param type IN: Identifier of datatype.
* @param value IN: The value of the member, data of the correct
* @param name OUT: The name of the member
* @param size IN: The max length of the name
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public synchronized static native int H5Tenum_nameof(int type,
int[] value, String[] name, int size)
throws HDF5LibraryException, NullPointerException;
/**
* H5Tenum_valueof finds the value that corresponds to
* the specified name of the enumeration datatype type.
*
* @param type IN: Identifier of datatype.
* @param name IN: The name of the member
* @param value OUT: The value of the member
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public synchronized static native int H5Tenum_valueof(int type,
String name, int[] value)
throws HDF5LibraryException, NullPointerException;
/**
* H5Tvlen_create creates a new variable-length (VL) dataype.
*
* @param base_id IN: Identifier of parent datatype.
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Tvlen_create(int base_id)
throws HDF5LibraryException {
int id = _H5Tvlen_create(base_id);
if (id > 0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Tvlen_create(int base_id)
throws HDF5LibraryException;
/**
* H5Tset_tag tags an opaque datatype type_id with a
* unique ASCII identifier tag.
*
* @param type IN: Identifier of parent datatype.
* @param tag IN: Name of the tag (will be stored as
* ASCII)
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native int H5Tset_tag(int type, String tag)
throws HDF5LibraryException;
/**
* H5Tget_tag returns the tag associated with datatype type_id.
*
* @param type IN: Identifier of datatype.
*
* @return the tag
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public synchronized static native String H5Tget_tag(int type)
throws HDF5LibraryException;
/**
* H5Tget_super returns the type from which TYPE is derived.
*
* @param type IN: Identifier of datatype.
*
* @return the parent type
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
**/
public static int H5Tget_super(int type)
throws HDF5LibraryException {
int id = _H5Tget_super(type);
if (id>0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Tget_super(int type)
throws HDF5LibraryException;
/**
* H5Tget_member_value returns the value of the enumeration
* datatype member memb_no.
*
* @param type_id IN: Identifier of datatype.
* @param membno IN: The name of the member
* @param value OUT: The value of the member
*
* @return a non-negative value if successful
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
**/
public synchronized static native int H5Tget_member_value(int type_id,
int membno, int[] value)
throws HDF5LibraryException, NullPointerException;
/**
** Array data types, new in HDF5.1.4.
**/
public static int H5Tarray_create(int base,
int rank, int[] dims, int[] perms)
throws HDF5LibraryException, NullPointerException {
int id = _H5Tarray_create(base, rank, dims, perms);
if (id > 0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Tarray_create(int base,
int rank, int[] dims, int[] perms)
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Tget_array_ndims(int dt)
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Tget_array_dims(int dt,
int[] dims, int[] perms)
throws HDF5LibraryException, NullPointerException;
//////////////////////////////////////////////////////////////
// //
// New APIs for HDF5.1.6 //
// removed APIs: H5Pset_hyper_cache, H5Pget_hyper_cache //
// //
//////////////////////////////////////////////////////////////
/**
* Returns number of objects in the group specified by its identifier
* @param loc_id Identifier of the group or the file
* @param num_obj Number of objects in the group
* @return positive value if successful; otherwise returns a negative value.
* @throws HDF5LibraryException
* @throws NullPointerException
*/
public synchronized static native int H5Gget_num_objs(int loc_id, long[] num_obj)
throws HDF5LibraryException, NullPointerException;
/**
* Returns a name of an object specified by an index.
*
* @param group_id Group or file identifier
* @param idx Transient index identifying object
* @param name the object name
* @param size Name length
* @return the size of the object name if successful, or 0 if no name is
* associated with the group identifier. Otherwise returns a negative value
* @throws HDF5LibraryException
* @throws NullPointerException
*/
public synchronized static native long H5Gget_objname_by_idx(int group_id,
long idx, String[] name, long size )
throws HDF5LibraryException, NullPointerException;
/**
* Returns the type of an object specified by an index.
*
* @param group_id Group or file identifier.
* @param idx Transient index identifying object.
* @return Returns the type of the object if successful. Otherwise returns a negative value
* @throws HDF5LibraryException
* @throws NullPointerException
*/
public synchronized static native int H5Gget_objtype_by_idx(int group_id, long idx)
throws HDF5LibraryException, NullPointerException;
public static int H5Tget_native_type(int tid, int direction )
throws HDF5LibraryException, NullPointerException {
int id = _H5Tget_native_type(tid, direction );
if (id > 0) OPEN_IDS.addElement(id);
return id;
}
private synchronized static native int _H5Tget_native_type(int tid, int direction )
throws HDF5LibraryException, NullPointerException;
// Backward compatibility:
// These functions have been replaced by new HDF5 library calls.
// The interface is preserved as a convenience to existing code.
/**
* H5Gn_members report the number of objects in
* a Group. The 'objects' include everything that
* will be visited by H5Giterate. Each link is
* returned, so objects with multiple links will
* be counted once for each link.
*
* @param loc_id file or group ID.
* @param name name of the group to iterate, relative to
* the loc_id
*
* @return the number of members in the group or -1 if error.
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
*/
public synchronized static int H5Gn_members( int loc_id, String name)
throws HDF5LibraryException, NullPointerException {
int grp_id = H5Gopen(loc_id, name);
int ret=-1;
long [] nobj = new long[1];
try {
nobj[0] = -1;
H5Gget_num_objs(grp_id, nobj);
ret = (new Long(nobj[0])).intValue();
} finally {
H5.H5Gclose(grp_id);
}
return (ret);
}
/**
* H5Gget_obj_info_idx report the name and type of
* object with index 'idx' in a Group. The 'idx'
* corresponds to the index maintained by H5Giterate.
* Each link is returned, so objects with multiple
* links will be counted once for each link.
*
* @param loc_id IN: file or group ID.
* @param name IN: name of the group to iterate,
* relative to the loc_id
* @param idx IN: the index of the object to iterate.
* @param oname the name of the object [OUT]
* @param type the type of the object [OUT]
*
* @return non-negative if successful, -1 if not.
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
*/
public synchronized static int H5Gget_obj_info_idx( int loc_id,
String name, int idx, String[] oname, int[]type)
throws HDF5LibraryException, NullPointerException
{
long val=-1, default_buf_size = 4096;
String n[] = new String[1];
n[0] = new String("");
int grp_id = H5Gopen(loc_id, name);
try {
val = H5Gget_objname_by_idx(grp_id, idx, n, default_buf_size);
int type_code = H5Gget_objtype_by_idx(grp_id, idx);
oname[0] = new String(n[0]);
type[0] = type_code;
} finally {
H5Gclose(grp_id);
}
int ret = (new Long(val)).intValue();
return ret;
}
public synchronized static int H5Gget_obj_info_all( int loc_id,
String name, String[] oname, int[]type, long[] ref)
throws HDF5LibraryException, NullPointerException
{
if (oname == null) {
throw new NullPointerException("H5Gget_obj_info_all(): name array is null");
}
if (type == null) {
throw new NullPointerException("H5Gget_obj_info_all(): type array is null");
}
if (ref == null) {
throw new NullPointerException("H5Gget_obj_info_all(): ref array is null");
}
if (oname.length == 0) {
throw new HDF5LibraryException("H5Gget_obj_info_all(): array size is zero");
}
if (oname.length != type.length) {
throw new HDF5LibraryException("H5Gget_obj_info_all(): name and type array sizes are different");
}
if (oname.length != ref.length) {
throw new HDF5LibraryException("H5Gget_obj_info_all(): name and ref array sizes are different");
}
return H5Gget_obj_info_all( loc_id, name, oname, type, ref, oname.length);
}
private synchronized static native int H5Gget_obj_info_all( int loc_id,
String name, String[] oname, int[]type, long[]ref, int n)
throws HDF5LibraryException, NullPointerException;
// This function is denegrated. It is recommended that the new
// library calls should be used,
// H5Gget_objname_by_idx
// H5Gget_objtype_by_idx
/**
* H5Gget_objinfo returns information about the specified
* object.
*
* @param loc_id IN: File, group, dataset, or datatype
* identifier.
* @param name IN: Name of the object for which status is
* being sought.
* @param follow_link IN: Link flag.
* @param fileno OUT: file id numbers.
* @param objno OUT: object id numbers.
* @param link_info OUT: link information.
* <pre>
* link_info[0] = nlink
* link_info[1] = type
* link_info[2] = linklen
* </pre>
* @param mtime OUT: modification time
*
* @return a non-negative value if successful, with the
* fields of link_info and mtime (if non-null) initialized.
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name or array is null.
* @exception IllegalArgumentException - bad argument.
**/
public synchronized static native int H5Gget_objinfo(int loc_id, String name,
boolean follow_link, long[] fileno, long[] objno,
int[] link_info, long[] mtime)
throws HDF5LibraryException,
NullPointerException,
IllegalArgumentException;
/**
* H5Gget_objinfo returns information about the specified
* object in an HDF5GroupInfo object.
*
* @param loc_id IN: File, group, dataset, or datatype
* identifier.
* @param name IN: Name of the object for which status
* is being sought.
* @param follow_link IN: Link flag.
* @param info OUT: the HDF5GroupInfo object to store the
* object infomation
*
* @return a non-negative value if successful, with the
* fields of HDF5GroupInfo object (if non-null) initialized.
*
* @exception HDF5LibraryException - Error from the HDF-5 Library.
* @exception NullPointerException - name is null.
*
* @see ncsa.hdf.hdf5lib.HDF5GroupInfo
* See public synchronized static native int H5Gget_objinfo();
**/
public synchronized static int H5Gget_objinfo(int loc_id, String name,
boolean follow_link,
HDF5GroupInfo info)
throws HDF5LibraryException, NullPointerException
{
int status = -1;
long[] fileno = new long[2];
long[] objno = new long[2];
int[] link_info = new int[3];
long[] mtime = new long[1];
status = H5Gget_objinfo(loc_id, name, follow_link,
fileno, objno, link_info, mtime);
if (status >=0 ) {
info.setGroupInfo(fileno, objno, link_info[0],
link_info[1], mtime[0], link_info[2]);
}
return status;
}
public synchronized static int H5Tget_native_type(int tid)
throws HDF5LibraryException, NullPointerException
{
return H5Tget_native_type(tid, HDF5Constants.H5T_DIR_ASCEND);
}
public synchronized static native int H5Pset_alloc_time(int plist_id, int alloc_time )
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Pget_alloc_time(int plist_id, int[] alloc_time )
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Pset_fill_time(int plist_id, int fill_time )
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Pget_fill_time(int plist_id, int[] fill_time )
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Pfill_value_defined(int plist_id, int[] status )
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Pset_fletcher32(int plist)
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Pset_edc_check(int plist, int check)
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Pget_edc_check(int plist)
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Pset_shuffle(int plist_id)
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Pset_szip(int plist, int options_mask, int pixels_per_block)
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Dget_space_status(int dset_id, int[] status )
throws HDF5LibraryException, NullPointerException;
public synchronized static native long H5Iget_name(int obj_id, String[] name, long size )
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5set_free_list_limits(int reg_global_lim, int reg_list_lim, int arr_global_lim, int arr_list_lim, int blk_global_lim, int blk_list_lim )
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Fget_obj_ids(int file_id, int types, int max, int[] obj_id_list )
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Fget_obj_count(int file_id, int types)
throws HDF5LibraryException, NullPointerException;
public synchronized static native boolean H5Tis_variable_str(int dtype_id )
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Zfilter_avail(int filter)
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Zunregister(int filter)
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Pmodify_filter(int plist, int filter, int flags, long cd_nelmts, int[] cd_values )
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Pget_filter_by_id( int plist_id, int filter, int[] flags, long[] cd_nelmts, int[] cd_values, long namelen, String[] name )
throws HDF5LibraryException, NullPointerException;
public synchronized static native boolean H5Pall_filters_avail(int dcpl_id)
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Pset_hyper_vector_size(int dxpl_id, long vector_size )
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Pget_hyper_vector_size(int dxpl_id, long[] vector_size )
throws HDF5LibraryException, NullPointerException;
public synchronized static native boolean H5Tdetect_class(int dtype_id, int dtype_class )
throws HDF5LibraryException, NullPointerException;
////////////////////////////////////////////////////////////////////
// //
// New APIs for read data from library //
// Using H5Dread(..., Object buf) requires function calls //
// theArray.emptyBytes() and theArray.arrayify( buf), which //
// triples the actual memory needed by the data set. //
// Using the following APIs solves the problem. //
// //
////////////////////////////////////////////////////////////////////
public synchronized static native int H5Dread_short(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
short[] buf, boolean isCriticalPinning)
throws HDF5LibraryException, NullPointerException;
public synchronized static int H5Dread_short(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
short[] buf)
throws HDF5LibraryException, NullPointerException
{
return H5Dread_short(dataset_id, mem_type_id,mem_space_id,
file_space_id, xfer_plist_id, buf, IS_CRITICAL_PINNING);
}
public synchronized static native int H5Dread_int(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
int[] buf, boolean isCriticalPinning)
throws HDF5LibraryException, NullPointerException;
public synchronized static int H5Dread_int(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
int[] buf)
throws HDF5LibraryException, NullPointerException
{
return H5Dread_int(dataset_id, mem_type_id,mem_space_id,
file_space_id, xfer_plist_id, buf, IS_CRITICAL_PINNING);
}
public synchronized static native int H5Dread_long(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
long[] buf, boolean isCriticalPinning)
throws HDF5LibraryException, NullPointerException;
public synchronized static int H5Dread_long(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
long[] buf)
throws HDF5LibraryException, NullPointerException
{
return H5Dread_long(dataset_id, mem_type_id,mem_space_id,
file_space_id, xfer_plist_id, buf, IS_CRITICAL_PINNING);
}
public synchronized static native int H5Dread_float(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
float[] buf, boolean isCriticalPinning)
throws HDF5LibraryException, NullPointerException;
public synchronized static int H5Dread_float(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
float[] buf)
throws HDF5LibraryException, NullPointerException
{
return H5Dread_float(dataset_id, mem_type_id,mem_space_id,
file_space_id, xfer_plist_id, buf, IS_CRITICAL_PINNING);
}
public synchronized static native int H5Dread_double(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
double[] buf, boolean isCriticalPinning)
throws HDF5LibraryException, NullPointerException;
public synchronized static int H5Dread_double(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
double[] buf)
throws HDF5LibraryException, NullPointerException
{
return H5Dread_double(dataset_id, mem_type_id,mem_space_id,
file_space_id, xfer_plist_id, buf, IS_CRITICAL_PINNING);
}
public synchronized static native int H5Dread_string(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
String[] buf)
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Dread_reg_ref(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
String[] buf)
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Dwrite_short(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
short[] buf, boolean isCriticalPinning)
throws HDF5LibraryException, NullPointerException;
public synchronized static int H5Dwrite_short(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
short[] buf)
throws HDF5LibraryException, NullPointerException
{
return H5Dwrite_short(dataset_id, mem_type_id,mem_space_id,
file_space_id, xfer_plist_id, buf, IS_CRITICAL_PINNING);
}
public synchronized static native int H5Dwrite_int(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
int[] buf, boolean isCriticalPinning)
throws HDF5LibraryException, NullPointerException;
public synchronized static int H5Dwrite_int(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
int[] buf)
throws HDF5LibraryException, NullPointerException
{
return H5Dwrite_int(dataset_id, mem_type_id,mem_space_id,
file_space_id, xfer_plist_id, buf, IS_CRITICAL_PINNING);
}
public synchronized static native int H5Dwrite_long(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
long[] buf, boolean isCriticalPinning)
throws HDF5LibraryException, NullPointerException;
public synchronized static int H5Dwrite_long(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
long[] buf)
throws HDF5LibraryException, NullPointerException
{
return H5Dwrite_long(dataset_id, mem_type_id,mem_space_id,
file_space_id, xfer_plist_id, buf, IS_CRITICAL_PINNING);
}
public synchronized static native int H5Dwrite_float(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
float[] buf, boolean isCriticalPinning)
throws HDF5LibraryException, NullPointerException;
public synchronized static int H5Dwrite_float(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
float[] buf)
throws HDF5LibraryException, NullPointerException
{
return H5Dwrite_float(dataset_id, mem_type_id,mem_space_id,
file_space_id, xfer_plist_id, buf, IS_CRITICAL_PINNING);
}
public synchronized static native int H5Dwrite_double(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
double[] buf, boolean isCriticalPinning)
throws HDF5LibraryException, NullPointerException;
public synchronized static int H5Dwrite_double(int dataset_id, int mem_type_id,
int mem_space_id, int file_space_id, int xfer_plist_id,
double[] buf)
throws HDF5LibraryException, NullPointerException
{
return H5Dwrite_double(dataset_id, mem_type_id,mem_space_id,
file_space_id, xfer_plist_id, buf, IS_CRITICAL_PINNING);
}
public synchronized static native int H5Pset_fclose_degree(int plist, int degree)
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Pget_fclose_degree(int plist_id)
throws HDF5LibraryException, NullPointerException;
////////////////////////////////////////////////////////////////////
// //
// New APIs from release 1.6.2 //
// August 20, 2004 //
////////////////////////////////////////////////////////////////////
public synchronized static native int H5Iget_ref(int obj_id)
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Iinc_ref(int obj_id)
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Idec_ref(int obj_id)
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Pset_fapl_family ( int fapl_id, long memb_size, int memb_fapl_id )
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Pget_fapl_family ( int fapl_id, long[] memb_size, int[] memb_fapl_id )
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Pset_fapl_core( int fapl_id, int increment, boolean backing_store )
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Pget_fapl_core( int fapl_id, int[] increment, boolean[] backing_store )
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Pset_family_offset ( int fapl_id, long offset )
throws HDF5LibraryException, NullPointerException;
public synchronized static native long H5Pget_family_offset ( int fapl_id)
throws HDF5LibraryException, NullPointerException;
public synchronized static native int H5Pset_fapl_log( int fapl_id, String logfile, int flags, int buf_size )
throws HDF5LibraryException, NullPointerException;
////////////////////////////////////////////////////////////////////
// //
// New APIs from release 1.6.3 //
// August 25, 2004 //
////////////////////////////////////////////////////////////////////
public synchronized static native String H5Fget_name (int obj_id, int size)
throws HDF5LibraryException;
public synchronized static native long H5Fget_filesize (int file_id)
throws HDF5LibraryException;
public synchronized static native int H5Iget_file_id (int obj_id)
throws HDF5LibraryException;
public synchronized static native int H5Premove_filter (int obj_id, int filter)
throws HDF5LibraryException;
public synchronized static native int H5Zget_filter_info (int filter)
throws HDF5LibraryException;
////////////////////////////////////////////////////////////////////
// //
// New APIs for HDF5Index //
// October 10, 2005 //
////////////////////////////////////////////////////////////////////
public synchronized static native int H5INcreate (String grp_name, int grp_loc_id,
int property_list, int data_loc_id, String data_loc_name, String field_name, long max_mem_size);
public synchronized static native int H5INquery (int dset_id, String keys[],
Object ubounds, Object lbounds, int nkeys);
//////////////////////////////////////////////////////////////////////////
// Modified by Peter Cao on July 26, 2006: //
// Some of the Generic Property APIs have callback function //
// pointers, which Java does not support. Only the Generic //
// Property APIs without function pointers are implemented //
//////////////////////////////////////////////////////////////////////////
/**
* Creates a new property list class of a given class
*
* @param cls IN: Class of property list to create
* @return a valid property list identifier if successful;
* a negative value if failed
* @throws HDF5LibraryException
*/
public synchronized static native int H5Pcreate_list( int cls)
throws HDF5LibraryException;
/**
* Sets a property list value (support integer only)
*
* @param plid IN: Property list identifier to modify
* @param name IN: Name of property to modify
* @param value IN: value to set the property to
* @return a non-negative value if successful; a negative value if failed
* @throws HDF5LibraryException
*/
public synchronized static native int H5Pset( int plid, String name, int value)
throws HDF5LibraryException;
/**
* H5Pexist determines whether a property exists within a property list or class
*
* @param plid IN: Identifier for the property to query
* @param name IN: Name of property to check for
* @return a positive value if the property exists in the property object;
* zero if the property does not exist; a negative value if failed
* @throws HDF5LibraryException
*/
public synchronized static native int H5Pexist( int plid, String name )
throws HDF5LibraryException;
/**
* H5Pget_size retrieves the size of a property's value in bytes
*
* @param plid IN: Identifier of property object to query
* @param name IN: Name of property to query
* @return size of a property's value if successful; a negative value if failed
* @throws HDF5LibraryException
*/
public synchronized static native long H5Pget_size( int plid, String name )
throws HDF5LibraryException;
/**
* H5Pget_nprops retrieves the number of properties in a property list or class
*
* @param plid IN: Identifier of property object to query
* @return number of properties if successful; a negative value if failed
* @throws HDF5LibraryException
*/
public synchronized static native long H5Pget_nprops( int plid)
throws HDF5LibraryException;
/**
* H5Pget_class_name retrieves the name of a generic property list class
*
* @param plid IN: Identifier of property object to query
* @return name of a property list if successful; null if failed
* @throws HDF5LibraryException
*/
public synchronized static native String H5Pget_class_name( int plid)
throws HDF5LibraryException;
/**
* H5Pget_class_parent retrieves an identifier for the parent class of a property class
*
* @param plid IN: Identifier of the property class to query
* @return a valid parent class object identifier if successful; a negative value if failed
* @throws HDF5LibraryException
*/
public synchronized static native int H5Pget_class_parent( int plid)
throws HDF5LibraryException;
/**
* H5Pisa_class checks to determine whether a property list is a member of the specified class
*
* @param plist IN: Identifier of the property list
* @param pclass IN: Identifier of the property class
* @return a positive value if equal; zero if unequal; a negative value if failed
* @throws HDF5LibraryException
*/
public synchronized static native int H5Pisa_class( int plist, int pclass )
throws HDF5LibraryException;
/**
* H5Pget retrieves a copy of the value for a property in a property list
* (support integer only)
*
* @param plid IN: Identifier of property object to query
* @param name IN: Name of property to query
* @return value for a property if successful; a negative value if failed
* @throws HDF5LibraryException
*/
public synchronized static native int H5Pget( int plid, String name )
throws HDF5LibraryException;
/**
* H5Pequal determines if two property lists or classes are equal
*
* @param plid1 IN: First property object to be compared
* @param plid2 IN: Second property object to be compared
* @return positive value if equal; zero if unequal, a negative value if failed
* @throws HDF5LibraryException
*/
public synchronized static native int H5Pequal( int plid1, int plid2 )
throws HDF5LibraryException;
/**
* H5Pcopy_prop copies a property from one property list or class to another
*
* @param dst_id IN: Identifier of the destination property list or class
* @param src_id IN: Identifier of the source property list or class
* @param name IN: Name of the property to copy
* @return a non-negative value if successful; a negative value if failed
* @throws HDF5LibraryException
*/
public synchronized static native int H5Pcopy_prop( int dst_id, int src_id, String name )
throws HDF5LibraryException;
/**
* H5Premove removes a property from a property list
*
* @param plid IN: Identifier of the property list to modify
* @param name IN: Name of property to remove
* @return a non-negative value if successful; a negative value if failed
* @throws HDF5LibraryException
*/
public synchronized static native int H5Premove( int plid, String name )
throws HDF5LibraryException;
/**
* H5Punregister removes a property from a property list class
*
* @param plid IN: Property list class from which to remove permanent property
* @param name IN: Name of property to remove
* @return a non-negative value if successful; a negative value if failed
* @throws HDF5LibraryException
*/
public synchronized static native int H5Punregister( int plid, String name )
throws HDF5LibraryException;
/**
* Closes an existing property list class
*
* @param plid IN: Property list class to close
* @return a non-negative value if successful; a negative value if failed
* @throws HDF5LibraryException
*/
public synchronized static native int H5Pclose_class( int plid)
throws HDF5LibraryException;
public synchronized static native int H5Lcreate_external(String file_name, String object_name, int link_loc, String link_name, int lcpl_id, int lapl_id);
}