diff options
Diffstat (limited to 'c++/src/H5PredType.h')
-rw-r--r-- | c++/src/H5PredType.h | 441 |
1 files changed, 441 insertions, 0 deletions
diff --git a/c++/src/H5PredType.h b/c++/src/H5PredType.h new file mode 100644 index 0000000..c631fb9 --- /dev/null +++ b/c++/src/H5PredType.h @@ -0,0 +1,441 @@ +// C++ informative line for the emacs editor: -*- C++ -*- +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the COPYING file, which can be found at the root of the source code * + * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. * + * If you do not have access to either file, you may request a copy from * + * help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef __H5PredType_H +#define __H5PredType_H + +namespace H5 { + +/*! \class PredType + \brief Class PredType holds the definition of all the HDF5 predefined + datatypes. + + These types can only be made copy of, not created by H5Tcreate or + closed by H5Tclose. They are treated as constants. +*/ +// Inheritance: AtomType -> DataType -> H5Object -> H5Location -> IdComponent +class H5_DLLCPP PredType : public AtomType { + public: + ///\brief Returns this class name. + virtual H5std_string fromClass () const { return("PredType"); } + + // Makes a copy of the predefined type and stores the new + // id in the left hand side object. + PredType& operator=(const PredType& rhs); + + // Copy constructor - makes copy of the original object + PredType(const PredType& original); + + // Noop destructor + virtual ~PredType(); + + /*! \brief This dummy function do not inherit from DataType - it will + throw a DataTypeIException if invoked. + */ + void commit(H5Location& loc, const H5std_string& name); + /*! \brief This dummy function do not inherit from DataType - it will + throw a DataTypeIException if invoked. + */ + void commit(H5Location& loc, const char* name); + /*! \brief This dummy function do not inherit from DataType - it will + throw a DataTypeIException if invoked. + */ + bool committed(); + + ///\brief PredType constants + static const PredType& STD_I8BE; + static const PredType& STD_I8LE; + static const PredType& STD_I16BE; + static const PredType& STD_I16LE; + static const PredType& STD_I32BE; + static const PredType& STD_I32LE; + static const PredType& STD_I64BE; + static const PredType& STD_I64LE; + static const PredType& STD_U8BE; + static const PredType& STD_U8LE; + static const PredType& STD_U16BE; + static const PredType& STD_U16LE; + static const PredType& STD_U32BE; + static const PredType& STD_U32LE; + static const PredType& STD_U64BE; + static const PredType& STD_U64LE; + static const PredType& STD_B8BE; + static const PredType& STD_B8LE; + static const PredType& STD_B16BE; + static const PredType& STD_B16LE; + static const PredType& STD_B32BE; + static const PredType& STD_B32LE; + static const PredType& STD_B64BE; + static const PredType& STD_B64LE; + static const PredType& STD_REF_OBJ; + static const PredType& STD_REF_DSETREG; + + static const PredType& C_S1; + static const PredType& FORTRAN_S1; + + static const PredType& IEEE_F32BE; + static const PredType& IEEE_F32LE; + static const PredType& IEEE_F64BE; + static const PredType& IEEE_F64LE; + + static const PredType& UNIX_D32BE; + static const PredType& UNIX_D32LE; + static const PredType& UNIX_D64BE; + static const PredType& UNIX_D64LE; + + static const PredType& INTEL_I8; + static const PredType& INTEL_I16; + static const PredType& INTEL_I32; + static const PredType& INTEL_I64; + static const PredType& INTEL_U8; + static const PredType& INTEL_U16; + static const PredType& INTEL_U32; + static const PredType& INTEL_U64; + static const PredType& INTEL_B8; + static const PredType& INTEL_B16; + static const PredType& INTEL_B32; + static const PredType& INTEL_B64; + static const PredType& INTEL_F32; + static const PredType& INTEL_F64; + + static const PredType& ALPHA_I8; + static const PredType& ALPHA_I16; + static const PredType& ALPHA_I32; + static const PredType& ALPHA_I64; + static const PredType& ALPHA_U8; + static const PredType& ALPHA_U16; + static const PredType& ALPHA_U32; + static const PredType& ALPHA_U64; + static const PredType& ALPHA_B8; + static const PredType& ALPHA_B16; + static const PredType& ALPHA_B32; + static const PredType& ALPHA_B64; + static const PredType& ALPHA_F32; + static const PredType& ALPHA_F64; + + static const PredType& MIPS_I8; + static const PredType& MIPS_I16; + static const PredType& MIPS_I32; + static const PredType& MIPS_I64; + static const PredType& MIPS_U8; + static const PredType& MIPS_U16; + static const PredType& MIPS_U32; + static const PredType& MIPS_U64; + static const PredType& MIPS_B8; + static const PredType& MIPS_B16; + static const PredType& MIPS_B32; + static const PredType& MIPS_B64; + static const PredType& MIPS_F32; + static const PredType& MIPS_F64; + + static const PredType& NATIVE_CHAR; + static const PredType& NATIVE_SCHAR; + static const PredType& NATIVE_UCHAR; + static const PredType& NATIVE_SHORT; + static const PredType& NATIVE_USHORT; + static const PredType& NATIVE_INT; + static const PredType& NATIVE_UINT; + static const PredType& NATIVE_LONG; + static const PredType& NATIVE_ULONG; + static const PredType& NATIVE_LLONG; + static const PredType& NATIVE_ULLONG; + static const PredType& NATIVE_FLOAT; + static const PredType& NATIVE_DOUBLE; + static const PredType& NATIVE_LDOUBLE; + static const PredType& NATIVE_B8; + static const PredType& NATIVE_B16; + static const PredType& NATIVE_B32; + static const PredType& NATIVE_B64; + static const PredType& NATIVE_OPAQUE; + static const PredType& NATIVE_HSIZE; + static const PredType& NATIVE_HSSIZE; + static const PredType& NATIVE_HERR; + static const PredType& NATIVE_HBOOL; + + static const PredType& NATIVE_INT8; + static const PredType& NATIVE_UINT8; + static const PredType& NATIVE_INT16; + static const PredType& NATIVE_UINT16; + static const PredType& NATIVE_INT32; + static const PredType& NATIVE_UINT32; + static const PredType& NATIVE_INT64; + static const PredType& NATIVE_UINT64; + +// LEAST types +#if H5_SIZEOF_INT_LEAST8_T != 0 + static const PredType& NATIVE_INT_LEAST8; +#endif /* H5_SIZEOF_INT_LEAST8_T */ +#if H5_SIZEOF_UINT_LEAST8_T != 0 + static const PredType& NATIVE_UINT_LEAST8; +#endif /* H5_SIZEOF_UINT_LEAST8_T */ + +#if H5_SIZEOF_INT_LEAST16_T != 0 + static const PredType& NATIVE_INT_LEAST16; +#endif /* H5_SIZEOF_INT_LEAST16_T */ +#if H5_SIZEOF_UINT_LEAST16_T != 0 + static const PredType& NATIVE_UINT_LEAST16; +#endif /* H5_SIZEOF_UINT_LEAST16_T */ + +#if H5_SIZEOF_INT_LEAST32_T != 0 + static const PredType& NATIVE_INT_LEAST32; +#endif /* H5_SIZEOF_INT_LEAST32_T */ +#if H5_SIZEOF_UINT_LEAST32_T != 0 + static const PredType& NATIVE_UINT_LEAST32; +#endif /* H5_SIZEOF_UINT_LEAST32_T */ + +#if H5_SIZEOF_INT_LEAST64_T != 0 + static const PredType& NATIVE_INT_LEAST64; +#endif /* H5_SIZEOF_INT_LEAST64_T */ +#if H5_SIZEOF_UINT_LEAST64_T != 0 + static const PredType& NATIVE_UINT_LEAST64; +#endif /* H5_SIZEOF_UINT_LEAST64_T */ + +// FAST types +#if H5_SIZEOF_INT_FAST8_T != 0 + static const PredType& NATIVE_INT_FAST8; +#endif /* H5_SIZEOF_INT_FAST8_T */ +#if H5_SIZEOF_UINT_FAST8_T != 0 + static const PredType& NATIVE_UINT_FAST8; +#endif /* H5_SIZEOF_UINT_FAST8_T */ + +#if H5_SIZEOF_INT_FAST16_T != 0 + static const PredType& NATIVE_INT_FAST16; +#endif /* H5_SIZEOF_INT_FAST16_T */ +#if H5_SIZEOF_UINT_FAST16_T != 0 + static const PredType& NATIVE_UINT_FAST16; +#endif /* H5_SIZEOF_UINT_FAST16_T */ + +#if H5_SIZEOF_INT_FAST32_T != 0 + static const PredType& NATIVE_INT_FAST32; +#endif /* H5_SIZEOF_INT_FAST32_T */ +#if H5_SIZEOF_UINT_FAST32_T != 0 + static const PredType& NATIVE_UINT_FAST32; +#endif /* H5_SIZEOF_UINT_FAST32_T */ + +#if H5_SIZEOF_INT_FAST64_T != 0 + static const PredType& NATIVE_INT_FAST64; +#endif /* H5_SIZEOF_INT_FAST64_T */ +#if H5_SIZEOF_UINT_FAST64_T != 0 + static const PredType& NATIVE_UINT_FAST64; +#endif /* H5_SIZEOF_UINT_FAST64_T */ + +#ifndef DOXYGEN_SHOULD_SKIP_THIS + + // Deletes the PredType global constants + static void deleteConstants(); + + // Dummy constant + static const PredType& PREDTYPE_CONST; // dummy constant + + protected: + // Default constructor + PredType(); + + // Creates a pre-defined type using an HDF5 pre-defined constant + PredType(const hid_t predtype_id); // used by the library only + + private: + // Activates the creation of the PredType global constants + static PredType* getPredTypes(); + + // Dynamically allocates PredType global constants + static void makePredTypes(); + + // Dummy constant + static PredType* PREDTYPE_CONST_; + + // Declaration of pointers to constants + static PredType* STD_I8BE_; + static PredType* STD_I8LE_; + static PredType* STD_I16BE_; + static PredType* STD_I16LE_; + static PredType* STD_I32BE_; + static PredType* STD_I32LE_; + static PredType* STD_I64BE_; + static PredType* STD_I64LE_; + static PredType* STD_U8BE_; + static PredType* STD_U8LE_; + static PredType* STD_U16BE_; + static PredType* STD_U16LE_; + static PredType* STD_U32BE_; + static PredType* STD_U32LE_; + static PredType* STD_U64BE_; + static PredType* STD_U64LE_; + static PredType* STD_B8BE_; + static PredType* STD_B8LE_; + static PredType* STD_B16BE_; + static PredType* STD_B16LE_; + static PredType* STD_B32BE_; + static PredType* STD_B32LE_; + static PredType* STD_B64BE_; + static PredType* STD_B64LE_; + static PredType* STD_REF_OBJ_; + static PredType* STD_REF_DSETREG_; + + static PredType* C_S1_; + static PredType* FORTRAN_S1_; + + static PredType* IEEE_F32BE_; + static PredType* IEEE_F32LE_; + static PredType* IEEE_F64BE_; + static PredType* IEEE_F64LE_; + + static PredType* UNIX_D32BE_; + static PredType* UNIX_D32LE_; + static PredType* UNIX_D64BE_; + static PredType* UNIX_D64LE_; + + static PredType* INTEL_I8_; + static PredType* INTEL_I16_; + static PredType* INTEL_I32_; + static PredType* INTEL_I64_; + static PredType* INTEL_U8_; + static PredType* INTEL_U16_; + static PredType* INTEL_U32_; + static PredType* INTEL_U64_; + static PredType* INTEL_B8_; + static PredType* INTEL_B16_; + static PredType* INTEL_B32_; + static PredType* INTEL_B64_; + static PredType* INTEL_F32_; + static PredType* INTEL_F64_; + + static PredType* ALPHA_I8_; + static PredType* ALPHA_I16_; + static PredType* ALPHA_I32_; + static PredType* ALPHA_I64_; + static PredType* ALPHA_U8_; + static PredType* ALPHA_U16_; + static PredType* ALPHA_U32_; + static PredType* ALPHA_U64_; + static PredType* ALPHA_B8_; + static PredType* ALPHA_B16_; + static PredType* ALPHA_B32_; + static PredType* ALPHA_B64_; + static PredType* ALPHA_F32_; + static PredType* ALPHA_F64_; + + static PredType* MIPS_I8_; + static PredType* MIPS_I16_; + static PredType* MIPS_I32_; + static PredType* MIPS_I64_; + static PredType* MIPS_U8_; + static PredType* MIPS_U16_; + static PredType* MIPS_U32_; + static PredType* MIPS_U64_; + static PredType* MIPS_B8_; + static PredType* MIPS_B16_; + static PredType* MIPS_B32_; + static PredType* MIPS_B64_; + static PredType* MIPS_F32_; + static PredType* MIPS_F64_; + + static PredType* NATIVE_CHAR_; + static PredType* NATIVE_SCHAR_; + static PredType* NATIVE_UCHAR_; + static PredType* NATIVE_SHORT_; + static PredType* NATIVE_USHORT_; + static PredType* NATIVE_INT_; + static PredType* NATIVE_UINT_; + static PredType* NATIVE_LONG_; + static PredType* NATIVE_ULONG_; + static PredType* NATIVE_LLONG_; + static PredType* NATIVE_ULLONG_; + static PredType* NATIVE_FLOAT_; + static PredType* NATIVE_DOUBLE_; + static PredType* NATIVE_LDOUBLE_; + static PredType* NATIVE_B8_; + static PredType* NATIVE_B16_; + static PredType* NATIVE_B32_; + static PredType* NATIVE_B64_; + static PredType* NATIVE_OPAQUE_; + static PredType* NATIVE_HSIZE_; + static PredType* NATIVE_HSSIZE_; + static PredType* NATIVE_HERR_; + static PredType* NATIVE_HBOOL_; + + static PredType* NATIVE_INT8_; + static PredType* NATIVE_UINT8_; + static PredType* NATIVE_INT16_; + static PredType* NATIVE_UINT16_; + static PredType* NATIVE_INT32_; + static PredType* NATIVE_UINT32_; + static PredType* NATIVE_INT64_; + static PredType* NATIVE_UINT64_; + +// LEAST types +#if H5_SIZEOF_INT_LEAST8_T != 0 + static PredType* NATIVE_INT_LEAST8_; +#endif /* H5_SIZEOF_INT_LEAST8_T */ +#if H5_SIZEOF_UINT_LEAST8_T != 0 + static PredType* NATIVE_UINT_LEAST8_; +#endif /* H5_SIZEOF_UINT_LEAST8_T */ + +#if H5_SIZEOF_INT_LEAST16_T != 0 + static PredType* NATIVE_INT_LEAST16_; +#endif /* H5_SIZEOF_INT_LEAST16_T */ +#if H5_SIZEOF_UINT_LEAST16_T != 0 + static PredType* NATIVE_UINT_LEAST16_; +#endif /* H5_SIZEOF_UINT_LEAST16_T */ + +#if H5_SIZEOF_INT_LEAST32_T != 0 + static PredType* NATIVE_INT_LEAST32_; +#endif /* H5_SIZEOF_INT_LEAST32_T */ +#if H5_SIZEOF_UINT_LEAST32_T != 0 + static PredType* NATIVE_UINT_LEAST32_; +#endif /* H5_SIZEOF_UINT_LEAST32_T */ + +#if H5_SIZEOF_INT_LEAST64_T != 0 + static PredType* NATIVE_INT_LEAST64_; +#endif /* H5_SIZEOF_INT_LEAST64_T */ +#if H5_SIZEOF_UINT_LEAST64_T != 0 + static PredType* NATIVE_UINT_LEAST64_; +#endif /* H5_SIZEOF_UINT_LEAST64_T */ + +// FAST types +#if H5_SIZEOF_INT_FAST8_T != 0 + static PredType* NATIVE_INT_FAST8_; +#endif /* H5_SIZEOF_INT_FAST8_T */ +#if H5_SIZEOF_UINT_FAST8_T != 0 + static PredType* NATIVE_UINT_FAST8_; +#endif /* H5_SIZEOF_UINT_FAST8_T */ + +#if H5_SIZEOF_INT_FAST16_T != 0 + static PredType* NATIVE_INT_FAST16_; +#endif /* H5_SIZEOF_INT_FAST16_T */ +#if H5_SIZEOF_UINT_FAST16_T != 0 + static PredType* NATIVE_UINT_FAST16_; +#endif /* H5_SIZEOF_UINT_FAST16_T */ + +#if H5_SIZEOF_INT_FAST32_T != 0 + static PredType* NATIVE_INT_FAST32_; +#endif /* H5_SIZEOF_INT_FAST32_T */ +#if H5_SIZEOF_UINT_FAST32_T != 0 + static PredType* NATIVE_UINT_FAST32_; +#endif /* H5_SIZEOF_UINT_FAST32_T */ + +#if H5_SIZEOF_INT_FAST64_T != 0 + static PredType* NATIVE_INT_FAST64_; +#endif /* H5_SIZEOF_INT_FAST64_T */ +#if H5_SIZEOF_UINT_FAST64_T != 0 + static PredType* NATIVE_UINT_FAST64_; +#endif /* H5_SIZEOF_UINT_FAST64_T */ + // End of Declaration of pointers + +#endif // DOXYGEN_SHOULD_SKIP_THIS + +}; // end of PredType +} // namespace H5 + +#endif // __H5PredType_H |