H5PredType.h

00001 // C++ informative line for the emacs editor: -*- C++ -*-
00002 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
00003  * Copyright by The HDF Group.                                               *
00004  * Copyright by the Board of Trustees of the University of Illinois.         *
00005  * All rights reserved.                                                      *
00006  *                                                                           *
00007  * This file is part of HDF5.  The full HDF5 copyright notice, including     *
00008  * terms governing use, modification, and redistribution, is contained in    *
00009  * the files COPYING and Copyright.html.  COPYING can be found at the root   *
00010  * of the source code distribution tree; Copyright.html can be found at the  *
00011  * root level of an installed copy of the electronic HDF5 document set and   *
00012  * is linked from the top-level documents page.  It can also be found at     *
00013  * http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have          *
00014  * access to either file, you may request a copy from help@hdfgroup.org.     *
00015  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
00016 
00017 // PredType holds the definition of all the HDF5 predefined datatypes.
00018 // These types can only be made copy of, not created by H5Tcreate or
00019 // closed by H5Tclose.  They are treated as constants.
00021 
00022 #ifndef _H5PredType_H
00023 #define _H5PredType_H
00024 
00025 #ifndef H5_NO_NAMESPACE
00026 namespace H5 {
00027 #endif
00028 
00029 class H5_DLLCPP PredType : public AtomType {
00030    public:
00032         virtual H5std_string fromClass () const { return("PredType"); }
00033 
00034         // Makes a copy of the predefined type and stores the new
00035         // id in the left hand side object.
00036         PredType& operator=( const PredType& rhs );
00037 
00038         // Copy constructor - makes copy of the original object
00039         PredType( const PredType& original );
00040 
00041         // Noop destructor
00042         virtual ~PredType();
00043 
00044         // Declaration of predefined types; their definition is in H5PredType.cpp
00045         static const PredType STD_I8BE;
00046         static const PredType STD_I8LE;
00047         static const PredType STD_I16BE;
00048         static const PredType STD_I16LE;
00049         static const PredType STD_I32BE;
00050         static const PredType STD_I32LE;
00051         static const PredType STD_I64BE;
00052         static const PredType STD_I64LE;
00053         static const PredType STD_U8BE;
00054         static const PredType STD_U8LE;
00055         static const PredType STD_U16BE;
00056         static const PredType STD_U16LE;
00057         static const PredType STD_U32BE;
00058         static const PredType STD_U32LE;
00059         static const PredType STD_U64BE;
00060         static const PredType STD_U64LE;
00061         static const PredType STD_B8BE;
00062         static const PredType STD_B8LE;
00063         static const PredType STD_B16BE;
00064         static const PredType STD_B16LE;
00065         static const PredType STD_B32BE;
00066         static const PredType STD_B32LE;
00067         static const PredType STD_B64BE;
00068         static const PredType STD_B64LE;
00069         static const PredType STD_REF_OBJ;
00070         static const PredType STD_REF_DSETREG;
00071 
00072         static const PredType C_S1;
00073         static const PredType FORTRAN_S1;
00074 
00075         static const PredType IEEE_F32BE;
00076         static const PredType IEEE_F32LE;
00077         static const PredType IEEE_F64BE;
00078         static const PredType IEEE_F64LE;
00079 
00080         static const PredType UNIX_D32BE;
00081         static const PredType UNIX_D32LE;
00082         static const PredType UNIX_D64BE;
00083         static const PredType UNIX_D64LE;
00084 
00085         static const PredType INTEL_I8;
00086         static const PredType INTEL_I16;
00087         static const PredType INTEL_I32;
00088         static const PredType INTEL_I64;
00089         static const PredType INTEL_U8;
00090         static const PredType INTEL_U16;
00091         static const PredType INTEL_U32;
00092         static const PredType INTEL_U64;
00093         static const PredType INTEL_B8;
00094         static const PredType INTEL_B16;
00095         static const PredType INTEL_B32;
00096         static const PredType INTEL_B64;
00097         static const PredType INTEL_F32;
00098         static const PredType INTEL_F64;
00099 
00100         static const PredType ALPHA_I8;
00101         static const PredType ALPHA_I16;
00102         static const PredType ALPHA_I32;
00103         static const PredType ALPHA_I64;
00104         static const PredType ALPHA_U8;
00105         static const PredType ALPHA_U16;
00106         static const PredType ALPHA_U32;
00107         static const PredType ALPHA_U64;
00108         static const PredType ALPHA_B8;
00109         static const PredType ALPHA_B16;
00110         static const PredType ALPHA_B32;
00111         static const PredType ALPHA_B64;
00112         static const PredType ALPHA_F32;
00113         static const PredType ALPHA_F64;
00114 
00115         static const PredType MIPS_I8;
00116         static const PredType MIPS_I16;
00117         static const PredType MIPS_I32;
00118         static const PredType MIPS_I64;
00119         static const PredType MIPS_U8;
00120         static const PredType MIPS_U16;
00121         static const PredType MIPS_U32;
00122         static const PredType MIPS_U64;
00123         static const PredType MIPS_B8;
00124         static const PredType MIPS_B16;
00125         static const PredType MIPS_B32;
00126         static const PredType MIPS_B64;
00127         static const PredType MIPS_F32;
00128         static const PredType MIPS_F64;
00129 
00130         static const PredType NATIVE_CHAR;
00131         static const PredType NATIVE_SCHAR;
00132         static const PredType NATIVE_UCHAR;
00133         static const PredType NATIVE_SHORT;
00134         static const PredType NATIVE_USHORT;
00135         static const PredType NATIVE_INT;
00136         static const PredType NATIVE_UINT;
00137         static const PredType NATIVE_LONG;
00138         static const PredType NATIVE_ULONG;
00139         static const PredType NATIVE_LLONG;
00140         static const PredType NATIVE_ULLONG;
00141         static const PredType NATIVE_FLOAT;
00142         static const PredType NATIVE_DOUBLE;
00143         static const PredType NATIVE_LDOUBLE;
00144         static const PredType NATIVE_B8;
00145         static const PredType NATIVE_B16;
00146         static const PredType NATIVE_B32;
00147         static const PredType NATIVE_B64;
00148         static const PredType NATIVE_OPAQUE;
00149         static const PredType NATIVE_HSIZE;
00150         static const PredType NATIVE_HSSIZE;
00151         static const PredType NATIVE_HERR;
00152         static const PredType NATIVE_HBOOL;
00153 
00154         static const PredType NATIVE_INT8;
00155         static const PredType NATIVE_UINT8;
00156         static const PredType NATIVE_INT16;
00157         static const PredType NATIVE_UINT16;
00158         static const PredType NATIVE_INT32;
00159         static const PredType NATIVE_UINT32;
00160         static const PredType NATIVE_INT64;
00161         static const PredType NATIVE_UINT64;
00162 
00163 // LEAST types
00164 #if H5_SIZEOF_INT_LEAST8_T != 0
00165         static const PredType NATIVE_INT_LEAST8;
00166 #endif /* H5_SIZEOF_INT_LEAST8_T */
00167 #if H5_SIZEOF_UINT_LEAST8_T != 0
00168         static const PredType NATIVE_UINT_LEAST8;
00169 #endif /* H5_SIZEOF_UINT_LEAST8_T */
00170 
00171 #if H5_SIZEOF_INT_LEAST16_T != 0
00172         static const PredType NATIVE_INT_LEAST16;
00173 #endif /* H5_SIZEOF_INT_LEAST16_T */
00174 #if H5_SIZEOF_UINT_LEAST16_T != 0
00175         static const PredType NATIVE_UINT_LEAST16;
00176 #endif /* H5_SIZEOF_UINT_LEAST16_T */
00177 
00178 #if H5_SIZEOF_INT_LEAST32_T != 0
00179         static const PredType NATIVE_INT_LEAST32;
00180 #endif /* H5_SIZEOF_INT_LEAST32_T */
00181 #if H5_SIZEOF_UINT_LEAST32_T != 0
00182         static const PredType NATIVE_UINT_LEAST32;
00183 #endif /* H5_SIZEOF_UINT_LEAST32_T */
00184 
00185 #if H5_SIZEOF_INT_LEAST64_T != 0
00186         static const PredType NATIVE_INT_LEAST64;
00187 #endif /* H5_SIZEOF_INT_LEAST64_T */
00188 #if H5_SIZEOF_UINT_LEAST64_T != 0
00189         static const PredType NATIVE_UINT_LEAST64;
00190 #endif /* H5_SIZEOF_UINT_LEAST64_T */
00191 
00192 // FAST types
00193 #if H5_SIZEOF_INT_FAST8_T != 0
00194         static const PredType NATIVE_INT_FAST8;
00195 #endif /* H5_SIZEOF_INT_FAST8_T */
00196 #if H5_SIZEOF_UINT_FAST8_T != 0
00197         static const PredType NATIVE_UINT_FAST8;
00198 #endif /* H5_SIZEOF_UINT_FAST8_T */
00199 
00200 #if H5_SIZEOF_INT_FAST16_T != 0
00201         static const PredType NATIVE_INT_FAST16;
00202 #endif /* H5_SIZEOF_INT_FAST16_T */
00203 #if H5_SIZEOF_UINT_FAST16_T != 0
00204         static const PredType NATIVE_UINT_FAST16;
00205 #endif /* H5_SIZEOF_UINT_FAST16_T */
00206 
00207 #if H5_SIZEOF_INT_FAST32_T != 0
00208         static const PredType NATIVE_INT_FAST32;
00209 #endif /* H5_SIZEOF_INT_FAST32_T */
00210 #if H5_SIZEOF_UINT_FAST32_T != 0
00211         static const PredType NATIVE_UINT_FAST32;
00212 #endif /* H5_SIZEOF_UINT_FAST32_T */
00213 
00214 #if H5_SIZEOF_INT_FAST64_T != 0
00215         static const PredType NATIVE_INT_FAST64;
00216 #endif /* H5_SIZEOF_INT_FAST64_T */
00217 #if H5_SIZEOF_UINT_FAST64_T != 0
00218         static const PredType NATIVE_UINT_FAST64;
00219 #endif /* H5_SIZEOF_UINT_FAST64_T */
00220 
00221 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00222         // These dummy functions do not inherit from DataType - they'll
00223         // throw a DataTypeIException if invoked.
00224         void commit( H5File& loc, const H5std_string& name );
00225         void commit( H5File& loc, const char* name );
00226         void commit( H5Object& loc, const H5std_string& name );
00227         void commit( H5Object& loc, const char* name );
00228         bool committed();
00229 #endif // DOXYGEN_SHOULD_SKIP_THIS
00230 
00231    private:
00232         // added this to work around the atexit/global destructor problem
00233         // temporarily - it'll prevent the use of atexit to clean up
00234         static const PredType NotAtexit;        // not working yet
00235 
00236    protected:
00237 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00238         // Default constructor
00239         PredType();
00240 
00241         // Creates a pre-defined type using an HDF5 pre-defined constant
00242         PredType( const hid_t predtype_id );  // used by the library only
00243 
00244 #endif // DOXYGEN_SHOULD_SKIP_THIS
00245 
00246 };
00247 #ifndef H5_NO_NAMESPACE
00248 }
00249 #endif
00250 #endif