HDF5/Predefined Datatypes

HDF5 documents and links Introduction to HDF5 HDF5 User’s Guide | In the HDF5 Reference Manual H5DS H5IM H5LT H5PT H5TB Optimized H5 H5A H5D H5E H5F H5G H5I H5L H5O H5P H5PL H5R H5S H5T H5Z Tools Datatypes Fortran Compatibility Macros Collective Calls in Parallel

# HDF5 Predefined Datatypes

The following datatypes are predefined in HDF5.

#### IEEE floating point datatypes

- 32-bit and 64-bit
- Big-endian and little-endian

            H5T_IEEE_F32BE
            H5T_IEEE_F32LE
            H5T_IEEE_F64BE
            H5T_IEEE_F64LE

#### Standard datatypes

- Signed integer (2's complement), unsigned integer, and bitfield
- 8-bit, 16-bit, 32-bit, and 64-bit
- Big-endian and little-endian

            H5T_STD_I8BE
            H5T_STD_I8LE
            H5T_STD_I16BE
            H5T_STD_I16LE
            H5T_STD_I32BE
            H5T_STD_I32LE
            H5T_STD_I64BE
            H5T_STD_I64LE
            H5T_STD_U8BE
            H5T_STD_U8LE
            H5T_STD_U16BE
            H5T_STD_U16LE
            H5T_STD_U32BE
            H5T_STD_U32LE
            H5T_STD_U64BE
            H5T_STD_U64LE
            H5T_STD_B8BE
            H5T_STD_B8LE
            H5T_STD_B16BE
            H5T_STD_B16LE
            H5T_STD_B32BE
            H5T_STD_B32LE
            H5T_STD_B64BE
            H5T_STD_B64LE

- Object reference or dataset region reference

            H5T_STD_REF_OBJ
            H5T_STD_REF_DSETREG

#### UNIX-specific string datatypes

- 32-bit and 64-bit
- Big-endian and little-endian

            H5T_UNIX_D32BE
            H5T_UNIX_D32LE
            H5T_UNIX_D64BE
            H5T_UNIX_D64LE

#### C-specific string datatype

- String datatype in C (size defined in bytes rather than in bits)

            H5T_C_S1

#### Fortran-specific string datatype

- String datatype in Fortran (as defined for the HDF5 C library)

            H5T_FORTRAN_S1

#### Intel-specific datatypes

- For Intel CPUs
- Little-endian
- Signed integer (2's complement), unsigned integer, bitfield, and IEEE floating point
- 8-bit, 16-bit, 32-bit, and 64-bit

            H5T_INTEL_I8
            H5T_INTEL_I16
            H5T_INTEL_I32
            H5T_INTEL_I64

            H5T_INTEL_U8
            H5T_INTEL_U16
            H5T_INTEL_U32
            H5T_INTEL_U64
            H5T_INTEL_B8
            H5T_INTEL_B16
            H5T_INTEL_B32
            H5T_INTEL_B64

            H5T_INTEL_F32
            H5T_INTEL_F64

#### DEC Alpha-specific datatypes

- For DEC Alpha CPUs
- Little-endian
- Signed integer (2's complement), unsigned integer, bitfield, and IEEE floating point
- 8-bit, 16-bit, 32-bit, and 64-bit

            H5T_ALPHA_I8
            H5T_ALPHA_I16
            H5T_ALPHA_I32
            H5T_ALPHA_I64

            H5T_ALPHA_U8
            H5T_ALPHA_U16
            H5T_ALPHA_U32
            H5T_ALPHA_U64
            H5T_ALPHA_B8
            H5T_ALPHA_B16
            H5T_ALPHA_B32
            H5T_ALPHA_B64

            H5T_ALPHA_F32
            H5T_ALPHA_F64

#### OpenVMS DEC Alpha-specific datatypes

- For OpenVMS on DEC Alpha CPUs
- VAX byte order
- 32- and 64-bit floating point

            H5T_VAX_F32 (Corresponds to F_Floating type)
            H5T_VAX_F64 (Corresponds to G_Floating type)

#### MIPS-specific datatypes

- For MIPS CPUs, commonly used in SGI system
- Big-endian
- Signed integer (2's complement), unsigned integer, bitfield, and IEEE floating point
- 8-bit, 16-bit, 32-bit, and 64-bit

            H5T_MIPS_I8
            H5T_MIPS_I16
            H5T_MIPS_I32
            H5T_MIPS_I64

            H5T_MIPS_U8
            H5T_MIPS_U16
            H5T_MIPS_U32
            H5T_MIPS_U64
            H5T_MIPS_B8
            H5T_MIPS_B16
            H5T_MIPS_B32
            H5T_MIPS_B64

            H5T_MIPS_F32
            H5T_MIPS_F64

#### Predefined native datatypes

These are the datatypes detected by `H5detect`. Their names differ from other HDF5 datatype names as follows:

- Instead of a class name, precision, and byte order as the last component, they have a C-like datatype name.
- If the datatype begins with `U`, then it is the unsigned version of the integer datatype; other integer datatypes are signed.
- The datatype `LLONG` corresponds to C's `long_long` and `LDOUBLE` is `long_double`. These datatypes might be the same as `LONG` and `DOUBLE`, respectively.

            H5T_NATIVE_CHAR
            H5T_NATIVE_SCHAR
            H5T_NATIVE_UCHAR

            H5T_NATIVE_SHORT
            H5T_NATIVE_USHORT

            H5T_NATIVE_INT
            H5T_NATIVE_UINT

            H5T_NATIVE_LONG
            H5T_NATIVE_ULONG
            H5T_NATIVE_LLONG
            H5T_NATIVE_ULLONG
            H5T_NATIVE_FLOAT
            H5T_NATIVE_DOUBLE
            H5T_NATIVE_LDOUBLE

            H5T_NATIVE_B8
            H5T_NATIVE_B16
            H5T_NATIVE_B32
            H5T_NATIVE_B64

            H5T_NATIVE_OPAQUE
            H5T_NATIVE_HADDR
            H5T_NATIVE_HSIZE
            H5T_NATIVE_HSSIZE
            H5T_NATIVE_HERR
            H5T_NATIVE_HBOOL

#### ANSI C9x-specific native integer datatypes

- Signed integer (2's complement) and unsigned integer
- 8-bit, 16-bit, 32-bit, and 64-bit
- `LEAST` -- storage to use least amount of space
  `FAST` -- storage to maximize performance

            H5T_NATIVE_INT8
            H5T_NATIVE_UINT8
            H5T_NATIVE_INT_LEAST8
            H5T_NATIVE_UINT_LEAST8
            H5T_NATIVE_INT_FAST8
            H5T_NATIVE_UINT_FAST8

            H5T_NATIVE_INT16
            H5T_NATIVE_UINT16
            H5T_NATIVE_INT_LEAST16
            H5T_NATIVE_UINT_LEAST16
            H5T_NATIVE_INT_FAST16
            H5T_NATIVE_UINT_FAST16
            H5T_NATIVE_INT32
            H5T_NATIVE_UINT32
            H5T_NATIVE_INT_LEAST32
            H5T_NATIVE_UINT_LEAST32
            H5T_NATIVE_INT_FAST32
            H5T_NATIVE_UINT_FAST32

            H5T_NATIVE_INT64
            H5T_NATIVE_UINT64
            H5T_NATIVE_INT_LEAST64
            H5T_NATIVE_UINT_LEAST64
            H5T_NATIVE_INT_FAST64
            H5T_NATIVE_UINT_FAST64

#### Fortran API datatypes

- Datatypes defined for both the Fortran90 and Fortran2003 APIs, unless otherwise noted
- Native integer, single-precision real, double-precision real, and character

            H5T_NATIVE_INTEGER
            H5T_NATIVE_REAL
            H5T_NATIVE_DOUBLE
            H5T_NATIVE_CHARACTER

- Signed integer (2's complement), unsigned integer, and IEEE floating point
- 8-bit, 16-bit, 32-bit, and 64-bit
- Big-endian and little-endian

            H5T_STD_I8BE
            H5T_STD_I8LE
            H5T_STD_I16BE
            H5T_STD_I16LE
            H5T_STD_I32BE
            H5T_STD_I32LE
            H5T_STD_I64BE
            H5T_STD_I64LE
            H5T_STD_U8BE
            H5T_STD_U8LE
            H5T_STD_U16BE
            H5T_STD_U16LE
            H5T_STD_U32BE
            H5T_STD_U32LE
            H5T_STD_U64BE
            H5T_STD_U64LE
            H5T_IEEE_F32BE
            H5T_IEEE_F32LE
            H5T_IEEE_F64BE
            H5T_IEEE_F64LE

- Object reference or dataset region reference

            H5T_STD_REF_OBJ
            H5T_STD_REF_DSETREG

HDF5 documents and links Introduction to HDF5 HDF5 User’s Guide | In the HDF5 Reference Manual H5DS H5IM H5LT H5PT H5TB Optimized H5 H5A H5D H5E H5F H5G H5I H5L H5O H5P H5PL H5R H5S H5T H5Z Tools Datatypes Fortran Compatibility Macros Collective Calls in Parallel