H5Tpkg.h

00001 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
00002  * Copyright by The HDF Group.                                               *
00003  * Copyright by the Board of Trustees of the University of Illinois.         *
00004  * All rights reserved.                                                      *
00005  *                                                                           *
00006  * This file is part of HDF5.  The full HDF5 copyright notice, including     *
00007  * terms governing use, modification, and redistribution, is contained in    *
00008  * the files COPYING and Copyright.html.  COPYING can be found at the root   *
00009  * of the source code distribution tree; Copyright.html can be found at the  *
00010  * root level of an installed copy of the electronic HDF5 document set and   *
00011  * is linked from the top-level documents page.  It can also be found at     *
00012  * http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have          *
00013  * access to either file, you may request a copy from help@hdfgroup.org.     *
00014  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
00015 
00016 /*
00017  * Programmer:  Robb Matzke <matzke@llnl.gov>
00018  *              Monday, December  8, 1997
00019  *
00020  * Purpose:     This file contains declarations which are visible only within
00021  *              the H5T package.  Source files outside the H5T package should
00022  *              include H5Tprivate.h instead.
00023  */
00024 #ifndef H5T_PACKAGE
00025 #error "Do not include this file outside the H5T package!"
00026 #endif
00027 
00028 #ifndef _H5Tpkg_H
00029 #define _H5Tpkg_H
00030 
00031 /*
00032  * Define this to enable debugging.
00033  */
00034 #ifdef NDEBUG
00035 #  undef H5T_DEBUG
00036 #endif
00037 
00038 /* Get package's private header */
00039 #include "H5Tprivate.h"
00040 
00041 /* Other private headers needed by this file */
00042 #include "H5Fprivate.h"         /* Files                                */
00043 #include "H5FLprivate.h"        /* Free Lists                           */
00044 #include "H5Oprivate.h"         /* Object headers                       */
00045 
00046 /* Other public headers needed by this file */
00047 #include "H5Spublic.h"          /* Dataspace functions                  */
00048 
00049 /* Number of reserved IDs in ID group */
00050 #define H5T_RESERVED_ATOMS      8
00051 
00052 /* Length of debugging name buffer */
00053 #define H5T_NAMELEN             32
00054 
00055 /* Macro to ease detecting "complex" datatypes (i.e. those with base types or fields) */
00056 #define H5T_IS_COMPLEX(t)       ((t) == H5T_COMPOUND || (t) == H5T_ENUM || (t) == H5T_VLEN || (t) == H5T_ARRAY)
00057 
00058 /* Macro to ease detecting fixed "string" datatypes */
00059 #define H5T_IS_FIXED_STRING(dt) (H5T_STRING == (dt)->type)
00060 
00061 /* Macro to ease detecting variable-length "string" datatypes */
00062 #define H5T_IS_VL_STRING(dt)    (H5T_VLEN == (dt)->type && H5T_VLEN_STRING == (dt)->u.vlen.type)
00063 
00064 /* Macro to ease detecting fixed or variable-length "string" datatypes */
00065 #define H5T_IS_STRING(dt)       (H5T_IS_FIXED_STRING(dt) || H5T_IS_VL_STRING(dt))
00066 
00067 /* Macro to ease detecting atomic datatypes */
00068 #define H5T_IS_ATOMIC(dt)       (!(H5T_IS_COMPLEX((dt)->type) || (dt)->type == H5T_OPAQUE))
00069 
00070 /* Macro to ease retrieving class of shared datatype */
00071 /* (Externally, a VL string is a string; internally, a VL string is a VL.  Lie
00072  *      to the user if they have a VL string and tell them it's in the string
00073  *      class)
00074  */
00075 #define H5T_GET_CLASS(shared, internal) ((internal) ? (shared)->type : (H5T_IS_VL_STRING(shared) ?  H5T_STRING : (shared)->type))
00076 
00077 
00078 /*
00079  * Datatype encoding versions
00080  */
00081 
00082 /* This is the version to create all datatypes which don't contain
00083  * array datatypes (atomic types, compound datatypes without array fields,
00084  * vlen sequences of objects which aren't arrays, etc.) or VAX byte-ordered
00085  * objects.
00086  */
00087 #define H5O_DTYPE_VERSION_1     1
00088 
00089 /* This is the version to create all datatypes which contain H5T_ARRAY
00090  * class objects (array definitely, potentially compound & vlen sequences also),
00091  * but not VAX byte-ordered objects.
00092  */
00093 #define H5O_DTYPE_VERSION_2     2
00094 
00095 /* This is the version to create all datatypes which contain VAX byte-ordered
00096  * objects (floating-point types, currently).
00097  */
00098 /* This version also packs compound & enum field names without padding */
00099 /* This version also encodes the member offset of compound fields more efficiently */
00100 /* This version also encodes array types more efficiently */
00101 #define H5O_DTYPE_VERSION_3     3
00102 
00103 /* The latest version of the format.  Look through the 'encode helper' routine
00104  *      and 'size' callback for places to change when updating this. */
00105 #define H5O_DTYPE_VERSION_LATEST H5O_DTYPE_VERSION_3
00106 
00107 
00108 /* Flags for visiting datatype */
00109 #define H5T_VISIT_COMPLEX_FIRST 0x01            /* Visit complex datatype before visiting member/parent datatypes */
00110 #define H5T_VISIT_COMPLEX_LAST  0x02            /* Visit complex datatype after visiting member/parent datatypes */
00111                                                 /* (setting both flags will mean visiting complex type twice) */
00112 #define H5T_VISIT_SIMPLE        0x04            /* Visit simple datatypes (at all) */
00113                                                 /* (setting H5T_VISIT_SIMPLE and _not_ setting either H5T_VISIT_COMPLEX_FIRST or H5T_VISIT_COMPLEX_LAST will mean visiting _only_ "simple" "leafs" in the "tree" */
00114                                                 /* (_not_ setting H5T_VISIT_SIMPLE and setting either H5T_VISIT_COMPLEX_FIRST or H5T_VISIT_COMPLEX_LAST will mean visiting all nodes _except_ "simple" "leafs" in the "tree" */
00115 
00116 
00117 /* Define an internal macro for converting between floating number(float and double) and floating number.
00118  * All Cray compilers don't support denormalized floating values generating exception(?). */
00119 #if H5_CONVERT_DENORMAL_FLOAT
00120 #define H5T_CONV_INTERNAL_FP_FP           1
00121 #endif /*H5_CONVERT_DENORMAL_FLOAT*/
00122 
00123 /* Define an internal macro for converting between floating number(float and double) and long double.
00124  * All Cray compilers don't support denormalized floating values generating exception(?).  NEC doesn't
00125  * support long double. */
00126 #if H5_SIZEOF_LONG_DOUBLE && H5_CONVERT_DENORMAL_FLOAT
00127 #define H5T_CONV_INTERNAL_FP_LDOUBLE      1
00128 #endif /*H5_SIZEOF_LONG_DOUBLE && H5_CONVERT_DENORMAL_FLOAT*/
00129 
00130 /* Define an internal macro for converting all integers to long double.  SGI compilers give some
00131  * incorrect conversions. */
00132 #if (H5_WANT_DATA_ACCURACY && H5_INTEGER_TO_LDOUBLE_ACCURATE) || (!H5_WANT_DATA_ACCURACY)
00133 #define H5T_CONV_INTERNAL_INTEGER_LDOUBLE         1
00134 #endif
00135 
00136 /* Define an internal macro for converting unsigned (long) long to floating numbers.
00137  * 64-bit Solaris does different rounding. */
00138 #if (H5_WANT_DATA_ACCURACY && H5_ULONG_TO_FP_BOTTOM_BIT_ACCURATE) || (!H5_WANT_DATA_ACCURACY)
00139 #define H5T_CONV_INTERNAL_ULONG_FP         1
00140 #endif
00141 
00142 /* Define an internal macro for converting unsigned long to long double.  SGI compilers give some
00143  * incorrect conversions. 64-bit Solaris does different rounding. */
00144 #if (H5_WANT_DATA_ACCURACY && H5_INTEGER_TO_LDOUBLE_ACCURATE && H5_ULONG_TO_FP_BOTTOM_BIT_ACCURATE) || \
00145     (!H5_WANT_DATA_ACCURACY)
00146 #define H5T_CONV_INTERNAL_ULONG_LDOUBLE       1
00147 #endif
00148 
00149 /* Define an internal macro for converting long long to long double.  Mac OS 10.4 gives some
00150  * incorrect conversions. */
00151 #if (H5_WANT_DATA_ACCURACY && H5_INTEGER_TO_LDOUBLE_ACCURATE && defined(H5_LLONG_TO_LDOUBLE_CORRECT)) || \
00152     (!H5_WANT_DATA_ACCURACY)
00153 #define H5T_CONV_INTERNAL_LLONG_LDOUBLE       1
00154 #endif
00155 
00156 /* Define an internal macro for converting unsigned long long to floating numbers.  SGI compilers give
00157  * some incorect conversion.  64-bit Solaris does different rounding.   Windows Visual Studio 6 does
00158  * not support unsigned long long. */
00159 #if (H5_WANT_DATA_ACCURACY && H5_ULLONG_TO_FP_CAST_WORKS && H5_ULONG_TO_FP_BOTTOM_BIT_ACCURATE) || \
00160     (!H5_WANT_DATA_ACCURACY && H5_ULLONG_TO_FP_CAST_WORKS)
00161 #define H5T_CONV_INTERNAL_ULLONG_FP         1
00162 #endif
00163 
00164 /* Define an internal macro for converting unsigned long long to long double.  SGI compilers give
00165  * some incorect conversion.  64-bit Solaris does different rounding.   Windows Visual Studio 6 does
00166  * not support unsigned long long.  For FreeBSD(sleipnir), the last 2 bytes of mantissa are lost when
00167  * compiler tries to do the conversion.  For Cygwin, compiler doesn't do rounding correctly.
00168  * Mac OS 10.4 gives some incorrect result. */
00169 #if (H5_WANT_DATA_ACCURACY && H5_ULLONG_TO_FP_CAST_WORKS && H5_ULONG_TO_FP_BOTTOM_BIT_ACCURATE && \
00170     defined(H5_ULLONG_TO_LDOUBLE_PRECISION) && defined(H5_LLONG_TO_LDOUBLE_CORRECT)) || (!H5_WANT_DATA_ACCURACY && \
00171     H5_ULLONG_TO_FP_CAST_WORKS)
00172 #define H5T_CONV_INTERNAL_ULLONG_LDOUBLE         1
00173 #endif
00174 
00175 /* Define an internal macro for converting long double to all integers.  SGI compilers give some incorrect
00176  * conversions.  HP-UX 11.00 compiler generates floating exception. */
00177 #if (H5_WANT_DATA_ACCURACY && H5_LDOUBLE_TO_INTEGER_ACCURATE && H5_LDOUBLE_TO_INTEGER_WORKS) || \
00178     (!H5_WANT_DATA_ACCURACY && H5_LDOUBLE_TO_INTEGER_WORKS)
00179 #define H5T_CONV_INTERNAL_LDOUBLE_INTEGER         1
00180 #endif
00181 
00182 /* Define an internal macro for converting long double to unsigned int.  SGI compilers give some incorrect
00183  * conversions.  HP-UX 11.00 compiler generates floating exception.  Some Intel compilers on some Linux
00184  * give incorrect values. */
00185 #if (H5_WANT_DATA_ACCURACY && H5_LDOUBLE_TO_INTEGER_ACCURATE && H5_LDOUBLE_TO_UINT_ACCURATE && \
00186     H5_LDOUBLE_TO_INTEGER_WORKS) || (!H5_WANT_DATA_ACCURACY && H5_LDOUBLE_TO_INTEGER_WORKS)
00187 #define H5T_CONV_INTERNAL_LDOUBLE_UINT         1
00188 #endif
00189 
00190 /* Define an internal macro for converting floating numbers to long long.  The hard conversion on Windows
00191  * .NET 2003 has a bug and gives wrong exception value. */
00192 #if (H5_WANT_DATA_ACCURACY && !defined(H5_HW_FP_TO_LLONG_NOT_WORKS)) || (!H5_WANT_DATA_ACCURACY)
00193 #define H5T_CONV_INTERNAL_FP_LLONG         1
00194 #endif
00195 
00196 /* Define an internal macro for converting long double to long long.  SGI compilers give some incorrect
00197  * conversions. Mac OS 10.4 gives incorrect conversions. HP-UX 11.00 compiler generates floating exception.
00198  * The hard conversion on Windows .NET 2003 has a bug and gives wrong exception value. */
00199 #if (H5_WANT_DATA_ACCURACY && !defined(H5_HW_FP_TO_LLONG_NOT_WORKS) && H5_LDOUBLE_TO_INTEGER_ACCURATE && \
00200     H5_LDOUBLE_TO_INTEGER_WORKS && defined(H5_LDOUBLE_TO_LLONG_ACCURATE)) || \
00201     (!H5_WANT_DATA_ACCURACY && !defined(H5_HW_FP_TO_LLONG_NOT_WORKS) && H5_LDOUBLE_TO_INTEGER_WORKS)
00202 #define H5T_CONV_INTERNAL_LDOUBLE_LLONG         1
00203 #endif
00204 
00205 /* Define an internal macro for converting floating numbers to unsigned long long.  PGI compiler does
00206  * roundup when the source fraction part is greater than 0.5.  HP-UX compilers set the maximal number
00207  * for unsigned long long as 0x7fffffffffffffff during conversion. */
00208 #if (H5_WANT_DATA_ACCURACY && H5_FP_TO_ULLONG_ACCURATE && defined(H5_FP_TO_ULLONG_RIGHT_MAXIMUM)) || \
00209     (!H5_WANT_DATA_ACCURACY)
00210 #define H5T_CONV_INTERNAL_FP_ULLONG         1
00211 #else
00212 #define H5T_CONV_INTERNAL_FP_ULLONG         0
00213 #endif
00214 
00215 /* Define an internal macro for converting long double to unsigned long long.  SGI compilers give some
00216  * incorrect conversions.  Mac OS 10.4 gives incorrect conversions. HP-UX 11.00 compiler generates
00217  * floating exception. */
00218 #if (H5_WANT_DATA_ACCURACY && H5_LDOUBLE_TO_INTEGER_ACCURATE && H5_LDOUBLE_TO_INTEGER_WORKS && \
00219     H5_FP_TO_ULLONG_ACCURATE && defined(H5_FP_TO_ULLONG_RIGHT_MAXIMUM) && defined(H5_LDOUBLE_TO_LLONG_ACCURATE)) || \
00220     (!H5_WANT_DATA_ACCURACY && H5_LDOUBLE_TO_INTEGER_WORKS)
00221 #define H5T_CONV_INTERNAL_LDOUBLE_ULLONG         1
00222 #else
00223 #define H5T_CONV_INTERNAL_LDOUBLE_ULLONG         0
00224 #endif
00225 
00226 /* Statistics about a conversion function */
00227 struct H5T_stats_t {
00228     unsigned    ncalls;                 /*num calls to conversion function   */
00229     hsize_t     nelmts;                 /*total data points converted        */
00230     H5_timer_t  timer;                  /*total time for conversion          */
00231 };
00232 
00233 /* The datatype conversion database */
00234 struct H5T_path_t {
00235     char        name[H5T_NAMELEN];      /*name for debugging only            */
00236     H5T_t       *src;                   /*source datatype                    */
00237     H5T_t       *dst;                   /*destination datatype               */
00238     H5T_conv_t  func;                   /*data conversion function           */
00239     hbool_t     is_hard;                /*is it a hard function?             */
00240     hbool_t     is_noop;                /*is it the noop conversion?         */
00241     hbool_t     are_compounds;          /*are source and dest both compounds?*/
00242     H5T_stats_t stats;                  /*statistics for the conversion      */
00243     H5T_cdata_t cdata;                  /*data for this function             */
00244 };
00245 
00246 typedef struct H5T_atomic_t {
00247     H5T_order_t         order;  /*byte order                                 */
00248     size_t              prec;   /*precision in bits                          */
00249     size_t              offset; /*bit position of lsb of value               */
00250     H5T_pad_t           lsb_pad;/*type of lsb padding                        */
00251     H5T_pad_t           msb_pad;/*type of msb padding                        */
00252     union {
00253         struct {
00254             H5T_sign_t  sign;   /*type of integer sign                       */
00255         } i;                    /*integer; integer types                     */
00256 
00257         struct {
00258             size_t      sign;   /*bit position of sign bit                   */
00259             size_t      epos;   /*position of lsb of exponent                */
00260             size_t      esize;  /*size of exponent in bits                   */
00261             uint64_t    ebias;  /*exponent bias                              */
00262             size_t      mpos;   /*position of lsb of mantissa                */
00263             size_t      msize;  /*size of mantissa                           */
00264             H5T_norm_t  norm;   /*normalization                              */
00265             H5T_pad_t   pad;    /*type of padding for internal bits          */
00266         } f;                    /*floating-point types                       */
00267 
00268         struct {
00269             H5T_cset_t  cset;   /*character set                              */
00270             H5T_str_t   pad;    /*space or null padding of extra bytes       */
00271         } s;                    /*string types                               */
00272 
00273         struct {
00274             H5R_type_t  rtype;  /*type of reference stored                   */
00275             H5T_loc_t   loc;    /* Location of data in buffer                */
00276         } r;                    /*reference types                            */
00277     } u;
00278 } H5T_atomic_t;
00279 
00280 /* How members are sorted for compound or enum datatypes */
00281 typedef enum H5T_sort_t {
00282     H5T_SORT_NONE       = 0,            /*not sorted                         */
00283     H5T_SORT_NAME       = 1,            /*sorted by member name              */
00284     H5T_SORT_VALUE      = 2             /*sorted by memb offset or enum value*/
00285 } H5T_sort_t;
00286 
00287 /* A compound datatype member */
00288 typedef struct H5T_cmemb_t {
00289     char                *name;          /*name of this member                */
00290     size_t              offset;         /*offset from beginning of struct    */
00291     size_t              size;           /*size of this member                */
00292     struct H5T_t        *type;          /*type of this member                */
00293 } H5T_cmemb_t;
00294 
00295 /* A compound datatype */
00296 typedef struct H5T_compnd_t {
00297     unsigned    nalloc;         /*num entries allocated in MEMB array*/
00298     unsigned    nmembs;         /*number of members defined in struct*/
00299     H5T_sort_t  sorted;         /*how are members sorted?            */
00300     hbool_t     packed;         /*are members packed together?       */
00301     H5T_cmemb_t *memb;          /*array of struct members            */
00302 } H5T_compnd_t;
00303 
00304 /* An enumeration datatype */
00305 typedef struct H5T_enum_t {
00306     unsigned    nalloc;         /*num entries allocated              */
00307     unsigned    nmembs;         /*number of members defined in enum  */
00308     H5T_sort_t  sorted;         /*how are members sorted?            */
00309     uint8_t     *value;         /*array of values                    */
00310     char        **name;         /*array of symbol names              */
00311 } H5T_enum_t;
00312 
00313 /* VL function pointers */
00314 typedef ssize_t (*H5T_vlen_getlenfunc_t)(const void *vl_addr);
00315 typedef void * (*H5T_vlen_getptrfunc_t)(void *vl_addr);
00316 typedef htri_t (*H5T_vlen_isnullfunc_t)(const H5F_t *f, void *vl_addr);
00317 typedef herr_t (*H5T_vlen_readfunc_t)(H5F_t *f, hid_t dxpl_id, void *_vl, void *buf, size_t len);
00318 typedef herr_t (*H5T_vlen_writefunc_t)(H5F_t *f, hid_t dxpl_id, const H5T_vlen_alloc_info_t *vl_alloc_info, void *_vl, void *buf, void *_bg, size_t seq_len, size_t base_size);
00319 typedef herr_t (*H5T_vlen_setnullfunc_t)(H5F_t *f, hid_t dxpl_id, void *_vl, void *_bg);
00320 
00321 /* VL types */
00322 typedef enum {
00323     H5T_VLEN_BADTYPE =  -1, /* invalid VL Type */
00324     H5T_VLEN_SEQUENCE = 0,  /* VL sequence */
00325     H5T_VLEN_STRING,        /* VL string */
00326     H5T_VLEN_MAXTYPE        /* highest type (Invalid as true type) */
00327 } H5T_vlen_type_t;
00328 
00329 /* A VL datatype */
00330 typedef struct H5T_vlen_t {
00331     H5T_vlen_type_t     type;   /* Type of VL data in buffer */
00332     H5T_loc_t           loc;    /* Location of VL data in buffer */
00333     H5T_cset_t          cset;   /* For VL string. character set */
00334     H5T_str_t           pad;    /* For VL string.  space or null padding of
00335                                  * extra bytes */
00336     H5F_t *f;                   /* File ID (if VL data is on disk) */
00337     H5T_vlen_getptrfunc_t getptr;   /* Function to get VL sequence pointer */
00338     H5T_vlen_getlenfunc_t getlen;   /* Function to get VL sequence size (in element units, not bytes) */
00339     H5T_vlen_isnullfunc_t isnull;   /* Function to check if VL value is NIL */
00340     H5T_vlen_readfunc_t read;   /* Function to read VL sequence into buffer */
00341     H5T_vlen_writefunc_t write; /* Function to write VL sequence from buffer */
00342     H5T_vlen_setnullfunc_t setnull; /* Function to set a VL value to NIL */
00343 } H5T_vlen_t;
00344 
00345 /* An opaque datatype */
00346 typedef struct H5T_opaque_t {
00347     char                *tag;           /*short type description string      */
00348 } H5T_opaque_t;
00349 
00350 /* An array datatype */
00351 typedef struct H5T_array_t {
00352     size_t      nelem;          /* total number of elements in array */
00353     unsigned    ndims;          /* member dimensionality        */
00354     size_t      dim[H5S_MAX_RANK];  /* size in each dimension       */
00355 } H5T_array_t;
00356 
00357 typedef enum H5T_state_t {
00358     H5T_STATE_TRANSIENT,                /*type is a modifiable, closable transient */
00359     H5T_STATE_RDONLY,                   /*transient, not modifiable, closable */
00360     H5T_STATE_IMMUTABLE,                /*transient, not modifiable, not closable */
00361     H5T_STATE_NAMED,                    /*named constant, not open           */
00362     H5T_STATE_OPEN                      /*named constant, open object header */
00363 } H5T_state_t;
00364 
00365     /* This struct is shared between all occurances of an open named type */
00366 typedef struct H5T_shared_t {
00367     hsize_t             fo_count; /* number of references to this file object */
00368     H5T_state_t         state;  /*current state of the type                  */
00369     H5T_class_t         type;   /*which class of type is this?               */
00370     size_t              size;   /*total size of an instance of this type     */
00371     unsigned            version;        /* Version of object header message to encode this object with */
00372     hbool_t             force_conv;/* Set if this type always needs to be converted and H5T_conv_noop cannot be called */
00373     struct H5T_t        *parent;/*parent type for derived datatypes          */
00374     union {
00375         H5T_atomic_t    atomic; /* an atomic datatype              */
00376         H5T_compnd_t    compnd; /* a compound datatype (struct)    */
00377         H5T_enum_t      enumer; /* an enumeration type (enum)       */
00378         H5T_vlen_t      vlen;   /* a variable-length datatype       */
00379         H5T_opaque_t    opaque; /* an opaque datatype              */
00380         H5T_array_t     array;  /* an array datatype                */
00381     } u;
00382 } H5T_shared_t;
00383 
00384 struct H5T_t {
00385     H5O_shared_t    sh_loc;     /* Shared message info (must be first) */
00386 
00387     H5T_shared_t   *shared;     /* all other information */
00388     H5O_loc_t       oloc;       /* Object location, if the type is a named type */
00389     H5G_name_t      path;       /* group hier. path if the type is a named type */
00390 };
00391 
00392 /* The master list of soft conversion functions */
00393 typedef struct H5T_soft_t {
00394     char        name[H5T_NAMELEN];      /*name for debugging only            */
00395     H5T_class_t src;                    /*source datatype class      */
00396     H5T_class_t dst;                    /*destination datatype class         */
00397     H5T_conv_t  func;                   /*the conversion function            */
00398 } H5T_soft_t;
00399 
00400 /* Bit search direction */
00401 typedef enum H5T_sdir_t {
00402     H5T_BIT_LSB,                        /*search lsb toward msb              */
00403     H5T_BIT_MSB                         /*search msb toward lsb              */
00404 } H5T_sdir_t;
00405 
00406 /* Typedef for named datatype creation operation */
00407 typedef struct {
00408     H5T_t *dt;                  /* Datatype to commit */
00409     hid_t tcpl_id;              /* Named datatype creation property list */
00410 } H5T_obj_create_t;
00411 
00412 /* Typedef for datatype iteration operations */
00413 typedef herr_t (*H5T_operator_t)(H5T_t *dt, void *op_data/*in,out*/);
00414 
00415 /*
00416  * Alignment information for native types. A value of N indicates that the
00417  * data must be aligned on an address ADDR such that 0 == ADDR mod N. When
00418  * N=1 no alignment is required; N=0 implies that alignment constraints were
00419  * not calculated.  These alignment info is only for H5Tget_native_type.
00420  * These values are used for structure alignment.
00421  */
00422 H5_DLLVAR size_t        H5T_NATIVE_SCHAR_COMP_ALIGN_g;
00423 H5_DLLVAR size_t        H5T_NATIVE_SHORT_COMP_ALIGN_g;
00424 H5_DLLVAR size_t        H5T_NATIVE_INT_COMP_ALIGN_g;
00425 H5_DLLVAR size_t        H5T_NATIVE_LONG_COMP_ALIGN_g;
00426 H5_DLLVAR size_t        H5T_NATIVE_LLONG_COMP_ALIGN_g;
00427 H5_DLLVAR size_t        H5T_NATIVE_FLOAT_COMP_ALIGN_g;
00428 H5_DLLVAR size_t        H5T_NATIVE_DOUBLE_COMP_ALIGN_g;
00429 #if H5_SIZEOF_LONG_DOUBLE !=0
00430 H5_DLLVAR size_t        H5T_NATIVE_LDOUBLE_COMP_ALIGN_g;
00431 #endif
00432 
00433 H5_DLLVAR size_t H5T_POINTER_COMP_ALIGN_g;
00434 H5_DLLVAR size_t H5T_HVL_COMP_ALIGN_g;
00435 H5_DLLVAR size_t H5T_HOBJREF_COMP_ALIGN_g;
00436 H5_DLLVAR size_t H5T_HDSETREGREF_COMP_ALIGN_g;
00437 
00438 /*
00439  * Alignment information for native types. A value of N indicates that the
00440  * data must be aligned on an address ADDR such that 0 == ADDR mod N. When
00441  * N=1 no alignment is required; N=0 implies that alignment constraints were
00442  * not calculated.
00443  */
00444 H5_DLLVAR size_t        H5T_NATIVE_SCHAR_ALIGN_g;
00445 H5_DLLVAR size_t        H5T_NATIVE_UCHAR_ALIGN_g;
00446 H5_DLLVAR size_t        H5T_NATIVE_SHORT_ALIGN_g;
00447 H5_DLLVAR size_t        H5T_NATIVE_USHORT_ALIGN_g;
00448 H5_DLLVAR size_t        H5T_NATIVE_INT_ALIGN_g;
00449 H5_DLLVAR size_t        H5T_NATIVE_UINT_ALIGN_g;
00450 H5_DLLVAR size_t        H5T_NATIVE_LONG_ALIGN_g;
00451 H5_DLLVAR size_t        H5T_NATIVE_ULONG_ALIGN_g;
00452 H5_DLLVAR size_t        H5T_NATIVE_LLONG_ALIGN_g;
00453 H5_DLLVAR size_t        H5T_NATIVE_ULLONG_ALIGN_g;
00454 H5_DLLVAR size_t        H5T_NATIVE_FLOAT_ALIGN_g;
00455 H5_DLLVAR size_t        H5T_NATIVE_DOUBLE_ALIGN_g;
00456 #if H5_SIZEOF_LONG_DOUBLE !=0
00457 H5_DLLVAR size_t        H5T_NATIVE_LDOUBLE_ALIGN_g;
00458 #endif
00459 
00460 /* C9x alignment constraints */
00461 H5_DLLVAR size_t        H5T_NATIVE_INT8_ALIGN_g;
00462 H5_DLLVAR size_t        H5T_NATIVE_UINT8_ALIGN_g;
00463 H5_DLLVAR size_t        H5T_NATIVE_INT_LEAST8_ALIGN_g;
00464 H5_DLLVAR size_t        H5T_NATIVE_UINT_LEAST8_ALIGN_g;
00465 H5_DLLVAR size_t        H5T_NATIVE_INT_FAST8_ALIGN_g;
00466 H5_DLLVAR size_t        H5T_NATIVE_UINT_FAST8_ALIGN_g;
00467 
00468 H5_DLLVAR size_t        H5T_NATIVE_INT16_ALIGN_g;
00469 H5_DLLVAR size_t        H5T_NATIVE_UINT16_ALIGN_g;
00470 H5_DLLVAR size_t        H5T_NATIVE_INT_LEAST16_ALIGN_g;
00471 H5_DLLVAR size_t        H5T_NATIVE_UINT_LEAST16_ALIGN_g;
00472 H5_DLLVAR size_t        H5T_NATIVE_INT_FAST16_ALIGN_g;
00473 H5_DLLVAR size_t        H5T_NATIVE_UINT_FAST16_ALIGN_g;
00474 
00475 H5_DLLVAR size_t        H5T_NATIVE_INT32_ALIGN_g;
00476 H5_DLLVAR size_t        H5T_NATIVE_UINT32_ALIGN_g;
00477 H5_DLLVAR size_t        H5T_NATIVE_INT_LEAST32_ALIGN_g;
00478 H5_DLLVAR size_t        H5T_NATIVE_UINT_LEAST32_ALIGN_g;
00479 H5_DLLVAR size_t        H5T_NATIVE_INT_FAST32_ALIGN_g;
00480 H5_DLLVAR size_t        H5T_NATIVE_UINT_FAST32_ALIGN_g;
00481 
00482 H5_DLLVAR size_t        H5T_NATIVE_INT64_ALIGN_g;
00483 H5_DLLVAR size_t        H5T_NATIVE_UINT64_ALIGN_g;
00484 H5_DLLVAR size_t        H5T_NATIVE_INT_LEAST64_ALIGN_g;
00485 H5_DLLVAR size_t        H5T_NATIVE_UINT_LEAST64_ALIGN_g;
00486 H5_DLLVAR size_t        H5T_NATIVE_INT_FAST64_ALIGN_g;
00487 H5_DLLVAR size_t        H5T_NATIVE_UINT_FAST64_ALIGN_g;
00488 
00489 /* Useful floating-point values for conversion routines */
00490 /* (+/- Inf for all floating-point types) */
00491 H5_DLLVAR float H5T_NATIVE_FLOAT_POS_INF_g;
00492 H5_DLLVAR float H5T_NATIVE_FLOAT_NEG_INF_g;
00493 H5_DLLVAR double H5T_NATIVE_DOUBLE_POS_INF_g;
00494 H5_DLLVAR double H5T_NATIVE_DOUBLE_NEG_INF_g;
00495 #if H5_SIZEOF_LONG_DOUBLE !=0
00496 H5_DLLVAR double H5T_NATIVE_LDOUBLE_POS_INF_g;
00497 H5_DLLVAR double H5T_NATIVE_LDOUBLE_NEG_INF_g;
00498 #endif
00499 
00500 /* Declare extern the free lists for H5T_t's and H5T_shared_t's */
00501 H5FL_EXTERN(H5T_t);
00502 H5FL_EXTERN(H5T_shared_t);
00503 
00504 /* Common functions */
00505 H5_DLL H5T_t *H5T_create(H5T_class_t type, size_t size);
00506 H5_DLL herr_t H5T_commit(H5F_t *file, H5T_t *type, hid_t tcpl_id, hid_t dxpl_id);
00507 H5_DLL herr_t H5T_commit_named(const H5G_loc_t *loc, const char *name,
00508     H5T_t *dt, hid_t lcpl_id, hid_t tcpl_id, hid_t tapl_id, hid_t dxpl_id);
00509 H5_DLL H5T_t *H5T_alloc(void);
00510 H5_DLL herr_t H5T_free(H5T_t *dt);
00511 H5_DLL herr_t H5T_visit(H5T_t *dt, unsigned visit_flags, H5T_operator_t op,
00512     void *op_value);
00513 H5_DLL herr_t H5T_set_size(H5T_t *dt, size_t size);
00514 H5_DLL herr_t H5T_upgrade_version(H5T_t *dt, unsigned new_version);
00515 
00516 /* Conversion functions */
00517 H5_DLL herr_t H5T_conv_noop(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
00518                             size_t nelmts, size_t buf_stride,
00519                             size_t bkg_stride, void *buf, void *bkg,
00520                             hid_t dset_xfer_plist);
00521 
00522 H5_DLL herr_t H5T_conv_order(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
00523                             size_t nelmts, size_t buf_stride,
00524                             size_t bkg_stride, void *_buf, void *bkg,
00525                             hid_t dset_xfer_plist);
00526 H5_DLL herr_t H5T_conv_order_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
00527                             size_t nelmts, size_t buf_stride,
00528                             size_t bkg_stride, void *_buf, void *bkg,
00529                             hid_t dset_xfer_plist);
00530 H5_DLL herr_t H5T_conv_struct(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
00531                             size_t nelmts, size_t buf_stride,
00532                             size_t bkg_stride, void *_buf, void *bkg,
00533                             hid_t dset_xfer_plist);
00534 H5_DLL herr_t H5T_conv_struct_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
00535                             size_t nelmts, size_t buf_stride,
00536                             size_t bkg_stride, void *_buf, void *bkg,
00537                             hid_t dset_xfer_plist);
00538 H5_DLL herr_t H5T_conv_enum(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
00539                             size_t nelmts, size_t buf_stride,
00540                             size_t bkg_stride, void *buf, void *bkg,
00541                             hid_t dset_xfer_plist);
00542 H5_DLL herr_t H5T_conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
00543                             size_t nelmts, size_t buf_stride,
00544                             size_t bkg_stride, void *buf, void *bkg,
00545                             hid_t dset_xfer_plist);
00546 H5_DLL herr_t H5T_conv_array(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
00547                             size_t nelmts, size_t buf_stride,
00548                             size_t bkg_stride, void *buf, void *bkg,
00549                             hid_t dset_xfer_plist);
00550 H5_DLL herr_t H5T_conv_i_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
00551                             size_t nelmts, size_t buf_stride,
00552                             size_t bkg_stride, void *_buf, void *bkg,
00553                             hid_t dset_xfer_plist);
00554 H5_DLL herr_t H5T_conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
00555                             size_t nelmts, size_t buf_stride,
00556                             size_t bkg_stride, void *_buf, void *bkg,
00557                             hid_t dset_xfer_plist);
00558 H5_DLL herr_t H5T_conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
00559                             size_t nelmts, size_t buf_stride,
00560                             size_t bkg_stride, void *_buf, void *bkg,
00561                             hid_t dset_xfer_plist);
00562 H5_DLL herr_t H5T_conv_i_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
00563                             size_t nelmts, size_t buf_stride,
00564                             size_t bkg_stride, void *_buf, void *bkg,
00565                             hid_t dset_xfer_plist);
00566 H5_DLL herr_t H5T_conv_s_s(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
00567                             size_t nelmts, size_t buf_stride,
00568                             size_t bkg_stride, void *_buf, void *bkg,
00569                             hid_t dset_xfer_plist);
00570 H5_DLL herr_t H5T_conv_b_b(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
00571                             size_t nelmts, size_t buf_stride,
00572                             size_t bkg_stride, void *_buf, void *bkg,
00573                             hid_t dset_xfer_plist);
00574 
00575 H5_DLL herr_t H5T_conv_schar_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
00576                             size_t nelmts, size_t buf_stride,
00577                             size_t bkg_stride, void *buf, void *bkg,
00578                             hid_t dset_xfer_plist);
00579 H5_DLL herr_t H5T_conv_uchar_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
00580                             size_t nelmts, size_t buf_stride,
00581                             size_t bkg_stride, void *buf, void *bkg,
00582                             hid_t dset_xfer_plist);
00583 H5_DLL herr_t H5T_conv_schar_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
00584                             size_t nelmts, size_t buf_stride,
00585                             size_t bkg_stride, void *buf, void *bkg,
00586                             hid_t dset_xfer_plist);
00587 H5_DLL herr_t H5T_conv_schar_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
00588                             size_t nelmts, size_t buf_stride,
00589                             size_t bkg_stride, void *buf, void *bkg,
00590                             hid_t dset_xfer_plist);
00591 H5_DLL herr_t H5T_conv_uchar_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
00592                             size_t nelmts, size_t buf_stride,
00593                             size_t bkg_stride, void *buf, void *bkg,
00594                             hid_t dset_xfer_plist);
00595 H5_DLL herr_t H5T_conv_uchar_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
00596                             size_t nelmts, size_t buf_stride,
00597                             size_t bkg_stride, void *buf, void *bkg,
00598                             hid_t dset_xfer_plist);
00599 H5_DLL herr_t H5T_conv_schar_int(hid_t src_id, hid_t dst_id,
00600                                   H5T_cdata_t *cdata, size_t nelmts,
00601                                   size_t buf_stride, size_t bkg_stride,
00602                                   void *buf, void *bkg,
00603                                   hid_t dset_xfer_plist);
00604 H5_DLL herr_t H5T_conv_schar_uint(hid_t src_id, hid_t dst_id,
00605                                    H5T_cdata_t *cdata, size_t nelmts,
00606                                    size_t buf_stride, size_t bkg_stride,
00607                                    void *buf, void *bkg,
00608                                    hid_t dset_xfer_plist);
00609 H5_DLL herr_t H5T_conv_uchar_int(hid_t src_id, hid_t dst_id,
00610                                   H5T_cdata_t *cdata, size_t nelmts,
00611                                   size_t buf_stride, size_t bkg_stride,
00612                                   void *buf, void *bkg,
00613                                   hid_t dset_xfer_plist);
00614 H5_DLL herr_t H5T_conv_uchar_uint(hid_t src_id, hid_t dst_id,
00615                                    H5T_cdata_t *cdata, size_t nelmts,
00616                                    size_t buf_stride, size_t bkg_stride,
00617                                    void *buf, void *bkg,
00618                                    hid_t dset_xfer_plist);
00619 H5_DLL herr_t H5T_conv_schar_long(hid_t src_id, hid_t dst_id,
00620                                    H5T_cdata_t *cdata, size_t nelmts,
00621                                    size_t buf_stride, size_t bkg_stride,
00622                                    void *buf, void *bkg,
00623                                    hid_t dset_xfer_plist);
00624 H5_DLL herr_t H5T_conv_schar_ulong(hid_t src_id, hid_t dst_id,
00625                                     H5T_cdata_t *cdata, size_t nelmts,
00626                                     size_t buf_stride, size_t bkg_stride,
00627                                     void *buf, void *bkg,
00628                                     hid_t dset_xfer_plist);
00629 H5_DLL herr_t H5T_conv_uchar_long(hid_t src_id, hid_t dst_id,
00630                                    H5T_cdata_t *cdata, size_t nelmts,
00631                                    size_t buf_stride, size_t bkg_stride,
00632                                    void *buf, void *bkg,
00633                                    hid_t dset_xfer_plist);
00634 H5_DLL herr_t H5T_conv_uchar_ulong(hid_t src_id, hid_t dst_id,
00635                                     H5T_cdata_t *cdata, size_t nelmts,
00636                                     size_t buf_stride, size_t bkg_stride,
00637                                     void *buf, void *bkg,
00638                                     hid_t dset_xfer_plist);
00639 H5_DLL herr_t H5T_conv_schar_llong(hid_t src_id, hid_t dst_id,
00640                                     H5T_cdata_t *cdata, size_t nelmts,
00641                                     size_t buf_stride, size_t bkg_stride,
00642                                     void *buf, void *bkg,
00643                                     hid_t dset_xfer_plist);
00644 H5_DLL herr_t H5T_conv_schar_ullong(hid_t src_id, hid_t dst_id,
00645                                      H5T_cdata_t *cdata, size_t nelmts,
00646                                      size_t buf_stride, size_t bkg_stride,
00647                                      void *buf, void *bkg,
00648                                      hid_t dset_xfer_plist);
00649 H5_DLL herr_t H5T_conv_uchar_llong(hid_t src_id, hid_t dst_id,
00650                                     H5T_cdata_t *cdata, size_t nelmts,
00651                                     size_t buf_stride, size_t bkg_stride,
00652                                     void *buf, void *bkg,
00653                                     hid_t dset_xfer_plist);
00654 H5_DLL herr_t H5T_conv_uchar_ullong(hid_t src_id, hid_t dst_id,
00655                                      H5T_cdata_t *cdata, size_t nelmts,
00656                                      size_t buf_stride, size_t bkg_stride,
00657                                      void *buf, void *bkg,
00658                                      hid_t dset_xfer_plist);
00659 
00660 H5_DLL herr_t H5T_conv_short_schar(hid_t src_id, hid_t dst_id,
00661                                     H5T_cdata_t *cdata, size_t nelmts,
00662                                     size_t buf_stride, size_t bkg_stride,
00663                                     void *buf, void *bkg,
00664                                     hid_t dset_xfer_plist);
00665 H5_DLL herr_t H5T_conv_short_uchar(hid_t src_id, hid_t dst_id,
00666                                     H5T_cdata_t *cdata, size_t nelmts,
00667                                     size_t buf_stride, size_t bkg_stride,
00668                                     void *buf, void *bkg,
00669                                     hid_t dset_xfer_plist);
00670 H5_DLL herr_t H5T_conv_ushort_schar(hid_t src_id, hid_t dst_id,
00671                                      H5T_cdata_t *cdata, size_t nelmts,
00672                                      size_t buf_stride, size_t bkg_stride,
00673                                      void *buf, void *bkg,
00674                                      hid_t dset_xfer_plist);
00675 H5_DLL herr_t H5T_conv_ushort_uchar(hid_t src_id, hid_t dst_id,
00676                                      H5T_cdata_t *cdata, size_t nelmts,
00677                                      size_t buf_stride, size_t bkg_stride,
00678                                      void *buf, void *bkg,
00679                                      hid_t dset_xfer_plist);
00680 H5_DLL herr_t H5T_conv_short_ushort(hid_t src_id, hid_t dst_id,
00681                                      H5T_cdata_t *cdata, size_t nelmts,
00682                                      size_t buf_stride, size_t bkg_stride,
00683                                      void *buf, void *bkg,
00684                                      hid_t dset_xfer_plist);
00685 H5_DLL herr_t H5T_conv_ushort_short(hid_t src_id, hid_t dst_id,
00686                                      H5T_cdata_t *cdata, size_t nelmts,
00687                                      size_t buf_stride, size_t bkg_stride,
00688                                      void *buf, void *bkg,
00689                                      hid_t dset_xfer_plist);
00690 H5_DLL herr_t H5T_conv_short_int(hid_t src_id, hid_t dst_id,
00691                                   H5T_cdata_t *cdata, size_t nelmts,
00692                                   size_t buf_stride, size_t bkg_stride,
00693                                   void *buf, void *bkg,
00694                                   hid_t dset_xfer_plist);
00695 H5_DLL herr_t H5T_conv_short_uint(hid_t src_id, hid_t dst_id,
00696                                    H5T_cdata_t *cdata, size_t nelmts,
00697                                    size_t buf_stride, size_t bkg_stride,
00698                                    void *buf, void *bkg,
00699                                    hid_t dset_xfer_plist);
00700 H5_DLL herr_t H5T_conv_ushort_int(hid_t src_id, hid_t dst_id,
00701                                    H5T_cdata_t *cdata, size_t nelmts,
00702                                    size_t buf_stride, size_t bkg_stride,
00703                                    void *buf, void *bkg,
00704                                    hid_t dset_xfer_plist);
00705 H5_DLL herr_t H5T_conv_ushort_uint(hid_t src_id, hid_t dst_id,
00706                                     H5T_cdata_t *cdata, size_t nelmts,
00707                                     size_t buf_stride, size_t bkg_stride,
00708                                     void *buf, void *bkg,
00709                                     hid_t dset_xfer_plist);
00710 H5_DLL herr_t H5T_conv_short_long(hid_t src_id, hid_t dst_id,
00711                                    H5T_cdata_t *cdata, size_t nelmts,
00712                                    size_t buf_stride, size_t bkg_stride,
00713                                    void *buf, void *bkg,
00714                                    hid_t dset_xfer_plist);
00715 H5_DLL herr_t H5T_conv_short_ulong(hid_t src_id, hid_t dst_id,
00716                                     H5T_cdata_t *cdata, size_t nelmts,
00717                                     size_t buf_stride, size_t bkg_stride,
00718                                     void *buf, void *bkg,
00719                                     hid_t dset_xfer_plist);
00720 H5_DLL herr_t H5T_conv_ushort_long(hid_t src_id, hid_t dst_id,
00721                                     H5T_cdata_t *cdata, size_t nelmts,
00722                                     size_t buf_stride, size_t bkg_stride,
00723                                     void *buf, void *bkg,
00724                                     hid_t dset_xfer_plist);
00725 H5_DLL herr_t H5T_conv_ushort_ulong(hid_t src_id, hid_t dst_id,
00726                                      H5T_cdata_t *cdata, size_t nelmts,
00727                                      size_t buf_stride, size_t bkg_stride,
00728                                      void *buf, void *bkg,
00729                                      hid_t dset_xfer_plist);
00730 H5_DLL herr_t H5T_conv_short_llong(hid_t src_id, hid_t dst_id,
00731                                     H5T_cdata_t *cdata, size_t nelmts,
00732                                     size_t buf_stride, size_t bkg_stride,
00733                                     void *buf, void *bkg,
00734                                     hid_t dset_xfer_plist);
00735 H5_DLL herr_t H5T_conv_short_ullong(hid_t src_id, hid_t dst_id,
00736                                      H5T_cdata_t *cdata, size_t nelmts,
00737                                      size_t buf_stride, size_t bkg_stride,
00738                                      void *buf, void *bkg,
00739                                      hid_t dset_xfer_plist);
00740 H5_DLL herr_t H5T_conv_ushort_llong(hid_t src_id, hid_t dst_id,
00741                                      H5T_cdata_t *cdata, size_t nelmts,
00742                                      size_t buf_stride, size_t bkg_stride,
00743                                      void *buf, void *bkg,
00744                                      hid_t dset_xfer_plist);
00745 H5_DLL herr_t H5T_conv_ushort_ullong(hid_t src_id, hid_t dst_id,
00746                                       H5T_cdata_t *cdata, size_t nelmts,
00747                                       size_t buf_stride, size_t bkg_stride,
00748                                       void *buf, void *bkg,
00749                                       hid_t dset_xfer_plist);
00750 
00751 H5_DLL herr_t H5T_conv_int_schar(hid_t src_id, hid_t dst_id,
00752                                   H5T_cdata_t *cdata, size_t nelmts,
00753                                   size_t buf_stride, size_t bkg_stride,
00754                                   void *buf, void *bkg,
00755                                   hid_t dset_xfer_plist);
00756 H5_DLL herr_t H5T_conv_int_uchar(hid_t src_id, hid_t dst_id,
00757                                   H5T_cdata_t *cdata, size_t nelmts,
00758                                   size_t buf_stride, size_t bkg_stride,
00759                                   void *buf, void *bkg,
00760                                   hid_t dset_xfer_plist);
00761 H5_DLL herr_t H5T_conv_uint_schar(hid_t src_id, hid_t dst_id,
00762                                    H5T_cdata_t *cdata, size_t nelmts,
00763                                    size_t buf_stride, size_t bkg_stride,
00764                                    void *buf, void *bkg,
00765                                    hid_t dset_xfer_plist);
00766 H5_DLL herr_t H5T_conv_uint_uchar(hid_t src_id, hid_t dst_id,
00767                                    H5T_cdata_t *cdata, size_t nelmts,
00768                                    size_t buf_stride, size_t bkg_stride,
00769                                    void *buf, void *bkg,
00770                                    hid_t dset_xfer_plist);
00771 H5_DLL herr_t H5T_conv_int_short(hid_t src_id, hid_t dst_id,
00772                                   H5T_cdata_t *cdata, size_t nelmts,
00773                                   size_t buf_stride, size_t bkg_stride,
00774                                   void *buf, void *bkg,
00775                                   hid_t dset_xfer_plist);
00776 H5_DLL herr_t H5T_conv_int_ushort(hid_t src_id, hid_t dst_id,
00777                                    H5T_cdata_t *cdata, size_t nelmts,
00778                                    size_t buf_stride, size_t bkg_stride,
00779                                    void *buf, void *bkg,
00780                                    hid_t dset_xfer_plist);
00781 H5_DLL herr_t H5T_conv_uint_short(hid_t src_id, hid_t dst_id,
00782                                    H5T_cdata_t *cdata, size_t nelmts,
00783                                    size_t buf_stride, size_t bkg_stride,
00784                                    void *buf, void *bkg,
00785                                    hid_t dset_xfer_plist);
00786 H5_DLL herr_t H5T_conv_uint_ushort(hid_t src_id, hid_t dst_id,
00787                                     H5T_cdata_t *cdata, size_t nelmts,
00788                                     size_t buf_stride, size_t bkg_stride,
00789                                     void *buf, void *bkg,
00790                                     hid_t dset_xfer_plist);
00791 H5_DLL herr_t H5T_conv_int_uint(hid_t src_id, hid_t dst_id,
00792                                  H5T_cdata_t *cdata, size_t nelmts,
00793                                  size_t buf_stride, size_t bkg_stride,
00794                                  void *buf, void *bkg,
00795                                  hid_t dset_xfer_plist);
00796 H5_DLL herr_t H5T_conv_uint_int(hid_t src_id, hid_t dst_id,
00797                                  H5T_cdata_t *cdata, size_t nelmts,
00798                                  size_t buf_stride, size_t bkg_stride,
00799                                  void *buf, void *bkg,
00800                                  hid_t dset_xfer_plist);
00801 H5_DLL herr_t H5T_conv_int_long(hid_t src_id, hid_t dst_id,
00802                                  H5T_cdata_t *cdata, size_t nelmts,
00803                                  size_t buf_stride, size_t bkg_stride,
00804                                  void *buf, void *bkg,
00805                                  hid_t dset_xfer_plist);
00806 H5_DLL herr_t H5T_conv_int_ulong(hid_t src_id, hid_t dst_id,
00807                                   H5T_cdata_t *cdata, size_t nelmts,
00808                                   size_t buf_stride, size_t bkg_stride,
00809                                   void *buf, void *bkg,
00810                                   hid_t dset_xfer_plist);
00811 H5_DLL herr_t H5T_conv_uint_long(hid_t src_id, hid_t dst_id,
00812                                   H5T_cdata_t *cdata, size_t nelmts,
00813                                   size_t buf_stride, size_t bkg_stride,
00814                                   void *buf, void *bkg,
00815                                   hid_t dset_xfer_plist);
00816 H5_DLL herr_t H5T_conv_uint_ulong(hid_t src_id, hid_t dst_id,
00817                                    H5T_cdata_t *cdata, size_t nelmts,
00818                                    size_t buf_stride, size_t bkg_stride,
00819                                    void *buf, void *bkg,
00820                                    hid_t dset_xfer_plist);
00821 H5_DLL herr_t H5T_conv_int_llong(hid_t src_id, hid_t dst_id,
00822                                   H5T_cdata_t *cdata, size_t nelmts,
00823                                   size_t buf_stride, size_t bkg_stride,
00824                                   void *buf, void *bkg,
00825                                   hid_t dset_xfer_plist);
00826 H5_DLL herr_t H5T_conv_int_ullong(hid_t src_id, hid_t dst_id,
00827                                    H5T_cdata_t *cdata, size_t nelmts,
00828                                    size_t buf_stride, size_t bkg_stride,
00829                                    void *buf, void *bkg,
00830                                    hid_t dset_xfer_plist);
00831 H5_DLL herr_t H5T_conv_uint_llong(hid_t src_id, hid_t dst_id,
00832                                    H5T_cdata_t *cdata, size_t nelmts,
00833                                    size_t buf_stride, size_t bkg_stride,
00834                                    void *buf, void *bkg,
00835                                    hid_t dset_xfer_plist);
00836 H5_DLL herr_t H5T_conv_uint_ullong(hid_t src_id, hid_t dst_id,
00837                                     H5T_cdata_t *cdata, size_t nelmts,
00838                                     size_t buf_stride, size_t bkg_stride,
00839                                     void *buf, void *bkg,
00840                                     hid_t dset_xfer_plist);
00841 
00842 H5_DLL herr_t H5T_conv_long_schar(hid_t src_id, hid_t dst_id,
00843                                    H5T_cdata_t *cdata, size_t nelmts,
00844                                    size_t buf_stride, size_t bkg_stride,
00845                                    void *buf, void *bkg,
00846                                    hid_t dset_xfer_plist);
00847 H5_DLL herr_t H5T_conv_long_uchar(hid_t src_id, hid_t dst_id,
00848                                    H5T_cdata_t *cdata, size_t nelmts,
00849                                    size_t buf_stride, size_t bkg_stride,
00850                                    void *buf, void *bkg,
00851                                    hid_t dset_xfer_plist);
00852 H5_DLL herr_t H5T_conv_ulong_schar(hid_t src_id, hid_t dst_id,
00853                                     H5T_cdata_t *cdata, size_t nelmts,
00854                                     size_t buf_stride, size_t bkg_stride,
00855                                     void *buf, void *bkg,
00856                                     hid_t dset_xfer_plist);
00857 H5_DLL herr_t H5T_conv_ulong_uchar(hid_t src_id, hid_t dst_id,
00858                                     H5T_cdata_t *cdata, size_t nelmts,
00859                                     size_t buf_stride, size_t bkg_stride,
00860                                     void *buf, void *bkg,
00861                                     hid_t dset_xfer_plist);
00862 H5_DLL herr_t H5T_conv_long_short(hid_t src_id, hid_t dst_id,
00863                                    H5T_cdata_t *cdata, size_t nelmts,
00864                                    size_t buf_stride, size_t bkg_stride,
00865                                    void *buf, void *bkg,
00866                                    hid_t dset_xfer_plist);
00867 H5_DLL herr_t H5T_conv_long_ushort(hid_t src_id, hid_t dst_id,
00868                                     H5T_cdata_t *cdata, size_t nelmts,
00869                                     size_t buf_stride, size_t bkg_stride,
00870                                     void *buf, void *bkg,
00871                                     hid_t dset_xfer_plist);
00872 H5_DLL herr_t H5T_conv_ulong_short(hid_t src_id, hid_t dst_id,
00873                                     H5T_cdata_t *cdata, size_t nelmts,
00874                                     size_t buf_stride, size_t bkg_stride,
00875                                     void *buf, void *bkg,
00876                                     hid_t dset_xfer_plist);
00877 H5_DLL herr_t H5T_conv_ulong_ushort(hid_t src_id, hid_t dst_id,
00878                                      H5T_cdata_t *cdata, size_t nelmts,
00879                                      size_t buf_stride, size_t bkg_stride,
00880                                      void *buf, void *bkg,
00881                                      hid_t dset_xfer_plist);
00882 H5_DLL herr_t H5T_conv_long_int(hid_t src_id, hid_t dst_id,
00883                                  H5T_cdata_t *cdata, size_t nelmts,
00884                                  size_t buf_stride, size_t bkg_stride,
00885                                  void *buf, void *bkg,
00886                                  hid_t dset_xfer_plist);
00887 H5_DLL herr_t H5T_conv_long_uint(hid_t src_id, hid_t dst_id,
00888                                   H5T_cdata_t *cdata, size_t nelmts,
00889                                   size_t buf_stride, size_t bkg_stride,
00890                                   void *buf, void *bkg,
00891                                   hid_t dset_xfer_plist);
00892 H5_DLL herr_t H5T_conv_ulong_int(hid_t src_id, hid_t dst_id,
00893                                   H5T_cdata_t *cdata, size_t nelmts,
00894                                   size_t buf_stride, size_t bkg_stride,
00895                                   void *buf, void *bkg,
00896                                   hid_t dset_xfer_plist);
00897 H5_DLL herr_t H5T_conv_ulong_uint(hid_t src_id, hid_t dst_id,
00898                                    H5T_cdata_t *cdata, size_t nelmts,
00899                                    size_t buf_stride, size_t bkg_stride,
00900                                    void *buf, void *bkg,
00901                                    hid_t dset_xfer_plist);
00902 H5_DLL herr_t H5T_conv_long_ulong(hid_t src_id, hid_t dst_id,
00903                                    H5T_cdata_t *cdata, size_t nelmts,
00904                                    size_t buf_stride, size_t bkg_stride,
00905                                    void *buf, void *bkg,
00906                                    hid_t dset_xfer_plist);
00907 H5_DLL herr_t H5T_conv_ulong_long(hid_t src_id, hid_t dst_id,
00908                                    H5T_cdata_t *cdata, size_t nelmts,
00909                                    size_t buf_stride, size_t bkg_stride,
00910                                    void *buf, void *bkg,
00911                                    hid_t dset_xfer_plist);
00912 H5_DLL herr_t H5T_conv_long_llong(hid_t src_id, hid_t dst_id,
00913                                    H5T_cdata_t *cdata, size_t nelmts,
00914                                    size_t buf_stride, size_t bkg_stride,
00915                                    void *buf, void *bkg,
00916                                    hid_t dset_xfer_plist);
00917 H5_DLL herr_t H5T_conv_long_ullong(hid_t src_id, hid_t dst_id,
00918                                     H5T_cdata_t *cdata, size_t nelmts,
00919                                     size_t buf_stride, size_t bkg_stride,
00920                                     void *buf, void *bkg,
00921                                     hid_t dset_xfer_plist);
00922 H5_DLL herr_t H5T_conv_ulong_llong(hid_t src_id, hid_t dst_id,
00923                                     H5T_cdata_t *cdata, size_t nelmts,
00924                                     size_t buf_stride, size_t bkg_stride,
00925                                     void *buf, void *bkg,
00926                                     hid_t dset_xfer_plist);
00927 H5_DLL herr_t H5T_conv_ulong_ullong(hid_t src_id, hid_t dst_id,
00928                                      H5T_cdata_t *cdata, size_t nelmts,
00929                                      size_t buf_stride, size_t bkg_stride,
00930                                      void *buf, void *bkg,
00931                                      hid_t dset_xfer_plist);
00932 
00933 H5_DLL herr_t H5T_conv_llong_schar(hid_t src_id, hid_t dst_id,
00934                                     H5T_cdata_t *cdata, size_t nelmts,
00935                                     size_t buf_stride, size_t bkg_stride,
00936                                     void *buf, void *bkg,
00937                                     hid_t dset_xfer_plist);
00938 H5_DLL herr_t H5T_conv_llong_uchar(hid_t src_id, hid_t dst_id,
00939                                     H5T_cdata_t *cdata, size_t nelmts,
00940                                     size_t buf_stride, size_t bkg_stride,
00941                                     void *buf, void *bkg,
00942                                     hid_t dset_xfer_plist);
00943 H5_DLL herr_t H5T_conv_ullong_schar(hid_t src_id, hid_t dst_id,
00944                                      H5T_cdata_t *cdata, size_t nelmts,
00945                                      size_t buf_stride, size_t bkg_stride,
00946                                      void *buf, void *bkg,
00947                                      hid_t dset_xfer_plist);
00948 H5_DLL herr_t H5T_conv_ullong_uchar(hid_t src_id, hid_t dst_id,
00949                                      H5T_cdata_t *cdata, size_t nelmts,
00950                                      size_t buf_stride, size_t bkg_stride,
00951                                      void *buf, void *bkg,
00952                                      hid_t dset_xfer_plist);
00953 H5_DLL herr_t H5T_conv_llong_short(hid_t src_id, hid_t dst_id,
00954                                     H5T_cdata_t *cdata, size_t nelmts,
00955                                     size_t buf_stride, size_t bkg_stride,
00956                                     void *buf, void *bkg,
00957                                     hid_t dset_xfer_plist);
00958 H5_DLL herr_t H5T_conv_llong_ushort(hid_t src_id, hid_t dst_id,
00959                                      H5T_cdata_t *cdata, size_t nelmts,
00960                                      size_t buf_stride, size_t bkg_stride,
00961                                      void *buf, void *bkg,
00962                                      hid_t dset_xfer_plist);
00963 H5_DLL herr_t H5T_conv_ullong_short(hid_t src_id, hid_t dst_id,
00964                                      H5T_cdata_t *cdata, size_t nelmts,
00965                                      size_t buf_stride, size_t bkg_stride,
00966                                      void *buf, void *bkg,
00967                                      hid_t dset_xfer_plist);
00968 H5_DLL herr_t H5T_conv_ullong_ushort(hid_t src_id, hid_t dst_id,
00969                                       H5T_cdata_t *cdata, size_t nelmts,
00970                                       size_t buf_stride, size_t bkg_stride,
00971                                       void *buf, void *bkg,
00972                                       hid_t dset_xfer_plist);
00973 H5_DLL herr_t H5T_conv_llong_int(hid_t src_id, hid_t dst_id,
00974                                   H5T_cdata_t *cdata, size_t nelmts,
00975                                   size_t buf_stride, size_t bkg_stride,
00976                                   void *buf, void *bkg,
00977                                   hid_t dset_xfer_plist);
00978 H5_DLL herr_t H5T_conv_llong_uint(hid_t src_id, hid_t dst_id,
00979                                    H5T_cdata_t *cdata, size_t nelmts,
00980                                    size_t buf_stride, size_t bkg_stride,
00981                                    void *buf, void *bkg,
00982                                    hid_t dset_xfer_plist);
00983 H5_DLL herr_t H5T_conv_ullong_int(hid_t src_id, hid_t dst_id,
00984                                    H5T_cdata_t *cdata, size_t nelmts,
00985                                    size_t buf_stride, size_t bkg_stride,
00986                                    void *buf, void *bkg,
00987                                    hid_t dset_xfer_plist);
00988 H5_DLL herr_t H5T_conv_ullong_uint(hid_t src_id, hid_t dst_id,
00989                                     H5T_cdata_t *cdata, size_t nelmts,
00990                                     size_t buf_stride, size_t bkg_stride,
00991                                     void *buf, void *bkg,
00992                                     hid_t dset_xfer_plist);
00993 H5_DLL herr_t H5T_conv_llong_long(hid_t src_id, hid_t dst_id,
00994                                    H5T_cdata_t *cdata, size_t nelmts,
00995                                    size_t buf_stride, size_t bkg_stride,
00996                                    void *buf, void *bkg,
00997                                    hid_t dset_xfer_plist);
00998 H5_DLL herr_t H5T_conv_llong_ulong(hid_t src_id, hid_t dst_id,
00999                                     H5T_cdata_t *cdata, size_t nelmts,
01000                                     size_t buf_stride, size_t bkg_stride,
01001                                     void *buf, void *bkg,
01002                                     hid_t dset_xfer_plist);
01003 H5_DLL herr_t H5T_conv_ullong_long(hid_t src_id, hid_t dst_id,
01004                                     H5T_cdata_t *cdata, size_t nelmts,
01005                                     size_t buf_stride, size_t bkg_stride,
01006                                     void *buf, void *bkg,
01007                                     hid_t dset_xfer_plist);
01008 H5_DLL herr_t H5T_conv_ullong_ulong(hid_t src_id, hid_t dst_id,
01009                                      H5T_cdata_t *cdata, size_t nelmts,
01010                                      size_t buf_stride, size_t bkg_stride,
01011                                      void *buf, void *bkg,
01012                                      hid_t dset_xfer_plist);
01013 H5_DLL herr_t H5T_conv_llong_ullong(hid_t src_id, hid_t dst_id,
01014                                      H5T_cdata_t *cdata, size_t nelmts,
01015                                      size_t buf_stride, size_t bkg_stride,
01016                                      void *buf, void *bkg,
01017                                      hid_t dset_xfer_plist);
01018 H5_DLL herr_t H5T_conv_ullong_llong(hid_t src_id, hid_t dst_id,
01019                                      H5T_cdata_t *cdata, size_t nelmts,
01020                                      size_t buf_stride, size_t bkg_stride,
01021                                      void *buf, void *bkg,
01022                                      hid_t dset_xfer_plist);
01023 H5_DLL herr_t H5T_conv_float_double(hid_t src_id, hid_t dst_id,
01024                                      H5T_cdata_t *cdata, size_t nelmts,
01025                                      size_t buf_stride, size_t bkg_stride,
01026                                      void *buf, void *bkg,
01027                                      hid_t dset_xfer_plist);
01028 H5_DLL herr_t H5T_conv_float_ldouble(hid_t src_id, hid_t dst_id,
01029                                      H5T_cdata_t *cdata, size_t nelmts,
01030                                      size_t buf_stride, size_t bkg_stride,
01031                                      void *buf, void *bkg,
01032                                      hid_t dset_xfer_plist);
01033 H5_DLL herr_t H5T_conv_double_float(hid_t src_id, hid_t dst_id,
01034                                      H5T_cdata_t *cdata, size_t nelmts,
01035                                      size_t buf_stride, size_t bkg_stride,
01036                                      void *buf, void *bkg,
01037                                      hid_t dset_xfer_plist);
01038 H5_DLL herr_t H5T_conv_double_ldouble(hid_t src_id, hid_t dst_id,
01039                                      H5T_cdata_t *cdata, size_t nelmts,
01040                                      size_t buf_stride, size_t bkg_stride,
01041                                      void *buf, void *bkg,
01042                                      hid_t dset_xfer_plist);
01043 H5_DLL herr_t H5T_conv_ldouble_float(hid_t src_id, hid_t dst_id,
01044                                      H5T_cdata_t *cdata, size_t nelmts,
01045                                      size_t buf_stride, size_t bkg_stride,
01046                                      void *buf, void *bkg,
01047                                      hid_t dset_xfer_plist);
01048 H5_DLL herr_t H5T_conv_ldouble_double(hid_t src_id, hid_t dst_id,
01049                                      H5T_cdata_t *cdata, size_t nelmts,
01050                                      size_t buf_stride, size_t bkg_stride,
01051                                      void *buf, void *bkg,
01052                                      hid_t dset_xfer_plist);
01053 H5_DLL herr_t H5T_conv_schar_float(hid_t src_id, hid_t dst_id,
01054                                      H5T_cdata_t *cdata, size_t nelmts,
01055                                      size_t buf_stride, size_t bkg_stride,
01056                                      void *buf, void *bkg,
01057                                      hid_t dset_xfer_plist);
01058 H5_DLL herr_t H5T_conv_schar_double(hid_t src_id, hid_t dst_id,
01059                                      H5T_cdata_t *cdata, size_t nelmts,
01060                                      size_t buf_stride, size_t bkg_stride,
01061                                      void *buf, void *bkg,
01062                                      hid_t dset_xfer_plist);
01063 H5_DLL herr_t H5T_conv_schar_ldouble(hid_t src_id, hid_t dst_id,
01064                                      H5T_cdata_t *cdata, size_t nelmts,
01065                                      size_t buf_stride, size_t bkg_stride,
01066                                      void *buf, void *bkg,
01067                                      hid_t dset_xfer_plist);
01068 H5_DLL herr_t H5T_conv_uchar_float(hid_t src_id, hid_t dst_id,
01069                                      H5T_cdata_t *cdata, size_t nelmts,
01070                                      size_t buf_stride, size_t bkg_stride,
01071                                      void *buf, void *bkg,
01072                                      hid_t dset_xfer_plist);
01073 H5_DLL herr_t H5T_conv_uchar_double(hid_t src_id, hid_t dst_id,
01074                                      H5T_cdata_t *cdata, size_t nelmts,
01075                                      size_t buf_stride, size_t bkg_stride,
01076                                      void *buf, void *bkg,
01077                                      hid_t dset_xfer_plist);
01078 H5_DLL herr_t H5T_conv_uchar_ldouble(hid_t src_id, hid_t dst_id,
01079                                      H5T_cdata_t *cdata, size_t nelmts,
01080                                      size_t buf_stride, size_t bkg_stride,
01081                                      void *buf, void *bkg,
01082                                      hid_t dset_xfer_plist);
01083 H5_DLL herr_t H5T_conv_short_float(hid_t src_id, hid_t dst_id,
01084                                      H5T_cdata_t *cdata, size_t nelmts,
01085                                      size_t buf_stride, size_t bkg_stride,
01086                                      void *buf, void *bkg,
01087                                      hid_t dset_xfer_plist);
01088 H5_DLL herr_t H5T_conv_short_double(hid_t src_id, hid_t dst_id,
01089                                      H5T_cdata_t *cdata, size_t nelmts,
01090                                      size_t buf_stride, size_t bkg_stride,
01091                                      void *buf, void *bkg,
01092                                      hid_t dset_xfer_plist);
01093 H5_DLL herr_t H5T_conv_short_ldouble(hid_t src_id, hid_t dst_id,
01094                                      H5T_cdata_t *cdata, size_t nelmts,
01095                                      size_t buf_stride, size_t bkg_stride,
01096                                      void *buf, void *bkg,
01097                                      hid_t dset_xfer_plist);
01098 H5_DLL herr_t H5T_conv_ushort_float(hid_t src_id, hid_t dst_id,
01099                                      H5T_cdata_t *cdata, size_t nelmts,
01100                                      size_t buf_stride, size_t bkg_stride,
01101                                      void *buf, void *bkg,
01102                                      hid_t dset_xfer_plist);
01103 H5_DLL herr_t H5T_conv_ushort_double(hid_t src_id, hid_t dst_id,
01104                                      H5T_cdata_t *cdata, size_t nelmts,
01105                                      size_t buf_stride, size_t bkg_stride,
01106                                      void *buf, void *bkg,
01107                                      hid_t dset_xfer_plist);
01108 H5_DLL herr_t H5T_conv_ushort_ldouble(hid_t src_id, hid_t dst_id,
01109                                      H5T_cdata_t *cdata, size_t nelmts,
01110                                      size_t buf_stride, size_t bkg_stride,
01111                                      void *buf, void *bkg,
01112                                      hid_t dset_xfer_plist);
01113 H5_DLL herr_t H5T_conv_int_float(hid_t src_id, hid_t dst_id,
01114                                      H5T_cdata_t *cdata, size_t nelmts,
01115                                      size_t buf_stride, size_t bkg_stride,
01116                                      void *buf, void *bkg,
01117                                      hid_t dset_xfer_plist);
01118 H5_DLL herr_t H5T_conv_int_double(hid_t src_id, hid_t dst_id,
01119                                      H5T_cdata_t *cdata, size_t nelmts,
01120                                      size_t buf_stride, size_t bkg_stride,
01121                                      void *buf, void *bkg,
01122                                      hid_t dset_xfer_plist);
01123 H5_DLL herr_t H5T_conv_int_ldouble(hid_t src_id, hid_t dst_id,
01124                                      H5T_cdata_t *cdata, size_t nelmts,
01125                                      size_t buf_stride, size_t bkg_stride,
01126                                      void *buf, void *bkg,
01127                                      hid_t dset_xfer_plist);
01128 H5_DLL herr_t H5T_conv_uint_float(hid_t src_id, hid_t dst_id,
01129                                      H5T_cdata_t *cdata, size_t nelmts,
01130                                      size_t buf_stride, size_t bkg_stride,
01131                                      void *buf, void *bkg,
01132                                      hid_t dset_xfer_plist);
01133 H5_DLL herr_t H5T_conv_uint_double(hid_t src_id, hid_t dst_id,
01134                                      H5T_cdata_t *cdata, size_t nelmts,
01135                                      size_t buf_stride, size_t bkg_stride,
01136                                      void *buf, void *bkg,
01137                                      hid_t dset_xfer_plist);
01138 H5_DLL herr_t H5T_conv_uint_ldouble(hid_t src_id, hid_t dst_id,
01139                                      H5T_cdata_t *cdata, size_t nelmts,
01140                                      size_t buf_stride, size_t bkg_stride,
01141                                      void *buf, void *bkg,
01142                                      hid_t dset_xfer_plist);
01143 H5_DLL herr_t H5T_conv_long_float(hid_t src_id, hid_t dst_id,
01144                                      H5T_cdata_t *cdata, size_t nelmts,
01145                                      size_t buf_stride, size_t bkg_stride,
01146                                      void *buf, void *bkg,
01147                                      hid_t dset_xfer_plist);
01148 H5_DLL herr_t H5T_conv_long_double(hid_t src_id, hid_t dst_id,
01149                                      H5T_cdata_t *cdata, size_t nelmts,
01150                                      size_t buf_stride, size_t bkg_stride,
01151                                      void *buf, void *bkg,
01152                                      hid_t dset_xfer_plist);
01153 H5_DLL herr_t H5T_conv_long_ldouble(hid_t src_id, hid_t dst_id,
01154                                      H5T_cdata_t *cdata, size_t nelmts,
01155                                      size_t buf_stride, size_t bkg_stride,
01156                                      void *buf, void *bkg,
01157                                      hid_t dset_xfer_plist);
01158 H5_DLL herr_t H5T_conv_ulong_float(hid_t src_id, hid_t dst_id,
01159                                      H5T_cdata_t *cdata, size_t nelmts,
01160                                      size_t buf_stride, size_t bkg_stride,
01161                                      void *buf, void *bkg,
01162                                      hid_t dset_xfer_plist);
01163 H5_DLL herr_t H5T_conv_ulong_double(hid_t src_id, hid_t dst_id,
01164                                      H5T_cdata_t *cdata, size_t nelmts,
01165                                      size_t buf_stride, size_t bkg_stride,
01166                                      void *buf, void *bkg,
01167                                      hid_t dset_xfer_plist);
01168 H5_DLL herr_t H5T_conv_ulong_ldouble(hid_t src_id, hid_t dst_id,
01169                                      H5T_cdata_t *cdata, size_t nelmts,
01170                                      size_t buf_stride, size_t bkg_stride,
01171                                      void *buf, void *bkg,
01172                                      hid_t dset_xfer_plist);
01173 H5_DLL herr_t H5T_conv_llong_float(hid_t src_id, hid_t dst_id,
01174                                      H5T_cdata_t *cdata, size_t nelmts,
01175                                      size_t buf_stride, size_t bkg_stride,
01176                                      void *buf, void *bkg,
01177                                      hid_t dset_xfer_plist);
01178 H5_DLL herr_t H5T_conv_llong_double(hid_t src_id, hid_t dst_id,
01179                                      H5T_cdata_t *cdata, size_t nelmts,
01180                                      size_t buf_stride, size_t bkg_stride,
01181                                      void *buf, void *bkg,
01182                                      hid_t dset_xfer_plist);
01183 H5_DLL herr_t H5T_conv_llong_ldouble(hid_t src_id, hid_t dst_id,
01184                                      H5T_cdata_t *cdata, size_t nelmts,
01185                                      size_t buf_stride, size_t bkg_stride,
01186                                      void *buf, void *bkg,
01187                                      hid_t dset_xfer_plist);
01188 H5_DLL herr_t H5T_conv_ullong_float(hid_t src_id, hid_t dst_id,
01189                                      H5T_cdata_t *cdata, size_t nelmts,
01190                                      size_t buf_stride, size_t bkg_stride,
01191                                      void *buf, void *bkg,
01192                                      hid_t dset_xfer_plist);
01193 H5_DLL herr_t H5T_conv_ullong_double(hid_t src_id, hid_t dst_id,
01194                                      H5T_cdata_t *cdata, size_t nelmts,
01195                                      size_t buf_stride, size_t bkg_stride,
01196                                      void *buf, void *bkg,
01197                                      hid_t dset_xfer_plist);
01198 H5_DLL herr_t H5T_conv_ullong_ldouble(hid_t src_id, hid_t dst_id,
01199                                      H5T_cdata_t *cdata, size_t nelmts,
01200                                      size_t buf_stride, size_t bkg_stride,
01201                                      void *buf, void *bkg,
01202                                      hid_t dset_xfer_plist);
01203 H5_DLL herr_t H5T_conv_float_schar(hid_t src_id, hid_t dst_id,
01204                                      H5T_cdata_t *cdata, size_t nelmts,
01205                                      size_t buf_stride, size_t bkg_stride,
01206                                      void *buf, void *bkg,
01207                                      hid_t dset_xfer_plist);
01208 H5_DLL herr_t H5T_conv_float_uchar(hid_t src_id, hid_t dst_id,
01209                                      H5T_cdata_t *cdata, size_t nelmts,
01210                                      size_t buf_stride, size_t bkg_stride,
01211                                      void *buf, void *bkg,
01212                                      hid_t dset_xfer_plist);
01213 H5_DLL herr_t H5T_conv_float_short(hid_t src_id, hid_t dst_id,
01214                                      H5T_cdata_t *cdata, size_t nelmts,
01215                                      size_t buf_stride, size_t bkg_stride,
01216                                      void *buf, void *bkg,
01217                                      hid_t dset_xfer_plist);
01218 H5_DLL herr_t H5T_conv_float_ushort(hid_t src_id, hid_t dst_id,
01219                                      H5T_cdata_t *cdata, size_t nelmts,
01220                                      size_t buf_stride, size_t bkg_stride,
01221                                      void *buf, void *bkg,
01222                                      hid_t dset_xfer_plist);
01223 H5_DLL herr_t H5T_conv_float_int(hid_t src_id, hid_t dst_id,
01224                                      H5T_cdata_t *cdata, size_t nelmts,
01225                                      size_t buf_stride, size_t bkg_stride,
01226                                      void *buf, void *bkg,
01227                                      hid_t dset_xfer_plist);
01228 H5_DLL herr_t H5T_conv_float_uint(hid_t src_id, hid_t dst_id,
01229                                      H5T_cdata_t *cdata, size_t nelmts,
01230                                      size_t buf_stride, size_t bkg_stride,
01231                                      void *buf, void *bkg,
01232                                      hid_t dset_xfer_plist);
01233 H5_DLL herr_t H5T_conv_float_long(hid_t src_id, hid_t dst_id,
01234                                      H5T_cdata_t *cdata, size_t nelmts,
01235                                      size_t buf_stride, size_t bkg_stride,
01236                                      void *buf, void *bkg,
01237                                      hid_t dset_xfer_plist);
01238 H5_DLL herr_t H5T_conv_float_ulong(hid_t src_id, hid_t dst_id,
01239                                      H5T_cdata_t *cdata, size_t nelmts,
01240                                      size_t buf_stride, size_t bkg_stride,
01241                                      void *buf, void *bkg,
01242                                      hid_t dset_xfer_plist);
01243 H5_DLL herr_t H5T_conv_float_llong(hid_t src_id, hid_t dst_id,
01244                                      H5T_cdata_t *cdata, size_t nelmts,
01245                                      size_t buf_stride, size_t bkg_stride,
01246                                      void *buf, void *bkg,
01247                                      hid_t dset_xfer_plist);
01248 H5_DLL herr_t H5T_conv_float_ullong(hid_t src_id, hid_t dst_id,
01249                                      H5T_cdata_t *cdata, size_t nelmts,
01250                                      size_t buf_stride, size_t bkg_stride,
01251                                      void *buf, void *bkg,
01252                                      hid_t dset_xfer_plist);
01253 H5_DLL herr_t H5T_conv_double_schar(hid_t src_id, hid_t dst_id,
01254                                      H5T_cdata_t *cdata, size_t nelmts,
01255                                      size_t buf_stride, size_t bkg_stride,
01256                                      void *buf, void *bkg,
01257                                      hid_t dset_xfer_plist);
01258 H5_DLL herr_t H5T_conv_double_uchar(hid_t src_id, hid_t dst_id,
01259                                      H5T_cdata_t *cdata, size_t nelmts,
01260                                      size_t buf_stride, size_t bkg_stride,
01261                                      void *buf, void *bkg,
01262                                      hid_t dset_xfer_plist);
01263 H5_DLL herr_t H5T_conv_double_short(hid_t src_id, hid_t dst_id,
01264                                      H5T_cdata_t *cdata, size_t nelmts,
01265                                      size_t buf_stride, size_t bkg_stride,
01266                                      void *buf, void *bkg,
01267                                      hid_t dset_xfer_plist);
01268 H5_DLL herr_t H5T_conv_double_ushort(hid_t src_id, hid_t dst_id,
01269                                      H5T_cdata_t *cdata, size_t nelmts,
01270                                      size_t buf_stride, size_t bkg_stride,
01271                                      void *buf, void *bkg,
01272                                      hid_t dset_xfer_plist);
01273 H5_DLL herr_t H5T_conv_double_int(hid_t src_id, hid_t dst_id,
01274                                      H5T_cdata_t *cdata, size_t nelmts,
01275                                      size_t buf_stride, size_t bkg_stride,
01276                                      void *buf, void *bkg,
01277                                      hid_t dset_xfer_plist);
01278 H5_DLL herr_t H5T_conv_double_uint(hid_t src_id, hid_t dst_id,
01279                                      H5T_cdata_t *cdata, size_t nelmts,
01280                                      size_t buf_stride, size_t bkg_stride,
01281                                      void *buf, void *bkg,
01282                                      hid_t dset_xfer_plist);
01283 H5_DLL herr_t H5T_conv_double_long(hid_t src_id, hid_t dst_id,
01284                                      H5T_cdata_t *cdata, size_t nelmts,
01285                                      size_t buf_stride, size_t bkg_stride,
01286                                      void *buf, void *bkg,
01287                                      hid_t dset_xfer_plist);
01288 H5_DLL herr_t H5T_conv_double_ulong(hid_t src_id, hid_t dst_id,
01289                                      H5T_cdata_t *cdata, size_t nelmts,
01290                                      size_t buf_stride, size_t bkg_stride,
01291                                      void *buf, void *bkg,
01292                                      hid_t dset_xfer_plist);
01293 H5_DLL herr_t H5T_conv_double_llong(hid_t src_id, hid_t dst_id,
01294                                      H5T_cdata_t *cdata, size_t nelmts,
01295                                      size_t buf_stride, size_t bkg_stride,
01296                                      void *buf, void *bkg,
01297                                      hid_t dset_xfer_plist);
01298 H5_DLL herr_t H5T_conv_double_ullong(hid_t src_id, hid_t dst_id,
01299                                      H5T_cdata_t *cdata, size_t nelmts,
01300                                      size_t buf_stride, size_t bkg_stride,
01301                                      void *buf, void *bkg,
01302                                      hid_t dset_xfer_plist);
01303 H5_DLL herr_t H5T_conv_ldouble_schar(hid_t src_id, hid_t dst_id,
01304                                      H5T_cdata_t *cdata, size_t nelmts,
01305                                      size_t buf_stride, size_t bkg_stride,
01306                                      void *buf, void *bkg,
01307                                      hid_t dset_xfer_plist);
01308 H5_DLL herr_t H5T_conv_ldouble_uchar(hid_t src_id, hid_t dst_id,
01309                                      H5T_cdata_t *cdata, size_t nelmts,
01310                                      size_t buf_stride, size_t bkg_stride,
01311                                      void *buf, void *bkg,
01312                                      hid_t dset_xfer_plist);
01313 H5_DLL herr_t H5T_conv_ldouble_short(hid_t src_id, hid_t dst_id,
01314                                      H5T_cdata_t *cdata, size_t nelmts,
01315                                      size_t buf_stride, size_t bkg_stride,
01316                                      void *buf, void *bkg,
01317                                      hid_t dset_xfer_plist);
01318 H5_DLL herr_t H5T_conv_ldouble_ushort(hid_t src_id, hid_t dst_id,
01319                                      H5T_cdata_t *cdata, size_t nelmts,
01320                                      size_t buf_stride, size_t bkg_stride,
01321                                      void *buf, void *bkg,
01322                                      hid_t dset_xfer_plist);
01323 H5_DLL herr_t H5T_conv_ldouble_int(hid_t src_id, hid_t dst_id,
01324                                      H5T_cdata_t *cdata, size_t nelmts,
01325                                      size_t buf_stride, size_t bkg_stride,
01326                                      void *buf, void *bkg,
01327                                      hid_t dset_xfer_plist);
01328 H5_DLL herr_t H5T_conv_ldouble_uint(hid_t src_id, hid_t dst_id,
01329                                      H5T_cdata_t *cdata, size_t nelmts,
01330                                      size_t buf_stride, size_t bkg_stride,
01331                                      void *buf, void *bkg,
01332                                      hid_t dset_xfer_plist);
01333 H5_DLL herr_t H5T_conv_ldouble_long(hid_t src_id, hid_t dst_id,
01334                                      H5T_cdata_t *cdata, size_t nelmts,
01335                                      size_t buf_stride, size_t bkg_stride,
01336                                      void *buf, void *bkg,
01337                                      hid_t dset_xfer_plist);
01338 H5_DLL herr_t H5T_conv_ldouble_ulong(hid_t src_id, hid_t dst_id,
01339                                      H5T_cdata_t *cdata, size_t nelmts,
01340                                      size_t buf_stride, size_t bkg_stride,
01341                                      void *buf, void *bkg,
01342                                      hid_t dset_xfer_plist);
01343 H5_DLL herr_t H5T_conv_ldouble_llong(hid_t src_id, hid_t dst_id,
01344                                      H5T_cdata_t *cdata, size_t nelmts,
01345                                      size_t buf_stride, size_t bkg_stride,
01346                                      void *buf, void *bkg,
01347                                      hid_t dset_xfer_plist);
01348 H5_DLL herr_t H5T_conv_ldouble_ullong(hid_t src_id, hid_t dst_id,
01349                                      H5T_cdata_t *cdata, size_t nelmts,
01350                                      size_t buf_stride, size_t bkg_stride,
01351                                      void *buf, void *bkg,
01352                                      hid_t dset_xfer_plist);
01353 
01354 /* Bit twiddling functions */
01355 H5_DLL void H5T_bit_copy(uint8_t *dst, size_t dst_offset, const uint8_t *src,
01356                           size_t src_offset, size_t size);
01357 H5_DLL void H5T_bit_shift(uint8_t *buf, ssize_t shift_dist, size_t offset, size_t size);
01358 H5_DLL void H5T_bit_set(uint8_t *buf, size_t offset, size_t size,
01359                          hbool_t value);
01360 H5_DLL uint64_t H5T_bit_get_d(uint8_t *buf, size_t offset, size_t size);
01361 H5_DLL void H5T_bit_set_d(uint8_t *buf, size_t offset, size_t size,
01362                            uint64_t val);
01363 H5_DLL ssize_t H5T_bit_find(uint8_t *buf, size_t offset, size_t size,
01364                              H5T_sdir_t direction, hbool_t value);
01365 H5_DLL htri_t H5T_bit_inc(uint8_t *buf, size_t start, size_t size);
01366 H5_DLL htri_t H5T_bit_dec(uint8_t *buf, size_t start, size_t size);
01367 H5_DLL void H5T_bit_neg(uint8_t *buf, size_t start, size_t size);
01368 
01369 /* VL functions */
01370 H5_DLL H5T_t * H5T_vlen_create(const H5T_t *base);
01371 H5_DLL htri_t H5T_vlen_set_loc(const H5T_t *dt, H5F_t *f, H5T_loc_t loc);
01372 
01373 /* Array functions */
01374 H5_DLL H5T_t *H5T_array_create(H5T_t *base, unsigned ndims, const hsize_t dim[/* ndims */]);
01375 H5_DLL int    H5T_get_array_ndims(const H5T_t *dt);
01376 H5_DLL int    H5T_get_array_dims(const H5T_t *dt, hsize_t dims[]);
01377 
01378 /* Compound functions */
01379 H5_DLL herr_t H5T_insert(H5T_t *parent, const char *name, size_t offset,
01380         const H5T_t *member);
01381 H5_DLL size_t H5T_get_member_size(const H5T_t *dt, unsigned membno);
01382 H5_DLL htri_t H5T_is_packed(const H5T_t *dt);
01383 H5_DLL H5T_subset_info_t *H5T_conv_struct_subset(const H5T_cdata_t *cdata);
01384 
01385 /* Enumerated type functions */
01386 H5_DLL H5T_t *H5T_enum_create(const H5T_t *parent);
01387 H5_DLL herr_t H5T_enum_insert(const H5T_t *dt, const char *name, const void *value);
01388 H5_DLL herr_t H5T_get_member_value(const H5T_t *dt, unsigned membno, void *value);
01389 
01390 /* Field functions (for both compound & enumerated types) */
01391 H5_DLL char  *H5T_get_member_name(H5T_t const *dt, unsigned membno);
01392 H5_DLL herr_t H5T_sort_value(const H5T_t *dt, int *map);
01393 H5_DLL herr_t H5T_sort_name(const H5T_t *dt, int *map);
01394 
01395 /* Debugging functions */
01396 H5_DLL herr_t H5T_print_stats(H5T_path_t *path, int *nprint/*in,out*/);
01397 
01398 #endif /* _H5Tpkg_H */
01399