Class Datatype
- All Implemented Interfaces:
Serializable
,DataFormat
A datatype has four basic characteristics: class, size, byte order and sign. These charactertics are defeined in the HDF5 User's Guide.
These charactertics apply to all the sub-classes. The sub-classes may have different ways to describe a datatype. We here define the native datatype to the datatype used by the sub-class. For example, H5Datatype uses a datatype identifier (hid_t) to specify a datatype. NC2Datatype uses ucar.nc2.DataType object to describe its datatype. "Native" here is different from the "native" definition in the HDF5 library.
Two functions, toNative() and fromNative(), are defined to convert the general charactertics to/form the native datatype. Sub-classes must implement these functions so that the conversion will be done correctly. The values of the CLASS member are not identical to HDF5 values for a datatype class
- Version:
- 1.1 9/4/2007
- Author:
- Peter X. Cao
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Datatype
The base datatype of every element of the array (for CLASS_ARRAY datatype).static final int
See {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}static final int
See {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}static final int
See {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}static final int
See {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}static final int
See {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}static final int
See {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}static final int
See {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}static final int
See {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}static final int
See {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}static final int
See {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}static final int
See {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}static final int
See {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}static final int
See {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}protected int
The class of the datatype.protected int
The byte order of the datatype.protected int
The sign of the datatype.protected int
The size (in bytes) of the datatype.protected long[]
protected String
The (name, value) pairs of enum membersstatic final int
The default definition for datatype size, order, and sign.static final int
See {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}static final int
See {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}static final int
See {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}static final int
See {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}static final int
See {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}static final int
See {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}static final int
See {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}Fields inherited from class ncsa.hdf.object.HObject
fileFormat, linkTargetObjName, oid, separator
-
Constructor Summary
ConstructorsConstructorDescriptionDatatype
(int type) Constructs a Datatype with a given native datatype identifier.Datatype
(int tclass, int tsize, int torder, int tsign) Constructs a Datatype with specified class, size, byte order and sign.Constructs a Datatype with specified class, size, byte order and sign.Datatype
(FileFormat theFile, String name, String path) Constructs a named datatype with a given file, name and path.Datatype
(FileFormat theFile, String name, String path, long[] oid) Deprecated. -
Method Summary
Modifier and TypeMethodDescriptionabstract void
close
(int id) Closes a datatype identifier.abstract void
fromNative
(int nativeID) Set datatype characteristics (class, size, byte order and sign) from a given datatye identifier.Returns the datatype of array element for ARRAY datatype.int
Returns the class of the datatype.Returns a short text description of this datatype.int
Returns the byte order of the datatype.int
Returns the sign (SIGN_NONE, SIGN_2 or NSGN) of an integer datatype.int
Returns the size of the datatype in bytes.final String
Returns the "name=value" pairs of enum members for enum datatype.Retrieves the metadata such as attributes from file.abstract boolean
Checks if this datatype is an unsigned integer.int
open()
Opens access to this named datatype.void
removeMetadata
(Object info) Deletes an existing metadata from this data object.final void
setEnumMembers
(String enumStr) Sets the (name, value) pairs of enum members for enum datatype.abstract int
toNative()
Converts the datatype object to a native datatype.void
updateMetadata
(Object info) Updates an existing metadata from this data object.void
writeMetadata
(Object info) Writes a specific metadata (such as attribute) into file.Methods inherited from class ncsa.hdf.object.HObject
debug, equalsOID, getFID, getFile, getFileFormat, getFullName, getLinkTargetObjName, getName, getOID, getPath, setLinkTargetObjName, setName, setPath, toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface ncsa.hdf.object.DataFormat
hasAttribute
-
Field Details
-
NATIVE
public static final int NATIVEThe default definition for datatype size, order, and sign.- See Also:
-
CLASS_NO_CLASS
public static final int CLASS_NO_CLASSSee {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}- See Also:
-
CLASS_INTEGER
public static final int CLASS_INTEGERSee {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}- See Also:
-
CLASS_FLOAT
public static final int CLASS_FLOATSee {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}- See Also:
-
CLASS_CHAR
public static final int CLASS_CHARSee {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}- See Also:
-
CLASS_STRING
public static final int CLASS_STRINGSee {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}- See Also:
-
CLASS_BITFIELD
public static final int CLASS_BITFIELDSee {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}- See Also:
-
CLASS_OPAQUE
public static final int CLASS_OPAQUESee {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}- See Also:
-
CLASS_COMPOUND
public static final int CLASS_COMPOUNDSee {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}- See Also:
-
CLASS_REFERENCE
public static final int CLASS_REFERENCESee {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}- See Also:
-
CLASS_ENUM
public static final int CLASS_ENUMSee {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}- See Also:
-
CLASS_VLEN
public static final int CLASS_VLENSee {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}- See Also:
-
CLASS_ARRAY
public static final int CLASS_ARRAYSee {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}- See Also:
-
CLASS_TIME
public static final int CLASS_TIMESee {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}- See Also:
-
ORDER_LE
public static final int ORDER_LESee {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}- See Also:
-
ORDER_BE
public static final int ORDER_BESee {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}- See Also:
-
ORDER_VAX
public static final int ORDER_VAXSee {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}- See Also:
-
ORDER_NONE
public static final int ORDER_NONESee {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}- See Also:
-
SIGN_NONE
public static final int SIGN_NONESee {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}- See Also:
-
SIGN_2
public static final int SIGN_2See {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}- See Also:
-
NSGN
public static final int NSGNSee {@link <a href="http://hdfgroup.org/HDF5/doc/UG/index.html">HDF5 User's Guide}- See Also:
-
datatypeClass
protected int datatypeClassThe class of the datatype. -
datatypeSize
protected int datatypeSizeThe size (in bytes) of the datatype. -
datatypeOrder
protected int datatypeOrderThe byte order of the datatype. Valid values are ORDER_LE, ORDER_BE, and ORDER_VAX. -
datatypeSign
protected int datatypeSignThe sign of the datatype. -
enumMembers
The (name, value) pairs of enum members -
baseType
The base datatype of every element of the array (for CLASS_ARRAY datatype). -
dims
protected long[] dims
-
-
Constructor Details
-
Datatype
Constructs a named datatype with a given file, name and path.- Parameters:
theFile
- the HDF file.name
- the name of the datatype, e.g "12-bit Integer".path
- the full group path of the datatype, e.g. "/datatypes/".
-
Datatype
Deprecated.Not for public use in the future.
UsingDatatype(FileFormat, String, String)
-
Datatype
public Datatype(int tclass, int tsize, int torder, int tsign) Constructs a Datatype with specified class, size, byte order and sign.The following is a list of a few example of H5Datatype.
- to create unsigned native integer
H5Datatype type = new H5Dataype(CLASS_INTEGER, NATIVE, NATIVE, SIGN_NONE); - to create 16-bit signed integer with big endian
H5Datatype type = new H5Dataype(CLASS_INTEGER, 2, ORDER_BE, NATIVE); - to create native float
H5Datatype type = new H5Dataype(CLASS_FLOAT, NATIVE, NATIVE, -1); - to create 64-bit double
H5Datatype type = new H5Dataype(CLASS_FLOAT, 8, NATIVE, -1);
- Parameters:
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 MSGN
- to create unsigned native integer
-
Datatype
Constructs a Datatype with specified class, size, byte order and sign.The following is a list of a few example of H5Datatype.
- to create unsigned native integer
H5Datatype type = new H5Dataype(CLASS_INTEGER, NATIVE, NATIVE, SIGN_NONE); - to create 16-bit signed integer with big endian
H5Datatype type = new H5Dataype(CLASS_INTEGER, 2, ORDER_BE, NATIVE); - to create native float
H5Datatype type = new H5Dataype(CLASS_FLOAT, NATIVE, NATIVE, -1); - to create 64-bit double
H5Datatype type = new H5Dataype(CLASS_FLOAT, 8, NATIVE, -1);
- Parameters:
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 datatype
- to create unsigned native integer
-
Datatype
public Datatype(int type) Constructs a Datatype with a given native datatype identifier.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);- Parameters:
type
- the native datatype identifier.- See Also:
-
-
Method Details
-
getDatatypeClass
public int getDatatypeClass()Returns the class of the datatype. Valid values are:- CLASS_NO_CLASS
- CLASS_INTEGER
- CLASS_FLOAT
- CLASS_CHAR
- CLASS_STRING
- CLASS_BITFIELD
- CLASS_OPAQUE
- CLASS_COMPOUND
- CLASS_REFERENCE
- CLASS_ENUM
- CLASS_VLEN
- CLASS_ARRAY
- Returns:
- the class of the datatype.
-
getDatatypeSize
public int getDatatypeSize()Returns the size of the datatype in bytes. For example, for a 32-bit integer, the size is 4 (bytes).- Returns:
- the size of the datatype.
-
getDatatypeOrder
public int getDatatypeOrder()Returns the byte order of the datatype. Valid values are- ORDER_LE
- ORDER_BE
- ORDER_VAX
- ORDER_NONE
- Returns:
- the byte order of the datatype.
-
getDatatypeSign
public int getDatatypeSign()Returns the sign (SIGN_NONE, SIGN_2 or NSGN) of an integer datatype.- Returns:
- the sign of the datatype.
-
getBasetype
Returns the datatype of array element for ARRAY datatype.For example, a dataset set of ARRAY of integer, The datatype of the dataset is ARRAY. The datatype of the base type is integer.
- Returns:
- the the datatype of array element for ARRAY datatype.
-
setEnumMembers
Sets the (name, value) pairs of enum members for enum datatype.For Example,
- setEnumMembers("lowTemp=-40, highTemp=90")
- sets the value of enum member lowTemp to -40 and highTemp to 90.
- setEnumMembers("lowTemp, highTemp")
- sets enum members to defaults, i.e. lowTemp=0 and highTemp=1
- setEnumMembers("lowTemp=10, highTemp")
- sets enum member lowTemp to 10 and highTemp to 11.
- Parameters:
enumStr
- the (name, value) pairs of enum members
-
getEnumMembers
Returns the "name=value" pairs of enum members for enum datatype.For Example,
- setEnumMembers("lowTemp=-40, highTemp=90")
- sets the value of enum member lowTemp to -40 and highTemp to 90.
- setEnumMembers("lowTemp, highTemp")
- sets enum members to defaults, i.e. lowTemp=0 and highTemp=1
- setEnumMembers("lowTemp=10, highTemp")
- sets enum member lowTemp to 10 and highTemp to 11.
- Returns:
- enumStr the (name, value) pairs of enum members
-
toNative
public abstract int toNative()Converts the datatype object to a native datatype. Subclasses must implement it so that this datatype will be converted accordingly. Use close() to close the native identifier; otherwise, the datatype will be left open.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 toint tid = H5.H5Tcopy(HDF5Constants.H5T_NATIVE_UNINT32);
- Returns:
- the identifier of the native datatype.
-
fromNative
public abstract void fromNative(int nativeID) Set datatype characteristics (class, size, byte order and sign) from a given datatye identifier.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
new H5Datatype(CLASS_INTEGER, 4, NATIVE, SIGN_NONE);- Parameters:
nativeID
- the datatype identifier.
-
getDatatypeDescription
Returns a short text description of this datatype.- Returns:
- a short text description of this datatype
-
isUnsigned
public abstract boolean isUnsigned()Checks if this datatype is an unsigned integer.- Returns:
- true if the datatype is an unsigned integer; otherwise, returns false.
-
open
public int open()Opens access to this named datatype. Sub-clases must replace this default implementation. For example, in H5Datatype, open() function H5.H5Topen(loc_id, name) to get the datatype identifier. -
close
public abstract void close(int id) Closes a datatype identifier.Sub-clases must replace this default implementation.
-
getMetadata
Description copied from interface:DataFormat
Retrieves the metadata such as attributes from file.Metadata such as attributes are stored in a List.
- Returns:
- the list of metadata objects.
- Throws:
Exception
-
writeMetadata
Description copied from interface:DataFormat
Writes a specific metadata (such as attribute) into file.If an HDF(4&5) attribute exists in file, the method updates its value. If the attribute does not exists in file, it creates the attribute in file and attaches it to the object. It will fail to write a new attribute to the object where an attribute with the same name already exists. To update the value of an existing attribute in file, one needs to get the instance of the attribute by getMetadata(), change its values, and use writeMetadata() to write the value.
- Parameters:
info
- the metadata to write.- Throws:
Exception
-
removeMetadata
Description copied from interface:DataFormat
Deletes an existing metadata from this data object.- Parameters:
info
- the metadata to delete.- Throws:
Exception
-
updateMetadata
Description copied from interface:DataFormat
Updates an existing metadata from this data object.- Parameters:
info
- the metadata to update.- Throws:
Exception
-
Using
Datatype(FileFormat, String, String)