1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2  * Copyright by The HDF Group.                                               *
3  * Copyright by the Board of Trustees of the University of Illinois.         *
4  * All rights reserved.                                                      *
5  *                                                                           *
6  * This file is part of HDF5.  The full HDF5 copyright notice, including     *
7  * terms governing use, modification, and redistribution, is contained in    *
8  * the COPYING file, which can be found at the root of the source code       *
9  * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases.  *
10  * If you do not have access to either file, you may request a copy from     *
11  * help@hdfgroup.org.                                                        *
12  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
13 
14 /*
15  * Programmer:	Robb Matzke <matzke@llnl.gov>
16  *		Monday, December  8, 1997
17  *
18  * Purpose:	This file contains declarations which are visible only within
19  *		the H5T package.  Source files outside the H5T package should
20  *		include H5Tprivate.h instead.
21  */
22 #if !(defined H5T_FRIEND || defined H5T_MODULE)
23 #error "Do not include this file outside the H5T package!"
24 #endif
25 
26 #ifndef _H5Tpkg_H
27 #define _H5Tpkg_H
28 
29 /*
30  * Define this to enable debugging.
31  */
32 #ifdef NDEBUG
33 #  undef H5T_DEBUG
34 #endif
35 
36 /* Get package's private header */
37 #include "H5Tprivate.h"
38 
39 /* Other private headers needed by this file */
40 #include "H5Fprivate.h"		/* Files				*/
41 #include "H5FLprivate.h"	/* Free Lists				*/
42 #include "H5Oprivate.h"		/* Object headers		  	*/
43 
44 /* Other public headers needed by this file */
45 #include "H5Spublic.h"		/* Dataspace functions			*/
46 
47 /* Length of debugging name buffer */
48 #define H5T_NAMELEN		32
49 
50 /* Macro to ease detecting "complex" datatypes (i.e. those with base types or fields) */
51 #define H5T_IS_COMPLEX(t)       ((t) == H5T_COMPOUND || (t) == H5T_ENUM || (t) == H5T_VLEN || (t) == H5T_ARRAY)
52 
53 /* Macro to ease detecting fixed "string" datatypes */
54 #define H5T_IS_FIXED_STRING(dt) (H5T_STRING == (dt)->type)
55 
56 /* Macro to ease detecting variable-length "string" datatypes */
57 #define H5T_IS_VL_STRING(dt)    (H5T_VLEN == (dt)->type && H5T_VLEN_STRING == (dt)->u.vlen.type)
58 
59 /* Macro to ease detecting fixed or variable-length "string" datatypes */
60 #define H5T_IS_STRING(dt)       (H5T_IS_FIXED_STRING(dt) || H5T_IS_VL_STRING(dt))
61 
62 /* Macro to ease detecting atomic datatypes */
63 #define H5T_IS_ATOMIC(dt)       (!(H5T_IS_COMPLEX((dt)->type) || (dt)->type == H5T_OPAQUE))
64 
65 /* Macro to ease retrieving class of shared datatype */
66 /* (Externally, a VL string is a string; internally, a VL string is a VL.  Lie
67  *      to the user if they have a VL string and tell them it's in the string
68  *      class)
69  */
70 #define H5T_GET_CLASS(shared, internal) ((internal) ? (shared)->type : (H5T_IS_VL_STRING(shared) ?  H5T_STRING : (shared)->type))
71 
72 
73 /*
74  * Datatype encoding versions
75  */
76 
77 /* This is the version to create all datatypes which don't contain
78  * array datatypes (atomic types, compound datatypes without array fields,
79  * vlen sequences of objects which aren't arrays, etc.) or VAX byte-ordered
80  * objects.
81  */
82 #define H5O_DTYPE_VERSION_1	1
83 
84 /* This is the version to create all datatypes which contain H5T_ARRAY
85  * class objects (array definitely, potentially compound & vlen sequences also),
86  * but not VAX byte-ordered objects.
87  */
88 #define H5O_DTYPE_VERSION_2	2
89 
90 /* This is the version to create all datatypes which contain VAX byte-ordered
91  * objects (floating-point types, currently).
92  */
93 /* This version also packs compound & enum field names without padding */
94 /* This version also encodes the member offset of compound fields more efficiently */
95 /* This version also encodes array types more efficiently */
96 #define H5O_DTYPE_VERSION_3	3
97 
98 /* The latest version of the format.  Look through the 'encode helper' routine
99  *      and 'size' callback for places to change when updating this. */
100 #define H5O_DTYPE_VERSION_LATEST H5O_DTYPE_VERSION_3
101 
102 
103 /* Flags for visiting datatype */
104 #define H5T_VISIT_COMPLEX_FIRST 0x01            /* Visit complex datatype before visiting member/parent datatypes */
105 #define H5T_VISIT_COMPLEX_LAST  0x02            /* Visit complex datatype after visiting member/parent datatypes */
106                                                 /* (setting both flags will mean visiting complex type twice) */
107 #define H5T_VISIT_SIMPLE        0x04            /* Visit simple datatypes (at all) */
108                                                 /* (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" */
109                                                 /* (_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" */
110 
111 
112 /* Define an internal macro for converting long long to long double.  Mac OS 10.4 gives some
113  * incorrect conversions. */
114 #if (H5_WANT_DATA_ACCURACY && defined(H5_LLONG_TO_LDOUBLE_CORRECT)) || (!H5_WANT_DATA_ACCURACY)
115 #define H5T_CONV_INTERNAL_LLONG_LDOUBLE       1
116 #endif
117 
118 /* Define an internal macro for converting unsigned long long to long double.  SGI compilers give
119  * some incorect conversion.  64-bit Solaris does different rounding.   Windows Visual Studio 6 does
120  * not support unsigned long long.  For FreeBSD(sleipnir), the last 2 bytes of mantissa are lost when
121  * compiler tries to do the conversion.  For Cygwin, compiler doesn't do rounding correctly.
122  * Mac OS 10.4 gives some incorrect result. */
123 #if (H5_WANT_DATA_ACCURACY && defined(H5_LLONG_TO_LDOUBLE_CORRECT)) || (!H5_WANT_DATA_ACCURACY)
124 #define H5T_CONV_INTERNAL_ULLONG_LDOUBLE         1
125 #endif
126 
127 /* Define an internal macro for converting long double to long long.  SGI compilers give some incorrect
128  * conversions. Mac OS 10.4 gives incorrect conversions. HP-UX 11.00 compiler generates floating exception.
129  * The hard conversion on Windows .NET 2003 has a bug and gives wrong exception value. */
130 #if (H5_WANT_DATA_ACCURACY && defined(H5_LDOUBLE_TO_LLONG_ACCURATE)) || \
131     (!H5_WANT_DATA_ACCURACY)
132 #define H5T_CONV_INTERNAL_LDOUBLE_LLONG         1
133 #endif
134 
135 /* Define an internal macro for converting long double to unsigned long long.  SGI compilers give some
136  * incorrect conversions.  Mac OS 10.4 gives incorrect conversions. HP-UX 11.00 compiler generates
137  * floating exception. */
138 #if (H5_WANT_DATA_ACCURACY && defined(H5_LDOUBLE_TO_LLONG_ACCURATE)) || \
139     (!H5_WANT_DATA_ACCURACY)
140 #define H5T_CONV_INTERNAL_LDOUBLE_ULLONG         1
141 #else
142 #define H5T_CONV_INTERNAL_LDOUBLE_ULLONG         0
143 #endif
144 
145 /* Statistics about a conversion function */
146 struct H5T_stats_t {
147     unsigned	ncalls;			/*num calls to conversion function   */
148     hsize_t	nelmts;			/*total data points converted	     */
149     H5_timer_t	timer;			/*total time for conversion	     */
150 };
151 
152 /* The datatype conversion database */
153 struct H5T_path_t {
154     char	name[H5T_NAMELEN];	/*name for debugging only	     */
155     H5T_t	*src;			/*source datatype 		     */
156     H5T_t	*dst;			/*destination datatype		     */
157     H5T_conv_t	func;			/*data conversion function	     */
158     hbool_t	is_hard;		/*is it a hard function?	     */
159     hbool_t	is_noop;		/*is it the noop conversion?	     */
160     hbool_t	are_compounds;		/*are source and dest both compounds?*/
161     H5T_stats_t	stats;			/*statistics for the conversion	     */
162     H5T_cdata_t	cdata;			/*data for this function	     */
163 };
164 
165 typedef struct H5T_atomic_t {
166     H5T_order_t		order;	/*byte order				     */
167     size_t		prec;	/*precision in bits			     */
168     size_t		offset; /*bit position of lsb of value		     */
169     H5T_pad_t	        lsb_pad;/*type of lsb padding			     */
170     H5T_pad_t		msb_pad;/*type of msb padding			     */
171     union {
172 	struct {
173 	    H5T_sign_t	sign;	/*type of integer sign			     */
174 	} i;			/*integer; integer types		     */
175 
176 	struct {
177 	    size_t	sign;	/*bit position of sign bit		     */
178 	    size_t	epos;	/*position of lsb of exponent		     */
179 	    size_t	esize;	/*size of exponent in bits		     */
180 	    uint64_t	ebias;	/*exponent bias				     */
181 	    size_t	mpos;	/*position of lsb of mantissa		     */
182 	    size_t	msize;	/*size of mantissa			     */
183 	    H5T_norm_t	norm;	/*normalization				     */
184 	    H5T_pad_t	pad;	/*type of padding for internal bits	     */
185 	} f;			/*floating-point types			     */
186 
187 	struct {
188 	    H5T_cset_t	cset;	/*character set				     */
189 	    H5T_str_t	pad;	/*space or null padding of extra bytes	     */
190 	} s;			/*string types				     */
191 
192 	struct {
193 	    H5R_type_t	rtype;	/*type of reference stored		     */
194             H5T_loc_t   loc;    /* Location of data in buffer		     */
195 	} r;			/*reference types			     */
196     } u;
197 } H5T_atomic_t;
198 
199 /* How members are sorted for compound or enum datatypes */
200 typedef enum H5T_sort_t {
201     H5T_SORT_NONE	= 0,		/*not sorted			     */
202     H5T_SORT_NAME	= 1,		/*sorted by member name		     */
203     H5T_SORT_VALUE	= 2 		/*sorted by memb offset or enum value*/
204 } H5T_sort_t;
205 
206 /* A compound datatype member */
207 typedef struct H5T_cmemb_t {
208     char		*name;		/*name of this member		     */
209     size_t		offset;		/*offset from beginning of struct    */
210     size_t		size;		/*size of this member		     */
211     struct H5T_t	*type;		/*type of this member		     */
212 } H5T_cmemb_t;
213 
214 /* A compound datatype */
215 typedef struct H5T_compnd_t {
216     unsigned	nalloc;		/*num entries allocated in MEMB array*/
217     unsigned	nmembs;		/*number of members defined in struct*/
218     H5T_sort_t	sorted;		/*how are members sorted?	     */
219     hbool_t     packed;		/*are members packed together?       */
220     H5T_cmemb_t	*memb;		/*array of struct members	     */
221     size_t      memb_size;	/*total of all member sizes          */
222 } H5T_compnd_t;
223 
224 /* An enumeration datatype */
225 typedef struct H5T_enum_t {
226     unsigned	nalloc;		/*num entries allocated		     */
227     unsigned	nmembs;		/*number of members defined in enum  */
228     H5T_sort_t	sorted;		/*how are members sorted?	     */
229     uint8_t	*value;		/*array of values		     */
230     char	**name;		/*array of symbol names		     */
231 } H5T_enum_t;
232 
233 /* VL function pointers */
234 typedef ssize_t (*H5T_vlen_getlenfunc_t)(const void *vl_addr);
235 typedef void * (*H5T_vlen_getptrfunc_t)(void *vl_addr);
236 typedef htri_t (*H5T_vlen_isnullfunc_t)(const H5F_t *f, void *vl_addr);
237 typedef herr_t (*H5T_vlen_readfunc_t)(H5F_t *f, hid_t dxpl_id, void *_vl, void *buf, size_t len);
238 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);
239 typedef herr_t (*H5T_vlen_setnullfunc_t)(H5F_t *f, hid_t dxpl_id, void *_vl, void *_bg);
240 
241 /* VL types */
242 typedef enum {
243     H5T_VLEN_BADTYPE =  -1, /* invalid VL Type */
244     H5T_VLEN_SEQUENCE = 0,  /* VL sequence */
245     H5T_VLEN_STRING,        /* VL string */
246     H5T_VLEN_MAXTYPE        /* highest type (Invalid as true type) */
247 } H5T_vlen_type_t;
248 
249 /* A VL datatype */
250 typedef struct H5T_vlen_t {
251     H5T_vlen_type_t     type;   /* Type of VL data in buffer */
252     H5T_loc_t		loc;    /* Location of VL data in buffer */
253     H5T_cset_t          cset;   /* For VL string. character set */
254     H5T_str_t           pad;    /* For VL string.  space or null padding of
255                                  * extra bytes */
256     H5F_t *f;                   /* File ID (if VL data is on disk) */
257     H5T_vlen_getptrfunc_t getptr;   /* Function to get VL sequence pointer */
258     H5T_vlen_getlenfunc_t getlen;   /* Function to get VL sequence size (in element units, not bytes) */
259     H5T_vlen_isnullfunc_t isnull;   /* Function to check if VL value is NIL */
260     H5T_vlen_readfunc_t read;   /* Function to read VL sequence into buffer */
261     H5T_vlen_writefunc_t write; /* Function to write VL sequence from buffer */
262     H5T_vlen_setnullfunc_t setnull; /* Function to set a VL value to NIL */
263 } H5T_vlen_t;
264 
265 /* An opaque datatype */
266 typedef struct H5T_opaque_t {
267     char		*tag;		/*short type description string	     */
268 } H5T_opaque_t;
269 
270 /* An array datatype */
271 typedef struct H5T_array_t {
272     size_t	nelem;		/* total number of elements in array */
273     unsigned	ndims;		/* member dimensionality        */
274     size_t	dim[H5S_MAX_RANK];  /* size in each dimension       */
275 } H5T_array_t;
276 
277 typedef enum H5T_state_t {
278     H5T_STATE_TRANSIENT, 		/*type is a modifiable, closable transient */
279     H5T_STATE_RDONLY,			/*transient, not modifiable, closable */
280     H5T_STATE_IMMUTABLE,		/*transient, not modifiable, not closable */
281     H5T_STATE_NAMED,			/*named constant, not open	     */
282     H5T_STATE_OPEN			/*named constant, open object header */
283 } H5T_state_t;
284 
285     /* This struct is shared between all occurances of an open named type */
286 typedef struct H5T_shared_t {
287     hsize_t		fo_count; /* number of references to this file object */
288     H5T_state_t		state;	/*current state of the type		     */
289     H5T_class_t		type;	/*which class of type is this?		     */
290     size_t		size;	/*total size of an instance of this type     */
291     unsigned            version;        /* Version of object header message to encode this object with */
292     hbool_t		force_conv;/* Set if this type always needs to be converted and H5T__conv_noop cannot be called */
293     struct H5T_t	*parent;/*parent type for derived datatypes	     */
294     union {
295         H5T_atomic_t	atomic; /* an atomic datatype              */
296         H5T_compnd_t	compnd; /* a compound datatype (struct)    */
297         H5T_enum_t	enumer; /* an enumeration type (enum)       */
298         H5T_vlen_t	vlen;   /* a variable-length datatype       */
299         H5T_opaque_t	opaque; /* an opaque datatype              */
300         H5T_array_t	array;  /* an array datatype                */
301     } u;
302 } H5T_shared_t;
303 
304 struct H5T_t {
305     H5O_shared_t    sh_loc;     /* Shared message info (must be first) */
306 
307     H5T_shared_t   *shared;     /* all other information */
308     H5O_loc_t       oloc;       /* Object location, if the type is a named type */
309     H5G_name_t      path;       /* group hier. path if the type is a named type */
310 };
311 
312 /* The master list of soft conversion functions */
313 typedef struct H5T_soft_t {
314     char	name[H5T_NAMELEN];	/*name for debugging only	     */
315     H5T_class_t src;			/*source datatype class	     */
316     H5T_class_t dst;			/*destination datatype class	     */
317     H5T_conv_t	func;			/*the conversion function	     */
318 } H5T_soft_t;
319 
320 /* Bit search direction */
321 typedef enum H5T_sdir_t {
322     H5T_BIT_LSB,			/*search lsb toward msb		     */
323     H5T_BIT_MSB				/*search msb toward lsb		     */
324 } H5T_sdir_t;
325 
326 /* Typedef for named datatype creation operation */
327 typedef struct {
328     H5T_t *dt;                  /* Datatype to commit */
329     hid_t tcpl_id;              /* Named datatype creation property list */
330 } H5T_obj_create_t;
331 
332 /* Typedef for datatype iteration operations */
333 typedef herr_t (*H5T_operator_t)(H5T_t *dt, void *op_data/*in,out*/);
334 
335 /*
336  * Alignment information for native types. A value of N indicates that the
337  * data must be aligned on an address ADDR such that 0 == ADDR mod N. When
338  * N=1 no alignment is required; N=0 implies that alignment constraints were
339  * not calculated.  These alignment info is only for H5Tget_native_type.
340  * These values are used for structure alignment.
341  */
342 H5_DLLVAR size_t	H5T_NATIVE_SCHAR_COMP_ALIGN_g;
343 H5_DLLVAR size_t	H5T_NATIVE_SHORT_COMP_ALIGN_g;
344 H5_DLLVAR size_t	H5T_NATIVE_INT_COMP_ALIGN_g;
345 H5_DLLVAR size_t	H5T_NATIVE_LONG_COMP_ALIGN_g;
346 H5_DLLVAR size_t	H5T_NATIVE_LLONG_COMP_ALIGN_g;
347 H5_DLLVAR size_t	H5T_NATIVE_FLOAT_COMP_ALIGN_g;
348 H5_DLLVAR size_t	H5T_NATIVE_DOUBLE_COMP_ALIGN_g;
349 #if H5_SIZEOF_LONG_DOUBLE !=0
350 H5_DLLVAR size_t	H5T_NATIVE_LDOUBLE_COMP_ALIGN_g;
351 #endif
352 
353 H5_DLLVAR size_t H5T_POINTER_COMP_ALIGN_g;
354 H5_DLLVAR size_t H5T_HVL_COMP_ALIGN_g;
355 H5_DLLVAR size_t H5T_HOBJREF_COMP_ALIGN_g;
356 H5_DLLVAR size_t H5T_HDSETREGREF_COMP_ALIGN_g;
357 
358 /*
359  * Alignment information for native types. A value of N indicates that the
360  * data must be aligned on an address ADDR such that 0 == ADDR mod N. When
361  * N=1 no alignment is required; N=0 implies that alignment constraints were
362  * not calculated.
363  */
364 H5_DLLVAR size_t	H5T_NATIVE_SCHAR_ALIGN_g;
365 H5_DLLVAR size_t	H5T_NATIVE_UCHAR_ALIGN_g;
366 H5_DLLVAR size_t	H5T_NATIVE_SHORT_ALIGN_g;
367 H5_DLLVAR size_t	H5T_NATIVE_USHORT_ALIGN_g;
368 H5_DLLVAR size_t	H5T_NATIVE_INT_ALIGN_g;
369 H5_DLLVAR size_t	H5T_NATIVE_UINT_ALIGN_g;
370 H5_DLLVAR size_t	H5T_NATIVE_LONG_ALIGN_g;
371 H5_DLLVAR size_t	H5T_NATIVE_ULONG_ALIGN_g;
372 H5_DLLVAR size_t	H5T_NATIVE_LLONG_ALIGN_g;
373 H5_DLLVAR size_t	H5T_NATIVE_ULLONG_ALIGN_g;
374 H5_DLLVAR size_t	H5T_NATIVE_FLOAT_ALIGN_g;
375 H5_DLLVAR size_t	H5T_NATIVE_DOUBLE_ALIGN_g;
376 #if H5_SIZEOF_LONG_DOUBLE !=0
377 H5_DLLVAR size_t	H5T_NATIVE_LDOUBLE_ALIGN_g;
378 #endif
379 
380 /* C9x alignment constraints */
381 H5_DLLVAR size_t	H5T_NATIVE_INT8_ALIGN_g;
382 H5_DLLVAR size_t	H5T_NATIVE_UINT8_ALIGN_g;
383 H5_DLLVAR size_t	H5T_NATIVE_INT_LEAST8_ALIGN_g;
384 H5_DLLVAR size_t	H5T_NATIVE_UINT_LEAST8_ALIGN_g;
385 H5_DLLVAR size_t	H5T_NATIVE_INT_FAST8_ALIGN_g;
386 H5_DLLVAR size_t	H5T_NATIVE_UINT_FAST8_ALIGN_g;
387 
388 H5_DLLVAR size_t	H5T_NATIVE_INT16_ALIGN_g;
389 H5_DLLVAR size_t	H5T_NATIVE_UINT16_ALIGN_g;
390 H5_DLLVAR size_t	H5T_NATIVE_INT_LEAST16_ALIGN_g;
391 H5_DLLVAR size_t	H5T_NATIVE_UINT_LEAST16_ALIGN_g;
392 H5_DLLVAR size_t	H5T_NATIVE_INT_FAST16_ALIGN_g;
393 H5_DLLVAR size_t	H5T_NATIVE_UINT_FAST16_ALIGN_g;
394 
395 H5_DLLVAR size_t	H5T_NATIVE_INT32_ALIGN_g;
396 H5_DLLVAR size_t	H5T_NATIVE_UINT32_ALIGN_g;
397 H5_DLLVAR size_t	H5T_NATIVE_INT_LEAST32_ALIGN_g;
398 H5_DLLVAR size_t	H5T_NATIVE_UINT_LEAST32_ALIGN_g;
399 H5_DLLVAR size_t	H5T_NATIVE_INT_FAST32_ALIGN_g;
400 H5_DLLVAR size_t	H5T_NATIVE_UINT_FAST32_ALIGN_g;
401 
402 H5_DLLVAR size_t	H5T_NATIVE_INT64_ALIGN_g;
403 H5_DLLVAR size_t	H5T_NATIVE_UINT64_ALIGN_g;
404 H5_DLLVAR size_t	H5T_NATIVE_INT_LEAST64_ALIGN_g;
405 H5_DLLVAR size_t	H5T_NATIVE_UINT_LEAST64_ALIGN_g;
406 H5_DLLVAR size_t	H5T_NATIVE_INT_FAST64_ALIGN_g;
407 H5_DLLVAR size_t	H5T_NATIVE_UINT_FAST64_ALIGN_g;
408 
409 /* Useful floating-point values for conversion routines */
410 /* (+/- Inf for all floating-point types) */
411 H5_DLLVAR float H5T_NATIVE_FLOAT_POS_INF_g;
412 H5_DLLVAR float H5T_NATIVE_FLOAT_NEG_INF_g;
413 H5_DLLVAR double H5T_NATIVE_DOUBLE_POS_INF_g;
414 H5_DLLVAR double H5T_NATIVE_DOUBLE_NEG_INF_g;
415 #if H5_SIZEOF_LONG_DOUBLE !=0
416 H5_DLLVAR double H5T_NATIVE_LDOUBLE_POS_INF_g;
417 H5_DLLVAR double H5T_NATIVE_LDOUBLE_NEG_INF_g;
418 #endif
419 
420 /* Declare extern the free lists for H5T_t's and H5T_shared_t's */
421 H5FL_EXTERN(H5T_t);
422 H5FL_EXTERN(H5T_shared_t);
423 
424 /* Common functions */
425 H5_DLL herr_t H5T__init_native(void);
426 H5_DLL H5T_t *H5T__create(H5T_class_t type, size_t size);
427 H5_DLL herr_t H5T__commit(H5F_t *file, H5T_t *type, hid_t tcpl_id, hid_t dxpl_id);
428 H5_DLL herr_t H5T__commit_named(const H5G_loc_t *loc, const char *name,
429     H5T_t *dt, hid_t lcpl_id, hid_t tcpl_id, hid_t tapl_id, hid_t dxpl_id);
430 H5_DLL H5T_t *H5T__alloc(void);
431 H5_DLL herr_t H5T__free(H5T_t *dt);
432 H5_DLL herr_t H5T__visit(H5T_t *dt, unsigned visit_flags, H5T_operator_t op,
433     void *op_value);
434 H5_DLL herr_t H5T__upgrade_version(H5T_t *dt, unsigned new_version);
435 
436 /* Conversion functions */
437 H5_DLL herr_t H5T__conv_noop(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
438 			    size_t nelmts, size_t buf_stride,
439                             size_t bkg_stride, void *buf, void *bkg,
440                             hid_t dset_xfer_plist);
441 
442 H5_DLL herr_t H5T__conv_order(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
443 			    size_t nelmts, size_t buf_stride,
444                             size_t bkg_stride, void *_buf, void *bkg,
445                             hid_t dset_xfer_plist);
446 H5_DLL herr_t H5T__conv_order_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
447                             size_t nelmts, size_t buf_stride,
448                             size_t bkg_stride, void *_buf, void *bkg,
449                             hid_t dset_xfer_plist);
450 H5_DLL herr_t H5T__conv_struct(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
451 			    size_t nelmts, size_t buf_stride,
452                             size_t bkg_stride, void *_buf, void *bkg,
453                             hid_t dset_xfer_plist);
454 H5_DLL herr_t H5T__conv_struct_opt(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
455                             size_t nelmts, size_t buf_stride,
456                             size_t bkg_stride, void *_buf, void *bkg,
457                             hid_t dset_xfer_plist);
458 H5_DLL herr_t H5T__conv_enum(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
459 			    size_t nelmts, size_t buf_stride,
460                             size_t bkg_stride, void *buf, void *bkg,
461                             hid_t dset_xfer_plist);
462 H5_DLL herr_t H5T__conv_enum_numeric(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
463 			    size_t nelmts, size_t buf_stride,
464                             size_t bkg_stride, void *buf, void *bkg,
465                             hid_t dset_xfer_plist);
466 H5_DLL herr_t H5T__conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
467 			    size_t nelmts, size_t buf_stride,
468                             size_t bkg_stride, void *buf, void *bkg,
469                             hid_t dset_xfer_plist);
470 H5_DLL herr_t H5T__conv_array(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
471 			    size_t nelmts, size_t buf_stride,
472                             size_t bkg_stride, void *buf, void *bkg,
473                             hid_t dset_xfer_plist);
474 H5_DLL herr_t H5T__conv_i_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
475                             size_t nelmts, size_t buf_stride,
476                             size_t bkg_stride, void *_buf, void *bkg,
477                             hid_t dset_xfer_plist);
478 H5_DLL herr_t H5T__conv_f_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
479 			    size_t nelmts, size_t buf_stride,
480                             size_t bkg_stride, void *_buf, void *bkg,
481                             hid_t dset_xfer_plist);
482 H5_DLL herr_t H5T__conv_f_i(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
483 			    size_t nelmts, size_t buf_stride,
484                             size_t bkg_stride, void *_buf, void *bkg,
485                             hid_t dset_xfer_plist);
486 H5_DLL herr_t H5T__conv_i_f(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
487 			    size_t nelmts, size_t buf_stride,
488                             size_t bkg_stride, void *_buf, void *bkg,
489                             hid_t dset_xfer_plist);
490 H5_DLL herr_t H5T__conv_s_s(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
491 			    size_t nelmts, size_t buf_stride,
492                             size_t bkg_stride, void *_buf, void *bkg,
493                             hid_t dset_xfer_plist);
494 H5_DLL herr_t H5T__conv_b_b(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
495 			    size_t nelmts, size_t buf_stride,
496                             size_t bkg_stride, void *_buf, void *bkg,
497                             hid_t dset_xfer_plist);
498 
499 H5_DLL herr_t H5T__conv_schar_uchar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
500                             size_t nelmts, size_t buf_stride,
501                             size_t bkg_stride, void *buf, void *bkg,
502                             hid_t dset_xfer_plist);
503 H5_DLL herr_t H5T__conv_uchar_schar(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
504                             size_t nelmts, size_t buf_stride,
505                             size_t bkg_stride, void *buf, void *bkg,
506                             hid_t dset_xfer_plist);
507 H5_DLL herr_t H5T__conv_schar_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
508                             size_t nelmts, size_t buf_stride,
509                             size_t bkg_stride, void *buf, void *bkg,
510                             hid_t dset_xfer_plist);
511 H5_DLL herr_t H5T__conv_schar_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
512                             size_t nelmts, size_t buf_stride,
513                             size_t bkg_stride, void *buf, void *bkg,
514                             hid_t dset_xfer_plist);
515 H5_DLL herr_t H5T__conv_uchar_short(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
516                             size_t nelmts, size_t buf_stride,
517                             size_t bkg_stride, void *buf, void *bkg,
518                             hid_t dset_xfer_plist);
519 H5_DLL herr_t H5T__conv_uchar_ushort(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
520                             size_t nelmts, size_t buf_stride,
521                             size_t bkg_stride, void *buf, void *bkg,
522                             hid_t dset_xfer_plist);
523 H5_DLL herr_t H5T__conv_schar_int(hid_t src_id, hid_t dst_id,
524 				  H5T_cdata_t *cdata, size_t nelmts,
525 				  size_t buf_stride, size_t bkg_stride,
526                                   void *buf, void *bkg,
527                                   hid_t dset_xfer_plist);
528 H5_DLL herr_t H5T__conv_schar_uint(hid_t src_id, hid_t dst_id,
529 				   H5T_cdata_t *cdata, size_t nelmts,
530 				   size_t buf_stride, size_t bkg_stride,
531                                    void *buf, void *bkg,
532                                    hid_t dset_xfer_plist);
533 H5_DLL herr_t H5T__conv_uchar_int(hid_t src_id, hid_t dst_id,
534 				  H5T_cdata_t *cdata, size_t nelmts,
535 				  size_t buf_stride, size_t bkg_stride,
536                                   void *buf, void *bkg,
537                                   hid_t dset_xfer_plist);
538 H5_DLL herr_t H5T__conv_uchar_uint(hid_t src_id, hid_t dst_id,
539 				   H5T_cdata_t *cdata, size_t nelmts,
540 				   size_t buf_stride, size_t bkg_stride,
541                                    void *buf, void *bkg,
542                                    hid_t dset_xfer_plist);
543 H5_DLL herr_t H5T__conv_schar_long(hid_t src_id, hid_t dst_id,
544 				   H5T_cdata_t *cdata, size_t nelmts,
545 				   size_t buf_stride, size_t bkg_stride,
546                                    void *buf, void *bkg,
547                                    hid_t dset_xfer_plist);
548 H5_DLL herr_t H5T__conv_schar_ulong(hid_t src_id, hid_t dst_id,
549 				    H5T_cdata_t *cdata, size_t nelmts,
550 				    size_t buf_stride, size_t bkg_stride,
551                                     void *buf, void *bkg,
552                                     hid_t dset_xfer_plist);
553 H5_DLL herr_t H5T__conv_uchar_long(hid_t src_id, hid_t dst_id,
554 				   H5T_cdata_t *cdata, size_t nelmts,
555 				   size_t buf_stride, size_t bkg_stride,
556                                    void *buf, void *bkg,
557                                    hid_t dset_xfer_plist);
558 H5_DLL herr_t H5T__conv_uchar_ulong(hid_t src_id, hid_t dst_id,
559 				    H5T_cdata_t *cdata, size_t nelmts,
560 				    size_t buf_stride, size_t bkg_stride,
561                                     void *buf, void *bkg,
562                                     hid_t dset_xfer_plist);
563 H5_DLL herr_t H5T__conv_schar_llong(hid_t src_id, hid_t dst_id,
564 				    H5T_cdata_t *cdata, size_t nelmts,
565 				    size_t buf_stride, size_t bkg_stride,
566                                     void *buf, void *bkg,
567                                     hid_t dset_xfer_plist);
568 H5_DLL herr_t H5T__conv_schar_ullong(hid_t src_id, hid_t dst_id,
569 				     H5T_cdata_t *cdata, size_t nelmts,
570 				     size_t buf_stride, size_t bkg_stride,
571                                      void *buf, void *bkg,
572                                      hid_t dset_xfer_plist);
573 H5_DLL herr_t H5T__conv_uchar_llong(hid_t src_id, hid_t dst_id,
574 				    H5T_cdata_t *cdata, size_t nelmts,
575 				    size_t buf_stride, size_t bkg_stride,
576                                     void *buf, void *bkg,
577                                     hid_t dset_xfer_plist);
578 H5_DLL herr_t H5T__conv_uchar_ullong(hid_t src_id, hid_t dst_id,
579 				     H5T_cdata_t *cdata, size_t nelmts,
580 				     size_t buf_stride, size_t bkg_stride,
581                                      void *buf, void *bkg,
582                                      hid_t dset_xfer_plist);
583 
584 H5_DLL herr_t H5T__conv_short_schar(hid_t src_id, hid_t dst_id,
585 				    H5T_cdata_t *cdata, size_t nelmts,
586 				    size_t buf_stride, size_t bkg_stride,
587                                     void *buf, void *bkg,
588                                     hid_t dset_xfer_plist);
589 H5_DLL herr_t H5T__conv_short_uchar(hid_t src_id, hid_t dst_id,
590 				    H5T_cdata_t *cdata, size_t nelmts,
591 				    size_t buf_stride, size_t bkg_stride,
592                                     void *buf, void *bkg,
593                                     hid_t dset_xfer_plist);
594 H5_DLL herr_t H5T__conv_ushort_schar(hid_t src_id, hid_t dst_id,
595 				     H5T_cdata_t *cdata, size_t nelmts,
596 				     size_t buf_stride, size_t bkg_stride,
597                                      void *buf, void *bkg,
598                                      hid_t dset_xfer_plist);
599 H5_DLL herr_t H5T__conv_ushort_uchar(hid_t src_id, hid_t dst_id,
600 				     H5T_cdata_t *cdata, size_t nelmts,
601 				     size_t buf_stride, size_t bkg_stride,
602                                      void *buf, void *bkg,
603                                      hid_t dset_xfer_plist);
604 H5_DLL herr_t H5T__conv_short_ushort(hid_t src_id, hid_t dst_id,
605 				     H5T_cdata_t *cdata, size_t nelmts,
606 				     size_t buf_stride, size_t bkg_stride,
607                                      void *buf, void *bkg,
608                                      hid_t dset_xfer_plist);
609 H5_DLL herr_t H5T__conv_ushort_short(hid_t src_id, hid_t dst_id,
610 				     H5T_cdata_t *cdata, size_t nelmts,
611 				     size_t buf_stride, size_t bkg_stride,
612                                      void *buf, void *bkg,
613                                      hid_t dset_xfer_plist);
614 H5_DLL herr_t H5T__conv_short_int(hid_t src_id, hid_t dst_id,
615 				  H5T_cdata_t *cdata, size_t nelmts,
616 				  size_t buf_stride, size_t bkg_stride,
617                                   void *buf, void *bkg,
618                                   hid_t dset_xfer_plist);
619 H5_DLL herr_t H5T__conv_short_uint(hid_t src_id, hid_t dst_id,
620 				   H5T_cdata_t *cdata, size_t nelmts,
621 				   size_t buf_stride, size_t bkg_stride,
622                                    void *buf, void *bkg,
623                                    hid_t dset_xfer_plist);
624 H5_DLL herr_t H5T__conv_ushort_int(hid_t src_id, hid_t dst_id,
625 				   H5T_cdata_t *cdata, size_t nelmts,
626 				   size_t buf_stride, size_t bkg_stride,
627                                    void *buf, void *bkg,
628                                    hid_t dset_xfer_plist);
629 H5_DLL herr_t H5T__conv_ushort_uint(hid_t src_id, hid_t dst_id,
630 				    H5T_cdata_t *cdata, size_t nelmts,
631 				    size_t buf_stride, size_t bkg_stride,
632                                     void *buf, void *bkg,
633                                     hid_t dset_xfer_plist);
634 H5_DLL herr_t H5T__conv_short_long(hid_t src_id, hid_t dst_id,
635 				   H5T_cdata_t *cdata, size_t nelmts,
636 				   size_t buf_stride, size_t bkg_stride,
637                                    void *buf, void *bkg,
638                                    hid_t dset_xfer_plist);
639 H5_DLL herr_t H5T__conv_short_ulong(hid_t src_id, hid_t dst_id,
640 				    H5T_cdata_t *cdata, size_t nelmts,
641 				    size_t buf_stride, size_t bkg_stride,
642                                     void *buf, void *bkg,
643                                     hid_t dset_xfer_plist);
644 H5_DLL herr_t H5T__conv_ushort_long(hid_t src_id, hid_t dst_id,
645 				    H5T_cdata_t *cdata, size_t nelmts,
646 				    size_t buf_stride, size_t bkg_stride,
647                                     void *buf, void *bkg,
648                                     hid_t dset_xfer_plist);
649 H5_DLL herr_t H5T__conv_ushort_ulong(hid_t src_id, hid_t dst_id,
650 				     H5T_cdata_t *cdata, size_t nelmts,
651 				     size_t buf_stride, size_t bkg_stride,
652                                      void *buf, void *bkg,
653                                      hid_t dset_xfer_plist);
654 H5_DLL herr_t H5T__conv_short_llong(hid_t src_id, hid_t dst_id,
655 				    H5T_cdata_t *cdata, size_t nelmts,
656 				    size_t buf_stride, size_t bkg_stride,
657                                     void *buf, void *bkg,
658                                     hid_t dset_xfer_plist);
659 H5_DLL herr_t H5T__conv_short_ullong(hid_t src_id, hid_t dst_id,
660 				     H5T_cdata_t *cdata, size_t nelmts,
661 				     size_t buf_stride, size_t bkg_stride,
662                                      void *buf, void *bkg,
663                                      hid_t dset_xfer_plist);
664 H5_DLL herr_t H5T__conv_ushort_llong(hid_t src_id, hid_t dst_id,
665 				     H5T_cdata_t *cdata, size_t nelmts,
666 				     size_t buf_stride, size_t bkg_stride,
667                                      void *buf, void *bkg,
668                                      hid_t dset_xfer_plist);
669 H5_DLL herr_t H5T__conv_ushort_ullong(hid_t src_id, hid_t dst_id,
670 				      H5T_cdata_t *cdata, size_t nelmts,
671 				      size_t buf_stride, size_t bkg_stride,
672                                       void *buf, void *bkg,
673                                       hid_t dset_xfer_plist);
674 
675 H5_DLL herr_t H5T__conv_int_schar(hid_t src_id, hid_t dst_id,
676 				  H5T_cdata_t *cdata, size_t nelmts,
677 				  size_t buf_stride, size_t bkg_stride,
678                                   void *buf, void *bkg,
679                                   hid_t dset_xfer_plist);
680 H5_DLL herr_t H5T__conv_int_uchar(hid_t src_id, hid_t dst_id,
681 				  H5T_cdata_t *cdata, size_t nelmts,
682 				  size_t buf_stride, size_t bkg_stride,
683                                   void *buf, void *bkg,
684                                   hid_t dset_xfer_plist);
685 H5_DLL herr_t H5T__conv_uint_schar(hid_t src_id, hid_t dst_id,
686 				   H5T_cdata_t *cdata, size_t nelmts,
687 				   size_t buf_stride, size_t bkg_stride,
688                                    void *buf, void *bkg,
689                                    hid_t dset_xfer_plist);
690 H5_DLL herr_t H5T__conv_uint_uchar(hid_t src_id, hid_t dst_id,
691 				   H5T_cdata_t *cdata, size_t nelmts,
692 				   size_t buf_stride, size_t bkg_stride,
693                                    void *buf, void *bkg,
694                                    hid_t dset_xfer_plist);
695 H5_DLL herr_t H5T__conv_int_short(hid_t src_id, hid_t dst_id,
696 				  H5T_cdata_t *cdata, size_t nelmts,
697 				  size_t buf_stride, size_t bkg_stride,
698                                   void *buf, void *bkg,
699                                   hid_t dset_xfer_plist);
700 H5_DLL herr_t H5T__conv_int_ushort(hid_t src_id, hid_t dst_id,
701 				   H5T_cdata_t *cdata, size_t nelmts,
702 				   size_t buf_stride, size_t bkg_stride,
703                                    void *buf, void *bkg,
704                                    hid_t dset_xfer_plist);
705 H5_DLL herr_t H5T__conv_uint_short(hid_t src_id, hid_t dst_id,
706 				   H5T_cdata_t *cdata, size_t nelmts,
707 				   size_t buf_stride, size_t bkg_stride,
708                                    void *buf, void *bkg,
709                                    hid_t dset_xfer_plist);
710 H5_DLL herr_t H5T__conv_uint_ushort(hid_t src_id, hid_t dst_id,
711 				    H5T_cdata_t *cdata, size_t nelmts,
712 				    size_t buf_stride, size_t bkg_stride,
713                                     void *buf, void *bkg,
714                                     hid_t dset_xfer_plist);
715 H5_DLL herr_t H5T__conv_int_uint(hid_t src_id, hid_t dst_id,
716 				 H5T_cdata_t *cdata, size_t nelmts,
717 				 size_t buf_stride, size_t bkg_stride,
718                                  void *buf, void *bkg,
719                                  hid_t dset_xfer_plist);
720 H5_DLL herr_t H5T__conv_uint_int(hid_t src_id, hid_t dst_id,
721 				 H5T_cdata_t *cdata, size_t nelmts,
722 				 size_t buf_stride, size_t bkg_stride,
723                                  void *buf, void *bkg,
724                                  hid_t dset_xfer_plist);
725 H5_DLL herr_t H5T__conv_int_long(hid_t src_id, hid_t dst_id,
726 				 H5T_cdata_t *cdata, size_t nelmts,
727 				 size_t buf_stride, size_t bkg_stride,
728                                  void *buf, void *bkg,
729                                  hid_t dset_xfer_plist);
730 H5_DLL herr_t H5T__conv_int_ulong(hid_t src_id, hid_t dst_id,
731 				  H5T_cdata_t *cdata, size_t nelmts,
732 				  size_t buf_stride, size_t bkg_stride,
733                                   void *buf, void *bkg,
734                                   hid_t dset_xfer_plist);
735 H5_DLL herr_t H5T__conv_uint_long(hid_t src_id, hid_t dst_id,
736 				  H5T_cdata_t *cdata, size_t nelmts,
737 				  size_t buf_stride, size_t bkg_stride,
738                                   void *buf, void *bkg,
739                                   hid_t dset_xfer_plist);
740 H5_DLL herr_t H5T__conv_uint_ulong(hid_t src_id, hid_t dst_id,
741 				   H5T_cdata_t *cdata, size_t nelmts,
742 				   size_t buf_stride, size_t bkg_stride,
743                                    void *buf, void *bkg,
744                                    hid_t dset_xfer_plist);
745 H5_DLL herr_t H5T__conv_int_llong(hid_t src_id, hid_t dst_id,
746 				  H5T_cdata_t *cdata, size_t nelmts,
747 				  size_t buf_stride, size_t bkg_stride,
748                                   void *buf, void *bkg,
749                                   hid_t dset_xfer_plist);
750 H5_DLL herr_t H5T__conv_int_ullong(hid_t src_id, hid_t dst_id,
751 				   H5T_cdata_t *cdata, size_t nelmts,
752 				   size_t buf_stride, size_t bkg_stride,
753                                    void *buf, void *bkg,
754                                    hid_t dset_xfer_plist);
755 H5_DLL herr_t H5T__conv_uint_llong(hid_t src_id, hid_t dst_id,
756 				   H5T_cdata_t *cdata, size_t nelmts,
757 				   size_t buf_stride, size_t bkg_stride,
758                                    void *buf, void *bkg,
759                                    hid_t dset_xfer_plist);
760 H5_DLL herr_t H5T__conv_uint_ullong(hid_t src_id, hid_t dst_id,
761 				    H5T_cdata_t *cdata, size_t nelmts,
762 				    size_t buf_stride, size_t bkg_stride,
763                                     void *buf, void *bkg,
764                                     hid_t dset_xfer_plist);
765 
766 H5_DLL herr_t H5T__conv_long_schar(hid_t src_id, hid_t dst_id,
767 				   H5T_cdata_t *cdata, size_t nelmts,
768 				   size_t buf_stride, size_t bkg_stride,
769                                    void *buf, void *bkg,
770                                    hid_t dset_xfer_plist);
771 H5_DLL herr_t H5T__conv_long_uchar(hid_t src_id, hid_t dst_id,
772 				   H5T_cdata_t *cdata, size_t nelmts,
773 				   size_t buf_stride, size_t bkg_stride,
774                                    void *buf, void *bkg,
775                                    hid_t dset_xfer_plist);
776 H5_DLL herr_t H5T__conv_ulong_schar(hid_t src_id, hid_t dst_id,
777 				    H5T_cdata_t *cdata, size_t nelmts,
778 				    size_t buf_stride, size_t bkg_stride,
779                                     void *buf, void *bkg,
780                                     hid_t dset_xfer_plist);
781 H5_DLL herr_t H5T__conv_ulong_uchar(hid_t src_id, hid_t dst_id,
782 				    H5T_cdata_t *cdata, size_t nelmts,
783 				    size_t buf_stride, size_t bkg_stride,
784                                     void *buf, void *bkg,
785                                     hid_t dset_xfer_plist);
786 H5_DLL herr_t H5T__conv_long_short(hid_t src_id, hid_t dst_id,
787 				   H5T_cdata_t *cdata, size_t nelmts,
788 				   size_t buf_stride, size_t bkg_stride,
789                                    void *buf, void *bkg,
790                                    hid_t dset_xfer_plist);
791 H5_DLL herr_t H5T__conv_long_ushort(hid_t src_id, hid_t dst_id,
792 				    H5T_cdata_t *cdata, size_t nelmts,
793 				    size_t buf_stride, size_t bkg_stride,
794                                     void *buf, void *bkg,
795                                     hid_t dset_xfer_plist);
796 H5_DLL herr_t H5T__conv_ulong_short(hid_t src_id, hid_t dst_id,
797 				    H5T_cdata_t *cdata, size_t nelmts,
798 				    size_t buf_stride, size_t bkg_stride,
799                                     void *buf, void *bkg,
800                                     hid_t dset_xfer_plist);
801 H5_DLL herr_t H5T__conv_ulong_ushort(hid_t src_id, hid_t dst_id,
802 				     H5T_cdata_t *cdata, size_t nelmts,
803 				     size_t buf_stride, size_t bkg_stride,
804                                      void *buf, void *bkg,
805                                      hid_t dset_xfer_plist);
806 H5_DLL herr_t H5T__conv_long_int(hid_t src_id, hid_t dst_id,
807 				 H5T_cdata_t *cdata, size_t nelmts,
808 				 size_t buf_stride, size_t bkg_stride,
809                                  void *buf, void *bkg,
810                                  hid_t dset_xfer_plist);
811 H5_DLL herr_t H5T__conv_long_uint(hid_t src_id, hid_t dst_id,
812 				  H5T_cdata_t *cdata, size_t nelmts,
813 				  size_t buf_stride, size_t bkg_stride,
814                                   void *buf, void *bkg,
815                                   hid_t dset_xfer_plist);
816 H5_DLL herr_t H5T__conv_ulong_int(hid_t src_id, hid_t dst_id,
817 				  H5T_cdata_t *cdata, size_t nelmts,
818 				  size_t buf_stride, size_t bkg_stride,
819                                   void *buf, void *bkg,
820                                   hid_t dset_xfer_plist);
821 H5_DLL herr_t H5T__conv_ulong_uint(hid_t src_id, hid_t dst_id,
822 				   H5T_cdata_t *cdata, size_t nelmts,
823 				   size_t buf_stride, size_t bkg_stride,
824                                    void *buf, void *bkg,
825                                    hid_t dset_xfer_plist);
826 H5_DLL herr_t H5T__conv_long_ulong(hid_t src_id, hid_t dst_id,
827 				   H5T_cdata_t *cdata, size_t nelmts,
828 				   size_t buf_stride, size_t bkg_stride,
829                                    void *buf, void *bkg,
830                                    hid_t dset_xfer_plist);
831 H5_DLL herr_t H5T__conv_ulong_long(hid_t src_id, hid_t dst_id,
832 				   H5T_cdata_t *cdata, size_t nelmts,
833 				   size_t buf_stride, size_t bkg_stride,
834                                    void *buf, void *bkg,
835                                    hid_t dset_xfer_plist);
836 H5_DLL herr_t H5T__conv_long_llong(hid_t src_id, hid_t dst_id,
837 				   H5T_cdata_t *cdata, size_t nelmts,
838 				   size_t buf_stride, size_t bkg_stride,
839                                    void *buf, void *bkg,
840                                    hid_t dset_xfer_plist);
841 H5_DLL herr_t H5T__conv_long_ullong(hid_t src_id, hid_t dst_id,
842 				    H5T_cdata_t *cdata, size_t nelmts,
843 				    size_t buf_stride, size_t bkg_stride,
844                                     void *buf, void *bkg,
845                                     hid_t dset_xfer_plist);
846 H5_DLL herr_t H5T__conv_ulong_llong(hid_t src_id, hid_t dst_id,
847 				    H5T_cdata_t *cdata, size_t nelmts,
848 				    size_t buf_stride, size_t bkg_stride,
849                                     void *buf, void *bkg,
850                                     hid_t dset_xfer_plist);
851 H5_DLL herr_t H5T__conv_ulong_ullong(hid_t src_id, hid_t dst_id,
852 				     H5T_cdata_t *cdata, size_t nelmts,
853 				     size_t buf_stride, size_t bkg_stride,
854                                      void *buf, void *bkg,
855                                      hid_t dset_xfer_plist);
856 
857 H5_DLL herr_t H5T__conv_llong_schar(hid_t src_id, hid_t dst_id,
858 				    H5T_cdata_t *cdata, size_t nelmts,
859 				    size_t buf_stride, size_t bkg_stride,
860                                     void *buf, void *bkg,
861                                     hid_t dset_xfer_plist);
862 H5_DLL herr_t H5T__conv_llong_uchar(hid_t src_id, hid_t dst_id,
863 				    H5T_cdata_t *cdata, size_t nelmts,
864 				    size_t buf_stride, size_t bkg_stride,
865                                     void *buf, void *bkg,
866                                     hid_t dset_xfer_plist);
867 H5_DLL herr_t H5T__conv_ullong_schar(hid_t src_id, hid_t dst_id,
868 				     H5T_cdata_t *cdata, size_t nelmts,
869 				     size_t buf_stride, size_t bkg_stride,
870                                      void *buf, void *bkg,
871                                      hid_t dset_xfer_plist);
872 H5_DLL herr_t H5T__conv_ullong_uchar(hid_t src_id, hid_t dst_id,
873 				     H5T_cdata_t *cdata, size_t nelmts,
874 				     size_t buf_stride, size_t bkg_stride,
875                                      void *buf, void *bkg,
876                                      hid_t dset_xfer_plist);
877 H5_DLL herr_t H5T__conv_llong_short(hid_t src_id, hid_t dst_id,
878 				    H5T_cdata_t *cdata, size_t nelmts,
879 				    size_t buf_stride, size_t bkg_stride,
880                                     void *buf, void *bkg,
881                                     hid_t dset_xfer_plist);
882 H5_DLL herr_t H5T__conv_llong_ushort(hid_t src_id, hid_t dst_id,
883 				     H5T_cdata_t *cdata, size_t nelmts,
884 				     size_t buf_stride, size_t bkg_stride,
885                                      void *buf, void *bkg,
886                                      hid_t dset_xfer_plist);
887 H5_DLL herr_t H5T__conv_ullong_short(hid_t src_id, hid_t dst_id,
888 				     H5T_cdata_t *cdata, size_t nelmts,
889 				     size_t buf_stride, size_t bkg_stride,
890                                      void *buf, void *bkg,
891                                      hid_t dset_xfer_plist);
892 H5_DLL herr_t H5T__conv_ullong_ushort(hid_t src_id, hid_t dst_id,
893 				      H5T_cdata_t *cdata, size_t nelmts,
894 				      size_t buf_stride, size_t bkg_stride,
895                                       void *buf, void *bkg,
896                                       hid_t dset_xfer_plist);
897 H5_DLL herr_t H5T__conv_llong_int(hid_t src_id, hid_t dst_id,
898 				  H5T_cdata_t *cdata, size_t nelmts,
899 				  size_t buf_stride, size_t bkg_stride,
900                                   void *buf, void *bkg,
901                                   hid_t dset_xfer_plist);
902 H5_DLL herr_t H5T__conv_llong_uint(hid_t src_id, hid_t dst_id,
903 				   H5T_cdata_t *cdata, size_t nelmts,
904 				   size_t buf_stride, size_t bkg_stride,
905                                    void *buf, void *bkg,
906                                    hid_t dset_xfer_plist);
907 H5_DLL herr_t H5T__conv_ullong_int(hid_t src_id, hid_t dst_id,
908 				   H5T_cdata_t *cdata, size_t nelmts,
909 				   size_t buf_stride, size_t bkg_stride,
910                                    void *buf, void *bkg,
911                                    hid_t dset_xfer_plist);
912 H5_DLL herr_t H5T__conv_ullong_uint(hid_t src_id, hid_t dst_id,
913 				    H5T_cdata_t *cdata, size_t nelmts,
914 				    size_t buf_stride, size_t bkg_stride,
915                                     void *buf, void *bkg,
916                                     hid_t dset_xfer_plist);
917 H5_DLL herr_t H5T__conv_llong_long(hid_t src_id, hid_t dst_id,
918 				   H5T_cdata_t *cdata, size_t nelmts,
919 				   size_t buf_stride, size_t bkg_stride,
920                                    void *buf, void *bkg,
921                                    hid_t dset_xfer_plist);
922 H5_DLL herr_t H5T__conv_llong_ulong(hid_t src_id, hid_t dst_id,
923 				    H5T_cdata_t *cdata, size_t nelmts,
924 				    size_t buf_stride, size_t bkg_stride,
925                                     void *buf, void *bkg,
926                                     hid_t dset_xfer_plist);
927 H5_DLL herr_t H5T__conv_ullong_long(hid_t src_id, hid_t dst_id,
928 				    H5T_cdata_t *cdata, size_t nelmts,
929 				    size_t buf_stride, size_t bkg_stride,
930                                     void *buf, void *bkg,
931                                     hid_t dset_xfer_plist);
932 H5_DLL herr_t H5T__conv_ullong_ulong(hid_t src_id, hid_t dst_id,
933 				     H5T_cdata_t *cdata, size_t nelmts,
934 				     size_t buf_stride, size_t bkg_stride,
935                                      void *buf, void *bkg,
936                                      hid_t dset_xfer_plist);
937 H5_DLL herr_t H5T__conv_llong_ullong(hid_t src_id, hid_t dst_id,
938 				     H5T_cdata_t *cdata, size_t nelmts,
939 				     size_t buf_stride, size_t bkg_stride,
940                                      void *buf, void *bkg,
941                                      hid_t dset_xfer_plist);
942 H5_DLL herr_t H5T__conv_ullong_llong(hid_t src_id, hid_t dst_id,
943 				     H5T_cdata_t *cdata, size_t nelmts,
944 				     size_t buf_stride, size_t bkg_stride,
945                                      void *buf, void *bkg,
946                                      hid_t dset_xfer_plist);
947 H5_DLL herr_t H5T__conv_float_double(hid_t src_id, hid_t dst_id,
948 				     H5T_cdata_t *cdata, size_t nelmts,
949 				     size_t buf_stride, size_t bkg_stride,
950                                      void *buf, void *bkg,
951                                      hid_t dset_xfer_plist);
952 H5_DLL herr_t H5T__conv_float_ldouble(hid_t src_id, hid_t dst_id,
953 				     H5T_cdata_t *cdata, size_t nelmts,
954 				     size_t buf_stride, size_t bkg_stride,
955                                      void *buf, void *bkg,
956                                      hid_t dset_xfer_plist);
957 H5_DLL herr_t H5T__conv_double_float(hid_t src_id, hid_t dst_id,
958 				     H5T_cdata_t *cdata, size_t nelmts,
959 				     size_t buf_stride, size_t bkg_stride,
960                                      void *buf, void *bkg,
961                                      hid_t dset_xfer_plist);
962 H5_DLL herr_t H5T__conv_double_ldouble(hid_t src_id, hid_t dst_id,
963 				     H5T_cdata_t *cdata, size_t nelmts,
964 				     size_t buf_stride, size_t bkg_stride,
965                                      void *buf, void *bkg,
966                                      hid_t dset_xfer_plist);
967 H5_DLL herr_t H5T__conv_ldouble_float(hid_t src_id, hid_t dst_id,
968 				     H5T_cdata_t *cdata, size_t nelmts,
969 				     size_t buf_stride, size_t bkg_stride,
970                                      void *buf, void *bkg,
971                                      hid_t dset_xfer_plist);
972 H5_DLL herr_t H5T__conv_ldouble_double(hid_t src_id, hid_t dst_id,
973 				     H5T_cdata_t *cdata, size_t nelmts,
974 				     size_t buf_stride, size_t bkg_stride,
975                                      void *buf, void *bkg,
976                                      hid_t dset_xfer_plist);
977 H5_DLL herr_t H5T__conv_schar_float(hid_t src_id, hid_t dst_id,
978 				     H5T_cdata_t *cdata, size_t nelmts,
979 				     size_t buf_stride, size_t bkg_stride,
980                                      void *buf, void *bkg,
981                                      hid_t dset_xfer_plist);
982 H5_DLL herr_t H5T__conv_schar_double(hid_t src_id, hid_t dst_id,
983 				     H5T_cdata_t *cdata, size_t nelmts,
984 				     size_t buf_stride, size_t bkg_stride,
985                                      void *buf, void *bkg,
986                                      hid_t dset_xfer_plist);
987 H5_DLL herr_t H5T__conv_schar_ldouble(hid_t src_id, hid_t dst_id,
988 				     H5T_cdata_t *cdata, size_t nelmts,
989 				     size_t buf_stride, size_t bkg_stride,
990                                      void *buf, void *bkg,
991                                      hid_t dset_xfer_plist);
992 H5_DLL herr_t H5T__conv_uchar_float(hid_t src_id, hid_t dst_id,
993 				     H5T_cdata_t *cdata, size_t nelmts,
994 				     size_t buf_stride, size_t bkg_stride,
995                                      void *buf, void *bkg,
996                                      hid_t dset_xfer_plist);
997 H5_DLL herr_t H5T__conv_uchar_double(hid_t src_id, hid_t dst_id,
998 				     H5T_cdata_t *cdata, size_t nelmts,
999 				     size_t buf_stride, size_t bkg_stride,
1000                                      void *buf, void *bkg,
1001                                      hid_t dset_xfer_plist);
1002 H5_DLL herr_t H5T__conv_uchar_ldouble(hid_t src_id, hid_t dst_id,
1003 				     H5T_cdata_t *cdata, size_t nelmts,
1004 				     size_t buf_stride, size_t bkg_stride,
1005                                      void *buf, void *bkg,
1006                                      hid_t dset_xfer_plist);
1007 H5_DLL herr_t H5T__conv_short_float(hid_t src_id, hid_t dst_id,
1008 				     H5T_cdata_t *cdata, size_t nelmts,
1009 				     size_t buf_stride, size_t bkg_stride,
1010                                      void *buf, void *bkg,
1011                                      hid_t dset_xfer_plist);
1012 H5_DLL herr_t H5T__conv_short_double(hid_t src_id, hid_t dst_id,
1013 				     H5T_cdata_t *cdata, size_t nelmts,
1014 				     size_t buf_stride, size_t bkg_stride,
1015                                      void *buf, void *bkg,
1016                                      hid_t dset_xfer_plist);
1017 H5_DLL herr_t H5T__conv_short_ldouble(hid_t src_id, hid_t dst_id,
1018 				     H5T_cdata_t *cdata, size_t nelmts,
1019 				     size_t buf_stride, size_t bkg_stride,
1020                                      void *buf, void *bkg,
1021                                      hid_t dset_xfer_plist);
1022 H5_DLL herr_t H5T__conv_ushort_float(hid_t src_id, hid_t dst_id,
1023 				     H5T_cdata_t *cdata, size_t nelmts,
1024 				     size_t buf_stride, size_t bkg_stride,
1025                                      void *buf, void *bkg,
1026                                      hid_t dset_xfer_plist);
1027 H5_DLL herr_t H5T__conv_ushort_double(hid_t src_id, hid_t dst_id,
1028 				     H5T_cdata_t *cdata, size_t nelmts,
1029 				     size_t buf_stride, size_t bkg_stride,
1030                                      void *buf, void *bkg,
1031                                      hid_t dset_xfer_plist);
1032 H5_DLL herr_t H5T__conv_ushort_ldouble(hid_t src_id, hid_t dst_id,
1033 				     H5T_cdata_t *cdata, size_t nelmts,
1034 				     size_t buf_stride, size_t bkg_stride,
1035                                      void *buf, void *bkg,
1036                                      hid_t dset_xfer_plist);
1037 H5_DLL herr_t H5T__conv_int_float(hid_t src_id, hid_t dst_id,
1038 				     H5T_cdata_t *cdata, size_t nelmts,
1039 				     size_t buf_stride, size_t bkg_stride,
1040                                      void *buf, void *bkg,
1041                                      hid_t dset_xfer_plist);
1042 H5_DLL herr_t H5T__conv_int_double(hid_t src_id, hid_t dst_id,
1043 				     H5T_cdata_t *cdata, size_t nelmts,
1044 				     size_t buf_stride, size_t bkg_stride,
1045                                      void *buf, void *bkg,
1046                                      hid_t dset_xfer_plist);
1047 H5_DLL herr_t H5T__conv_int_ldouble(hid_t src_id, hid_t dst_id,
1048 				     H5T_cdata_t *cdata, size_t nelmts,
1049 				     size_t buf_stride, size_t bkg_stride,
1050                                      void *buf, void *bkg,
1051                                      hid_t dset_xfer_plist);
1052 H5_DLL herr_t H5T__conv_uint_float(hid_t src_id, hid_t dst_id,
1053 				     H5T_cdata_t *cdata, size_t nelmts,
1054 				     size_t buf_stride, size_t bkg_stride,
1055                                      void *buf, void *bkg,
1056                                      hid_t dset_xfer_plist);
1057 H5_DLL herr_t H5T__conv_uint_double(hid_t src_id, hid_t dst_id,
1058 				     H5T_cdata_t *cdata, size_t nelmts,
1059 				     size_t buf_stride, size_t bkg_stride,
1060                                      void *buf, void *bkg,
1061                                      hid_t dset_xfer_plist);
1062 H5_DLL herr_t H5T__conv_uint_ldouble(hid_t src_id, hid_t dst_id,
1063 				     H5T_cdata_t *cdata, size_t nelmts,
1064 				     size_t buf_stride, size_t bkg_stride,
1065                                      void *buf, void *bkg,
1066                                      hid_t dset_xfer_plist);
1067 H5_DLL herr_t H5T__conv_long_float(hid_t src_id, hid_t dst_id,
1068 				     H5T_cdata_t *cdata, size_t nelmts,
1069 				     size_t buf_stride, size_t bkg_stride,
1070                                      void *buf, void *bkg,
1071                                      hid_t dset_xfer_plist);
1072 H5_DLL herr_t H5T__conv_long_double(hid_t src_id, hid_t dst_id,
1073 				     H5T_cdata_t *cdata, size_t nelmts,
1074 				     size_t buf_stride, size_t bkg_stride,
1075                                      void *buf, void *bkg,
1076                                      hid_t dset_xfer_plist);
1077 H5_DLL herr_t H5T__conv_long_ldouble(hid_t src_id, hid_t dst_id,
1078 				     H5T_cdata_t *cdata, size_t nelmts,
1079 				     size_t buf_stride, size_t bkg_stride,
1080                                      void *buf, void *bkg,
1081                                      hid_t dset_xfer_plist);
1082 H5_DLL herr_t H5T__conv_ulong_float(hid_t src_id, hid_t dst_id,
1083 				     H5T_cdata_t *cdata, size_t nelmts,
1084 				     size_t buf_stride, size_t bkg_stride,
1085                                      void *buf, void *bkg,
1086                                      hid_t dset_xfer_plist);
1087 H5_DLL herr_t H5T__conv_ulong_double(hid_t src_id, hid_t dst_id,
1088 				     H5T_cdata_t *cdata, size_t nelmts,
1089 				     size_t buf_stride, size_t bkg_stride,
1090                                      void *buf, void *bkg,
1091                                      hid_t dset_xfer_plist);
1092 H5_DLL herr_t H5T__conv_ulong_ldouble(hid_t src_id, hid_t dst_id,
1093 				     H5T_cdata_t *cdata, size_t nelmts,
1094 				     size_t buf_stride, size_t bkg_stride,
1095                                      void *buf, void *bkg,
1096                                      hid_t dset_xfer_plist);
1097 H5_DLL herr_t H5T__conv_llong_float(hid_t src_id, hid_t dst_id,
1098 				     H5T_cdata_t *cdata, size_t nelmts,
1099 				     size_t buf_stride, size_t bkg_stride,
1100                                      void *buf, void *bkg,
1101                                      hid_t dset_xfer_plist);
1102 H5_DLL herr_t H5T__conv_llong_double(hid_t src_id, hid_t dst_id,
1103 				     H5T_cdata_t *cdata, size_t nelmts,
1104 				     size_t buf_stride, size_t bkg_stride,
1105                                      void *buf, void *bkg,
1106                                      hid_t dset_xfer_plist);
1107 H5_DLL herr_t H5T__conv_llong_ldouble(hid_t src_id, hid_t dst_id,
1108 				     H5T_cdata_t *cdata, size_t nelmts,
1109 				     size_t buf_stride, size_t bkg_stride,
1110                                      void *buf, void *bkg,
1111                                      hid_t dset_xfer_plist);
1112 H5_DLL herr_t H5T__conv_ullong_float(hid_t src_id, hid_t dst_id,
1113 				     H5T_cdata_t *cdata, size_t nelmts,
1114 				     size_t buf_stride, size_t bkg_stride,
1115                                      void *buf, void *bkg,
1116                                      hid_t dset_xfer_plist);
1117 H5_DLL herr_t H5T__conv_ullong_double(hid_t src_id, hid_t dst_id,
1118 				     H5T_cdata_t *cdata, size_t nelmts,
1119 				     size_t buf_stride, size_t bkg_stride,
1120                                      void *buf, void *bkg,
1121                                      hid_t dset_xfer_plist);
1122 H5_DLL herr_t H5T__conv_ullong_ldouble(hid_t src_id, hid_t dst_id,
1123 				     H5T_cdata_t *cdata, size_t nelmts,
1124 				     size_t buf_stride, size_t bkg_stride,
1125                                      void *buf, void *bkg,
1126                                      hid_t dset_xfer_plist);
1127 H5_DLL herr_t H5T__conv_float_schar(hid_t src_id, hid_t dst_id,
1128 				     H5T_cdata_t *cdata, size_t nelmts,
1129 				     size_t buf_stride, size_t bkg_stride,
1130                                      void *buf, void *bkg,
1131                                      hid_t dset_xfer_plist);
1132 H5_DLL herr_t H5T__conv_float_uchar(hid_t src_id, hid_t dst_id,
1133 				     H5T_cdata_t *cdata, size_t nelmts,
1134 				     size_t buf_stride, size_t bkg_stride,
1135                                      void *buf, void *bkg,
1136                                      hid_t dset_xfer_plist);
1137 H5_DLL herr_t H5T__conv_float_short(hid_t src_id, hid_t dst_id,
1138 				     H5T_cdata_t *cdata, size_t nelmts,
1139 				     size_t buf_stride, size_t bkg_stride,
1140                                      void *buf, void *bkg,
1141                                      hid_t dset_xfer_plist);
1142 H5_DLL herr_t H5T__conv_float_ushort(hid_t src_id, hid_t dst_id,
1143 				     H5T_cdata_t *cdata, size_t nelmts,
1144 				     size_t buf_stride, size_t bkg_stride,
1145                                      void *buf, void *bkg,
1146                                      hid_t dset_xfer_plist);
1147 H5_DLL herr_t H5T__conv_float_int(hid_t src_id, hid_t dst_id,
1148 				     H5T_cdata_t *cdata, size_t nelmts,
1149 				     size_t buf_stride, size_t bkg_stride,
1150                                      void *buf, void *bkg,
1151                                      hid_t dset_xfer_plist);
1152 H5_DLL herr_t H5T__conv_float_uint(hid_t src_id, hid_t dst_id,
1153 				     H5T_cdata_t *cdata, size_t nelmts,
1154 				     size_t buf_stride, size_t bkg_stride,
1155                                      void *buf, void *bkg,
1156                                      hid_t dset_xfer_plist);
1157 H5_DLL herr_t H5T__conv_float_long(hid_t src_id, hid_t dst_id,
1158 				     H5T_cdata_t *cdata, size_t nelmts,
1159 				     size_t buf_stride, size_t bkg_stride,
1160                                      void *buf, void *bkg,
1161                                      hid_t dset_xfer_plist);
1162 H5_DLL herr_t H5T__conv_float_ulong(hid_t src_id, hid_t dst_id,
1163 				     H5T_cdata_t *cdata, size_t nelmts,
1164 				     size_t buf_stride, size_t bkg_stride,
1165                                      void *buf, void *bkg,
1166                                      hid_t dset_xfer_plist);
1167 H5_DLL herr_t H5T__conv_float_llong(hid_t src_id, hid_t dst_id,
1168 				     H5T_cdata_t *cdata, size_t nelmts,
1169 				     size_t buf_stride, size_t bkg_stride,
1170                                      void *buf, void *bkg,
1171                                      hid_t dset_xfer_plist);
1172 H5_DLL herr_t H5T__conv_float_ullong(hid_t src_id, hid_t dst_id,
1173 				     H5T_cdata_t *cdata, size_t nelmts,
1174 				     size_t buf_stride, size_t bkg_stride,
1175                                      void *buf, void *bkg,
1176                                      hid_t dset_xfer_plist);
1177 H5_DLL herr_t H5T__conv_double_schar(hid_t src_id, hid_t dst_id,
1178 				     H5T_cdata_t *cdata, size_t nelmts,
1179 				     size_t buf_stride, size_t bkg_stride,
1180                                      void *buf, void *bkg,
1181                                      hid_t dset_xfer_plist);
1182 H5_DLL herr_t H5T__conv_double_uchar(hid_t src_id, hid_t dst_id,
1183 				     H5T_cdata_t *cdata, size_t nelmts,
1184 				     size_t buf_stride, size_t bkg_stride,
1185                                      void *buf, void *bkg,
1186                                      hid_t dset_xfer_plist);
1187 H5_DLL herr_t H5T__conv_double_short(hid_t src_id, hid_t dst_id,
1188 				     H5T_cdata_t *cdata, size_t nelmts,
1189 				     size_t buf_stride, size_t bkg_stride,
1190                                      void *buf, void *bkg,
1191                                      hid_t dset_xfer_plist);
1192 H5_DLL herr_t H5T__conv_double_ushort(hid_t src_id, hid_t dst_id,
1193 				     H5T_cdata_t *cdata, size_t nelmts,
1194 				     size_t buf_stride, size_t bkg_stride,
1195                                      void *buf, void *bkg,
1196                                      hid_t dset_xfer_plist);
1197 H5_DLL herr_t H5T__conv_double_int(hid_t src_id, hid_t dst_id,
1198 				     H5T_cdata_t *cdata, size_t nelmts,
1199 				     size_t buf_stride, size_t bkg_stride,
1200                                      void *buf, void *bkg,
1201                                      hid_t dset_xfer_plist);
1202 H5_DLL herr_t H5T__conv_double_uint(hid_t src_id, hid_t dst_id,
1203 				     H5T_cdata_t *cdata, size_t nelmts,
1204 				     size_t buf_stride, size_t bkg_stride,
1205                                      void *buf, void *bkg,
1206                                      hid_t dset_xfer_plist);
1207 H5_DLL herr_t H5T__conv_double_long(hid_t src_id, hid_t dst_id,
1208 				     H5T_cdata_t *cdata, size_t nelmts,
1209 				     size_t buf_stride, size_t bkg_stride,
1210                                      void *buf, void *bkg,
1211                                      hid_t dset_xfer_plist);
1212 H5_DLL herr_t H5T__conv_double_ulong(hid_t src_id, hid_t dst_id,
1213 				     H5T_cdata_t *cdata, size_t nelmts,
1214 				     size_t buf_stride, size_t bkg_stride,
1215                                      void *buf, void *bkg,
1216                                      hid_t dset_xfer_plist);
1217 H5_DLL herr_t H5T__conv_double_llong(hid_t src_id, hid_t dst_id,
1218 				     H5T_cdata_t *cdata, size_t nelmts,
1219 				     size_t buf_stride, size_t bkg_stride,
1220                                      void *buf, void *bkg,
1221                                      hid_t dset_xfer_plist);
1222 H5_DLL herr_t H5T__conv_double_ullong(hid_t src_id, hid_t dst_id,
1223 				     H5T_cdata_t *cdata, size_t nelmts,
1224 				     size_t buf_stride, size_t bkg_stride,
1225                                      void *buf, void *bkg,
1226                                      hid_t dset_xfer_plist);
1227 H5_DLL herr_t H5T__conv_ldouble_schar(hid_t src_id, hid_t dst_id,
1228 				     H5T_cdata_t *cdata, size_t nelmts,
1229 				     size_t buf_stride, size_t bkg_stride,
1230                                      void *buf, void *bkg,
1231                                      hid_t dset_xfer_plist);
1232 H5_DLL herr_t H5T__conv_ldouble_uchar(hid_t src_id, hid_t dst_id,
1233 				     H5T_cdata_t *cdata, size_t nelmts,
1234 				     size_t buf_stride, size_t bkg_stride,
1235                                      void *buf, void *bkg,
1236                                      hid_t dset_xfer_plist);
1237 H5_DLL herr_t H5T__conv_ldouble_short(hid_t src_id, hid_t dst_id,
1238 				     H5T_cdata_t *cdata, size_t nelmts,
1239 				     size_t buf_stride, size_t bkg_stride,
1240                                      void *buf, void *bkg,
1241                                      hid_t dset_xfer_plist);
1242 H5_DLL herr_t H5T__conv_ldouble_ushort(hid_t src_id, hid_t dst_id,
1243 				     H5T_cdata_t *cdata, size_t nelmts,
1244 				     size_t buf_stride, size_t bkg_stride,
1245                                      void *buf, void *bkg,
1246                                      hid_t dset_xfer_plist);
1247 H5_DLL herr_t H5T__conv_ldouble_int(hid_t src_id, hid_t dst_id,
1248 				     H5T_cdata_t *cdata, size_t nelmts,
1249 				     size_t buf_stride, size_t bkg_stride,
1250                                      void *buf, void *bkg,
1251                                      hid_t dset_xfer_plist);
1252 H5_DLL herr_t H5T__conv_ldouble_uint(hid_t src_id, hid_t dst_id,
1253 				     H5T_cdata_t *cdata, size_t nelmts,
1254 				     size_t buf_stride, size_t bkg_stride,
1255                                      void *buf, void *bkg,
1256                                      hid_t dset_xfer_plist);
1257 H5_DLL herr_t H5T__conv_ldouble_long(hid_t src_id, hid_t dst_id,
1258 				     H5T_cdata_t *cdata, size_t nelmts,
1259 				     size_t buf_stride, size_t bkg_stride,
1260                                      void *buf, void *bkg,
1261                                      hid_t dset_xfer_plist);
1262 H5_DLL herr_t H5T__conv_ldouble_ulong(hid_t src_id, hid_t dst_id,
1263 				     H5T_cdata_t *cdata, size_t nelmts,
1264 				     size_t buf_stride, size_t bkg_stride,
1265                                      void *buf, void *bkg,
1266                                      hid_t dset_xfer_plist);
1267 H5_DLL herr_t H5T__conv_ldouble_llong(hid_t src_id, hid_t dst_id,
1268 				     H5T_cdata_t *cdata, size_t nelmts,
1269 				     size_t buf_stride, size_t bkg_stride,
1270                                      void *buf, void *bkg,
1271                                      hid_t dset_xfer_plist);
1272 H5_DLL herr_t H5T__conv_ldouble_ullong(hid_t src_id, hid_t dst_id,
1273 				     H5T_cdata_t *cdata, size_t nelmts,
1274 				     size_t buf_stride, size_t bkg_stride,
1275                                      void *buf, void *bkg,
1276                                      hid_t dset_xfer_plist);
1277 
1278 /* Bit twiddling functions */
1279 H5_DLL void H5T__bit_copy(uint8_t *dst, size_t dst_offset, const uint8_t *src,
1280 			  size_t src_offset, size_t size);
1281 H5_DLL herr_t H5T__bit_shift(uint8_t *buf, ssize_t shift_dist, size_t offset, size_t size);
1282 H5_DLL void H5T__bit_set(uint8_t *buf, size_t offset, size_t size,
1283 			 hbool_t value);
1284 H5_DLL uint64_t H5T__bit_get_d(uint8_t *buf, size_t offset, size_t size);
1285 H5_DLL void H5T__bit_set_d(uint8_t *buf, size_t offset, size_t size,
1286 			   uint64_t val);
1287 H5_DLL ssize_t H5T__bit_find(uint8_t *buf, size_t offset, size_t size,
1288 			     H5T_sdir_t direction, hbool_t value);
1289 H5_DLL hbool_t H5T__bit_inc(uint8_t *buf, size_t start, size_t size);
1290 H5_DLL hbool_t H5T__bit_dec(uint8_t *buf, size_t start, size_t size);
1291 H5_DLL void H5T__bit_neg(uint8_t *buf, size_t start, size_t size);
1292 
1293 /* VL functions */
1294 H5_DLL H5T_t * H5T__vlen_create(const H5T_t *base);
1295 H5_DLL htri_t H5T__vlen_set_loc(const H5T_t *dt, H5F_t *f, H5T_loc_t loc);
1296 
1297 /* Array functions */
1298 H5_DLL H5T_t *H5T__array_create(H5T_t *base, unsigned ndims, const hsize_t dim[/* ndims */]);
1299 H5_DLL int    H5T__get_array_ndims(const H5T_t *dt);
1300 H5_DLL int    H5T__get_array_dims(const H5T_t *dt, hsize_t dims[]);
1301 
1302 /* Compound functions */
1303 H5_DLL herr_t H5T__insert(H5T_t *parent, const char *name, size_t offset,
1304         const H5T_t *member);
1305 H5_DLL size_t H5T__get_member_size(const H5T_t *dt, unsigned membno);
1306 H5_DLL void H5T__update_packed(const H5T_t *dt);
1307 H5_DLL H5T_subset_info_t *H5T__conv_struct_subset(const H5T_cdata_t *cdata);
1308 
1309 /* Enumerated type functions */
1310 H5_DLL H5T_t *H5T__enum_create(const H5T_t *parent);
1311 H5_DLL herr_t H5T__enum_insert(const H5T_t *dt, const char *name, const void *value);
1312 H5_DLL herr_t H5T__get_member_value(const H5T_t *dt, unsigned membno, void *value);
1313 
1314 /* Field functions (for both compound & enumerated types) */
1315 H5_DLL char  *H5T__get_member_name(H5T_t const *dt, unsigned membno);
1316 H5_DLL herr_t H5T__sort_value(const H5T_t *dt, int *map);
1317 H5_DLL herr_t H5T__sort_name(const H5T_t *dt, int *map);
1318 
1319 /* Debugging functions */
1320 H5_DLL herr_t H5T__print_stats(H5T_path_t *path, int *nprint/*in,out*/);
1321 
1322 #endif /* _H5Tpkg_H */
1323 
1324