public class H5Datatype extends Datatype
This class provides several methods to convert an HDF5 datatype identifier to a datatype object, and vice versa. A datatype object is described by four basic fields: datatype class, size, byte order, and sign, while an HDF5 datatype is presented by a datatype identifier.
baseType, CLASS_ARRAY, CLASS_BITFIELD, CLASS_CHAR, CLASS_COMPOUND, CLASS_ENUM, CLASS_FLOAT, CLASS_INTEGER, CLASS_NO_CLASS, CLASS_OPAQUE, CLASS_REFERENCE, CLASS_STRING, CLASS_TIME, CLASS_VLEN, compoundMemberFieldIDs, compoundMemberNames, compoundMemberOffsets, compoundMemberTypes, datatypeClass, datatypeOrder, datatypeSign, datatypeSize, dims, enumMembers, NATIVE, NSGN, ORDER_BE, ORDER_LE, ORDER_NONE, ORDER_VAX, SIGN_2, SIGN_NONE
fileFormat, linkTargetObjName, oid, separator
Constructor and Description |
---|
H5Datatype(FileFormat theFile,
String name,
String path)
Constructs an named HDF5 data type object for a given file, dataset name and group path.
|
H5Datatype(FileFormat theFile,
String name,
String path,
long[] oid)
Deprecated.
Not for public use in the future.
Using H5Datatype(FileFormat, String, String) |
H5Datatype(int nativeID)
Constructs a Datatype with a given native datatype identifier.
|
H5Datatype(int tclass,
int tsize,
int torder,
int tsign)
Constructs a Datatype with specified class, size, byte order and sign.
|
H5Datatype(int tclass,
int tsize,
int torder,
int tsign,
Datatype tbase)
Constructs a Datatype with specified class, size, byte order and sign.
|
Modifier and Type | Method and Description |
---|---|
static Object |
allocateArray(int tid,
int size)
Allocates a one-dimensional array of byte, short, int, long, float, double, or String to store data in memory.
|
void |
close(int tid)
Closes a datatype identifier.
|
static int[] |
convertEnumNameToValue(int tid,
String[] in,
int[] out)
Converts names in an Enumeration Datatype to values.
|
static String[] |
convertEnumValueToName(int tid,
Object inValues,
String[] outNames)
Converts values in an Enumeration Datatype to names.
|
void |
fromNative(int tid)
Set datatype characteristics (class, size, byte order and sign) from a
given datatype identifier.
|
String |
getDatatypeDescription()
Returns a short text description of this datatype.
|
static String |
getDatatypeDescription(int tid)
Returns a short description of a given datatype ID.
|
static int |
getDatatypeSize(int tid)
Returns the size (in bytes) of a given datatype identifier.
|
List<Attribute> |
getMetadata()
Retrieves the metadata such as attributes from file.
|
List<Attribute> |
getMetadata(int... attrPropList) |
boolean |
hasAttribute()
Check if the object has any attributes attached.
|
boolean |
isUnsigned()
Checks if this datatype is an unsigned integer.
|
static boolean |
isUnsigned(int tid)
Checks if a datatype specified by the identifier is an unsigned integer.
|
boolean |
isVLEN()
Checks if a datatype is variable-length.
|
int |
open()
Opens access to a named datatype.
|
void |
removeMetadata(Object info)
Deletes an existing metadata from this data object.
|
void |
setName(String newName)
Sets the name of the object.
|
int |
toNative()
Converts the datatype object to a native datatype.
|
static int |
toNative(int tid)
Deprecated.
Not for public use in the future.
Using H5.H5Tget_native_type(int)
Return the HDF5 memory datatype identifier based on the HDF5 datatype identifier on disk |
void |
writeMetadata(Object info)
Writes a specific metadata (such as attribute) into file.
|
getArrayDims, getBasetype, getCompoundMemberNames, getCompoundMemberTypes, getDatatypeClass, getDatatypeOrder, getDatatypeSign, getDatatypeSize, getEnumMembers, setEnumMembers, updateMetadata
debug, equals, equalsOID, getFID, getFile, getFileFormat, getFullName, getLinkTargetObjName, getName, getOID, getPath, setLinkTargetObjName, setPath, toString
public H5Datatype(FileFormat theFile, String name, String path)
The datatype object represents an existing named datatype in file. For example, new H5Datatype(file, "dtype1", "/g0") constructs a datatype object that corresponds to the dataset,"dset1", at group "/g0".
theFile
- the file that contains the dataset.name
- the name of the dataset such as "dset1".path
- the group path to the dataset such as "/g0/".@Deprecated public H5Datatype(FileFormat theFile, String name, String path, long[] oid)
H5Datatype(FileFormat, String, String)
theFile
- the file that contains the dataset.name
- the name of the dataset such as "dset1".path
- the group path to the dataset such as "/g0/".oid
- the oid of the dataset.public H5Datatype(int tclass, int tsize, int torder, int tsign)
The following is a list of a few example of H5Datatype.
tclass
- the class of the datatype, e.g. CLASS_INTEGER, CLASS_FLOAT and etc.tsize
- the size of the datatype in bytes, e.g. for a 32-bit integer, the size is 4.torder
- the byte order of the datatype. Valid values are ORDER_LE, ORDER_BE, ORDER_VAX and ORDER_NONEtsign
- the sign of the datatype. Valid values are SIGN_NONE, SIGN_2 and MSGNpublic H5Datatype(int tclass, int tsize, int torder, int tsign, Datatype tbase)
The following is a list of a few example of H5Datatype.
tclass
- the class of the datatype, e.g. CLASS_INTEGER, CLASS_FLOAT and etc.tsize
- the size of the datatype in bytes, e.g. for a 32-bit integer, the size is 4.torder
- the byte order of the datatype. Valid values are ORDER_LE, ORDER_BE, ORDER_VAX and ORDER_NONEtsign
- the sign of the datatype. Valid values are SIGN_NONE, SIGN_2 and MSGNtbase
- the base datatype of the new datatypepublic H5Datatype(int nativeID)
For example, if the datatype identifier is a 32-bit unsigned integer created from HDF5,
int tid = H5.H5Tcopy(HDF5Constants.H5T_NATIVE_UNINT32); Datatype dtype = new Datatype(tid);will construct a datatype equivalent to new Datatype(CLASS_INTEGER, 4, NATIVE, SIGN_NONE);
nativeID
- the native datatype identifier.fromNative(int nativeID)
public boolean hasAttribute()
DataFormat
public static final String[] convertEnumValueToName(int tid, Object inValues, String[] outNames) throws hdf.hdf5lib.exceptions.HDF5Exception
This method searches the identified enumeration datatype for the values appearing in inValues
and
returns the names corresponding to those values. If a given value is not found in the enumeration datatype, the
name corresponding to that value will be set to null
in the string array that is returned.
If the method fails in general, null will be returned instead of a String array. An empty inValues
parameter, an outNames
array with a different number of entries than the inValues
array, or an invalid tid
would all cause general failure.
tid
- The identifier of the enumeration datatype.inValues
- The array of enumerations values to be converted.outNames
- The array of names to be populated. If null, the array will be created. If outNames
is
not null, the number of entries must be the same as the number of values in inValues
.hdf.hdf5lib.exceptions.HDF5Exception
- If there is an error at the HDF5 library level.public static final int[] convertEnumNameToValue(int tid, String[] in, int[] out) throws hdf.hdf5lib.exceptions.HDF5Exception
This method searches the identified enumeration datatype for the names appearing in inValues
and
returns the values corresponding to those names.
tid
- The identifier of the enumeration datatype.in
- The array of enumerations names to be converted.out
- The array of values to be populated.hdf.hdf5lib.exceptions.HDF5Exception
- If there is an error at the HDF5 library level.public void fromNative(int tid)
Datatype
Sub-classes must implement it so that this datatype will be converted accordingly.
For example, if the type identifier is a 32-bit unsigned integer created from HDF5,
H5Datatype dtype = new H5Datatype(); dtype.fromNative(HDF5Constants.H5T_NATIVE_UNINT32);Where dtype is equivalent to
fromNative
in class Datatype
tid
- the datatype identifier.@Deprecated public static int toNative(int tid)
H5.H5Tget_native_type(int)
Return the HDF5 memory datatype identifier based on the HDF5 datatype identifier on disk
tid
- the datatype identification disk.public int toNative()
Datatype
For example, a HDF5 datatype created from
H5Dataype dtype = new H5Datatype(CLASS_INTEGER, 4, NATIVE, SIGN_NONE); int tid = dtype.toNative();There "tid" will be the HDF5 datatype id of a 32-bit unsigned integer, which is equivalent to
int tid = H5.H5Tcopy(HDF5Constants.H5T_NATIVE_UNINT32);
public static Object allocateArray(int tid, int size) throws OutOfMemoryError
int tid = H5.H5Tcopy(HDF5Constants.H5T_NATIVE_INT32); int[] data = (int[]) allocateArray(tid, 100);returns a 32-bit integer array of size 100.
tid
- the datatype id.size
- the total number of data points of the array.OutOfMemoryError
- If there is a failure.public static final int getDatatypeSize(int tid)
It basically just calls H5Tget_size(tid).
tid
- The datatype identifier.H5.H5Tget_size(int)
public String getDatatypeDescription()
Datatype
getDatatypeDescription
in class Datatype
public static final String getDatatypeDescription(int tid)
tid
- the HDF5 datatype identifierpublic boolean isUnsigned()
Datatype
isUnsigned
in class Datatype
public static final boolean isUnsigned(int tid)
tid
- the datatype ID to be checked.public boolean isVLEN()
public int open()
It calls H5.H5Topen(loc, name).
public void close(int tid)
It calls H5.H5close(tid).
public List<Attribute> getMetadata() throws hdf.hdf5lib.exceptions.HDF5Exception
DataFormat
Metadata such as attributes are stored in a List.
getMetadata
in interface DataFormat
getMetadata
in class Datatype
hdf.hdf5lib.exceptions.HDF5Exception
public List<Attribute> getMetadata(int... attrPropList) throws hdf.hdf5lib.exceptions.HDF5Exception
hdf.hdf5lib.exceptions.HDF5Exception
public void writeMetadata(Object info) throws Exception
DataFormat
writeMetadata
in interface DataFormat
writeMetadata
in class Datatype
info
- the metadata to write.Exception
- if the metadata can not be writtenpublic void removeMetadata(Object info) throws hdf.hdf5lib.exceptions.HDF5Exception
DataFormat
removeMetadata
in interface DataFormat
removeMetadata
in class Datatype
info
- the metadata to delete.hdf.hdf5lib.exceptions.HDF5Exception
Copyright ? 2017. All Rights Reserved.