summaryrefslogtreecommitdiffstats
path: root/c++/src/H5PredType.h
diff options
context:
space:
mode:
Diffstat (limited to 'c++/src/H5PredType.h')
-rw-r--r--c++/src/H5PredType.h505
1 files changed, 342 insertions, 163 deletions
diff --git a/c++/src/H5PredType.h b/c++/src/H5PredType.h
index 494b169..f560765 100644
--- a/c++/src/H5PredType.h
+++ b/c++/src/H5PredType.h
@@ -21,16 +21,6 @@
namespace H5 {
#endif
-/* This constant is defined for a workaround to eliminate memory leaks due to
- the library being re-initiated when PredType destructors are invoked. A
- PredType instant with H5CPP_EXITED as the value of its "id" is constructed
- before the other PredType objects are created. At exit, when this special
- PredType object is to be destructed, no HDF5 library function will be called
- and the library will be terminated. -BMR, Mar 30, 2012 */
-#ifndef DOXYGEN_SHOULD_SKIP_THIS
-#define H5CPP_EXITED -3 // -3 is less likely to be used elsewhere
-#endif // DOXYGEN_SHOULD_SKIP_THIS
-
/*! \class PredType
\brief Class PredType holds the definition of all the HDF5 predefined
datatypes.
@@ -53,211 +43,400 @@ class H5_DLLCPP PredType : public AtomType {
// Noop destructor
virtual ~PredType();
- // Declaration of predefined types; their definition is in H5PredType.cpp
- 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;
+ /*! \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;
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+ 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;
+ static const PredType& NATIVE_UINT_FAST64;
#endif /* H5_SIZEOF_UINT_FAST64_T */
- /*! \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();
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+ // Deletes the PredType global constants
+ static void deleteConstants();
+
+ // Dummy constant
+ static const PredType& PREDTYPE_CONST; // dummy constant
protected:
-#ifndef DOXYGEN_SHOULD_SKIP_THIS
// 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
-#endif // DOXYGEN_SHOULD_SKIP_THIS
-
private:
- // Added this to work around the atexit/global destructor problem.
- // It'll help to terminate the library after other PredType instances
- // are closed. -BMR, Mar 30, 2012
- static const PredType AtExit;
+ // 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
};
#ifndef H5_NO_NAMESPACE