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