source: anuga_core/install/winxp/NetCDFWinInstaller/include/H5Tpublic.h @ 7310

Last change on this file since 7310 was 7310, checked in by rwilson, 15 years ago

Added the NetCDF Windows installer.

  • Property svn:executable set to *
File size: 26.6 KB
Line 
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 files COPYING and Copyright.html.  COPYING can be found at the root   *
9 * of the source code distribution tree; Copyright.html can be found at the  *
10 * root level of an installed copy of the electronic HDF5 document set and   *
11 * is linked from the top-level documents page.  It can also be found at     *
12 * http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have          *
13 * access to either file, you may request a copy from help@hdfgroup.org.     *
14 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15
16/*
17 * This file contains public declarations for the H5T module.
18 */
19#ifndef _H5Tpublic_H
20#define _H5Tpublic_H
21
22/* Public headers needed by this file */
23#include "H5public.h"
24#include "H5Ipublic.h"
25
26#define HOFFSET(S,M)    (offsetof(S,M))
27
28/* These are the various classes of datatypes */
29/* If this goes over 16 types (0-15), the file format will need to change) */
30typedef enum H5T_class_t {
31    H5T_NO_CLASS         = -1,  /*error                                      */
32    H5T_INTEGER          = 0,   /*integer types                              */
33    H5T_FLOAT            = 1,   /*floating-point types                       */
34    H5T_TIME             = 2,   /*date and time types                        */
35    H5T_STRING           = 3,   /*character string types                     */
36    H5T_BITFIELD         = 4,   /*bit field types                            */
37    H5T_OPAQUE           = 5,   /*opaque types                               */
38    H5T_COMPOUND         = 6,   /*compound types                             */
39    H5T_REFERENCE        = 7,   /*reference types                            */
40    H5T_ENUM             = 8,   /*enumeration types                          */
41    H5T_VLEN             = 9,   /*Variable-Length types                      */
42    H5T_ARRAY            = 10,  /*Array types                                */
43
44    H5T_NCLASSES                /*this must be last                          */
45} H5T_class_t;
46
47/* Byte orders */
48typedef enum H5T_order_t {
49    H5T_ORDER_ERROR      = -1,  /*error                                      */
50    H5T_ORDER_LE         = 0,   /*little endian                              */
51    H5T_ORDER_BE         = 1,   /*bit endian                                 */
52    H5T_ORDER_VAX        = 2,   /*VAX mixed endian                           */
53    H5T_ORDER_NONE       = 3    /*no particular order (strings, bits,..)     */
54    /*H5T_ORDER_NONE must be last */
55} H5T_order_t;
56
57/* Types of integer sign schemes */
58typedef enum H5T_sign_t {
59    H5T_SGN_ERROR        = -1,  /*error                                      */
60    H5T_SGN_NONE         = 0,   /*this is an unsigned type                   */
61    H5T_SGN_2            = 1,   /*two's complement                           */
62
63    H5T_NSGN             = 2    /*this must be last!                         */
64} H5T_sign_t;
65
66/* Floating-point normalization schemes */
67typedef enum H5T_norm_t {
68    H5T_NORM_ERROR       = -1,  /*error                                      */
69    H5T_NORM_IMPLIED     = 0,   /*msb of mantissa isn't stored, always 1     */
70    H5T_NORM_MSBSET      = 1,   /*msb of mantissa is always 1                */
71    H5T_NORM_NONE        = 2    /*not normalized                             */
72    /*H5T_NORM_NONE must be last */
73} H5T_norm_t;
74
75/*
76 * Character set to use for text strings.  Do not change these values since
77 * they appear in HDF5 files!
78 */
79typedef enum H5T_cset_t {
80    H5T_CSET_ERROR       = -1,  /*error                                      */
81    H5T_CSET_ASCII       = 0,   /*US ASCII                                   */
82    H5T_CSET_UTF8        = 1,   /*UTF-8 Unicode encoding                     */
83    H5T_CSET_RESERVED_2  = 2,   /*reserved for later use                     */
84    H5T_CSET_RESERVED_3  = 3,   /*reserved for later use                     */
85    H5T_CSET_RESERVED_4  = 4,   /*reserved for later use                     */
86    H5T_CSET_RESERVED_5  = 5,   /*reserved for later use                     */
87    H5T_CSET_RESERVED_6  = 6,   /*reserved for later use                     */
88    H5T_CSET_RESERVED_7  = 7,   /*reserved for later use                     */
89    H5T_CSET_RESERVED_8  = 8,   /*reserved for later use                     */
90    H5T_CSET_RESERVED_9  = 9,   /*reserved for later use                     */
91    H5T_CSET_RESERVED_10 = 10,  /*reserved for later use                     */
92    H5T_CSET_RESERVED_11 = 11,  /*reserved for later use                     */
93    H5T_CSET_RESERVED_12 = 12,  /*reserved for later use                     */
94    H5T_CSET_RESERVED_13 = 13,  /*reserved for later use                     */
95    H5T_CSET_RESERVED_14 = 14,  /*reserved for later use                     */
96    H5T_CSET_RESERVED_15 = 15   /*reserved for later use                     */
97} H5T_cset_t;
98#define H5T_NCSET H5T_CSET_RESERVED_2                   /*Number of character sets actually defined  */
99
100/*
101 * Type of padding to use in character strings.  Do not change these values
102 * since they appear in HDF5 files!
103 */
104typedef enum H5T_str_t {
105    H5T_STR_ERROR        = -1,  /*error                                      */
106    H5T_STR_NULLTERM     = 0,   /*null terminate like in C                   */
107    H5T_STR_NULLPAD      = 1,   /*pad with nulls                             */
108    H5T_STR_SPACEPAD     = 2,   /*pad with spaces like in Fortran            */
109    H5T_STR_RESERVED_3   = 3,   /*reserved for later use                     */
110    H5T_STR_RESERVED_4   = 4,   /*reserved for later use                     */
111    H5T_STR_RESERVED_5   = 5,   /*reserved for later use                     */
112    H5T_STR_RESERVED_6   = 6,   /*reserved for later use                     */
113    H5T_STR_RESERVED_7   = 7,   /*reserved for later use                     */
114    H5T_STR_RESERVED_8   = 8,   /*reserved for later use                     */
115    H5T_STR_RESERVED_9   = 9,   /*reserved for later use                     */
116    H5T_STR_RESERVED_10  = 10,  /*reserved for later use                     */
117    H5T_STR_RESERVED_11  = 11,  /*reserved for later use                     */
118    H5T_STR_RESERVED_12  = 12,  /*reserved for later use                     */
119    H5T_STR_RESERVED_13  = 13,  /*reserved for later use                     */
120    H5T_STR_RESERVED_14  = 14,  /*reserved for later use                     */
121    H5T_STR_RESERVED_15  = 15   /*reserved for later use                     */
122} H5T_str_t;
123#define H5T_NSTR H5T_STR_RESERVED_3             /*num H5T_str_t types actually defined       */
124
125/* Type of padding to use in other atomic types */
126typedef enum H5T_pad_t {
127    H5T_PAD_ERROR        = -1,  /*error                                      */
128    H5T_PAD_ZERO         = 0,   /*always set to zero                         */
129    H5T_PAD_ONE          = 1,   /*always set to one                          */
130    H5T_PAD_BACKGROUND   = 2,   /*set to background value                    */
131
132    H5T_NPAD             = 3    /*THIS MUST BE LAST                          */
133} H5T_pad_t;
134
135/* Commands sent to conversion functions */
136typedef enum H5T_cmd_t {
137    H5T_CONV_INIT       = 0,    /*query and/or initialize private data       */
138    H5T_CONV_CONV       = 1,    /*convert data from source to dest datatype */
139    H5T_CONV_FREE       = 2     /*function is being removed from path        */
140} H5T_cmd_t;
141
142/* How is the `bkg' buffer used by the conversion function? */
143typedef enum H5T_bkg_t {
144    H5T_BKG_NO          = 0,    /*background buffer is not needed, send NULL */
145    H5T_BKG_TEMP        = 1,    /*bkg buffer used as temp storage only       */
146    H5T_BKG_YES         = 2     /*init bkg buf with data before conversion   */
147} H5T_bkg_t;
148
149/* Type conversion client data */
150typedef struct H5T_cdata_t {
151    H5T_cmd_t           command;/*what should the conversion function do?    */
152    H5T_bkg_t           need_bkg;/*is the background buffer needed?          */
153    hbool_t             recalc; /*recalculate private data                   */
154    void                *priv;  /*private data                               */
155} H5T_cdata_t;
156
157/* Conversion function persistence */
158typedef enum H5T_pers_t {
159    H5T_PERS_DONTCARE   = -1,   /*wild card                                  */
160    H5T_PERS_HARD       = 0,    /*hard conversion function                   */
161    H5T_PERS_SOFT       = 1     /*soft conversion function                   */
162} H5T_pers_t;
163
164/* The order to retrieve atomic native datatype */
165typedef enum H5T_direction_t {
166    H5T_DIR_DEFAULT     = 0,    /*default direction is inscendent            */
167    H5T_DIR_ASCEND      = 1,    /*in inscendent order                        */
168    H5T_DIR_DESCEND     = 2     /*in descendent order                        */
169} H5T_direction_t;
170
171/* The exception type passed into the conversion callback function */
172typedef enum H5T_conv_except_t {
173    H5T_CONV_EXCEPT_RANGE_HI       = 0,   /*source value is greater than destination's range */
174    H5T_CONV_EXCEPT_RANGE_LOW      = 1,   /*source value is less than destination's range    */
175    H5T_CONV_EXCEPT_PRECISION      = 2,   /*source value loses precision in destination      */
176    H5T_CONV_EXCEPT_TRUNCATE       = 3,   /*source value is truncated in destination         */
177    H5T_CONV_EXCEPT_PINF           = 4,   /*source value is positive infinity(floating number) */
178    H5T_CONV_EXCEPT_NINF           = 5,   /*source value is negative infinity(floating number) */
179    H5T_CONV_EXCEPT_NAN            = 6    /*source value is NaN(floating number)             */
180} H5T_conv_except_t;
181
182/* The return value from conversion callback function H5T_conv_except_func_t */
183typedef enum H5T_conv_ret_t {
184    H5T_CONV_ABORT      = -1,   /*abort conversion                           */
185    H5T_CONV_UNHANDLED  = 0,    /*callback function failed to handle the exception      */
186    H5T_CONV_HANDLED    = 1     /*callback function handled the exception successfully  */
187} H5T_conv_ret_t;
188
189/* Variable Length Datatype struct in memory */
190/* (This is only used for VL sequences, not VL strings, which are stored in char *'s) */
191typedef struct {
192    size_t len; /* Length of VL data (in base type units) */
193    void *p;    /* Pointer to VL data */
194} hvl_t;
195
196/* Variable Length String information */
197#define H5T_VARIABLE    ((size_t)(-1))  /* Indicate that a string is variable length (null-terminated in C, instead of fixed length) */
198
199/* Opaque information */
200#define H5T_OPAQUE_TAG_MAX      256     /* Maximum length of an opaque tag */
201                                        /* This could be raised without too much difficulty */
202
203#ifdef __cplusplus
204extern "C" {
205#endif
206
207/* All datatype conversion functions are... */
208typedef herr_t (*H5T_conv_t) (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
209      size_t nelmts, size_t buf_stride, size_t bkg_stride, void *buf,
210      void *bkg, hid_t dset_xfer_plist);
211
212/* Exception handler.  If an exception like overflow happenes during conversion,
213 * this function is called if it's registered through H5Pset_type_conv_cb.
214 */
215typedef H5T_conv_ret_t (*H5T_conv_except_func_t)(H5T_conv_except_t except_type,
216    hid_t src_id, hid_t dst_id, void *src_buf, void *dst_buf, void *user_data);
217
218/* When this header is included from a private header, don't make calls to H5open() */
219#undef H5OPEN
220#ifndef _H5private_H
221#define H5OPEN          H5open(),
222#else   /* _H5private_H */
223#define H5OPEN
224#endif  /* _H5private_H */
225
226/*
227 * The IEEE floating point types in various byte orders.
228 */
229#define H5T_IEEE_F32BE          (H5OPEN H5T_IEEE_F32BE_g)
230#define H5T_IEEE_F32LE          (H5OPEN H5T_IEEE_F32LE_g)
231#define H5T_IEEE_F64BE          (H5OPEN H5T_IEEE_F64BE_g)
232#define H5T_IEEE_F64LE          (H5OPEN H5T_IEEE_F64LE_g)
233H5_DLLVAR hid_t H5T_IEEE_F32BE_g;
234H5_DLLVAR hid_t H5T_IEEE_F32LE_g;
235H5_DLLVAR hid_t H5T_IEEE_F64BE_g;
236H5_DLLVAR hid_t H5T_IEEE_F64LE_g;
237
238/*
239 * These are "standard" types.  For instance, signed (2's complement) and
240 * unsigned integers of various sizes and byte orders.
241 */
242#define H5T_STD_I8BE            (H5OPEN H5T_STD_I8BE_g)
243#define H5T_STD_I8LE            (H5OPEN H5T_STD_I8LE_g)
244#define H5T_STD_I16BE           (H5OPEN H5T_STD_I16BE_g)
245#define H5T_STD_I16LE           (H5OPEN H5T_STD_I16LE_g)
246#define H5T_STD_I32BE           (H5OPEN H5T_STD_I32BE_g)
247#define H5T_STD_I32LE           (H5OPEN H5T_STD_I32LE_g)
248#define H5T_STD_I64BE           (H5OPEN H5T_STD_I64BE_g)
249#define H5T_STD_I64LE           (H5OPEN H5T_STD_I64LE_g)
250#define H5T_STD_U8BE            (H5OPEN H5T_STD_U8BE_g)
251#define H5T_STD_U8LE            (H5OPEN H5T_STD_U8LE_g)
252#define H5T_STD_U16BE           (H5OPEN H5T_STD_U16BE_g)
253#define H5T_STD_U16LE           (H5OPEN H5T_STD_U16LE_g)
254#define H5T_STD_U32BE           (H5OPEN H5T_STD_U32BE_g)
255#define H5T_STD_U32LE           (H5OPEN H5T_STD_U32LE_g)
256#define H5T_STD_U64BE           (H5OPEN H5T_STD_U64BE_g)
257#define H5T_STD_U64LE           (H5OPEN H5T_STD_U64LE_g)
258#define H5T_STD_B8BE            (H5OPEN H5T_STD_B8BE_g)
259#define H5T_STD_B8LE            (H5OPEN H5T_STD_B8LE_g)
260#define H5T_STD_B16BE           (H5OPEN H5T_STD_B16BE_g)
261#define H5T_STD_B16LE           (H5OPEN H5T_STD_B16LE_g)
262#define H5T_STD_B32BE           (H5OPEN H5T_STD_B32BE_g)
263#define H5T_STD_B32LE           (H5OPEN H5T_STD_B32LE_g)
264#define H5T_STD_B64BE           (H5OPEN H5T_STD_B64BE_g)
265#define H5T_STD_B64LE           (H5OPEN H5T_STD_B64LE_g)
266#define H5T_STD_REF_OBJ         (H5OPEN H5T_STD_REF_OBJ_g)
267#define H5T_STD_REF_DSETREG     (H5OPEN H5T_STD_REF_DSETREG_g)
268H5_DLLVAR hid_t H5T_STD_I8BE_g;
269H5_DLLVAR hid_t H5T_STD_I8LE_g;
270H5_DLLVAR hid_t H5T_STD_I16BE_g;
271H5_DLLVAR hid_t H5T_STD_I16LE_g;
272H5_DLLVAR hid_t H5T_STD_I32BE_g;
273H5_DLLVAR hid_t H5T_STD_I32LE_g;
274H5_DLLVAR hid_t H5T_STD_I64BE_g;
275H5_DLLVAR hid_t H5T_STD_I64LE_g;
276H5_DLLVAR hid_t H5T_STD_U8BE_g;
277H5_DLLVAR hid_t H5T_STD_U8LE_g;
278H5_DLLVAR hid_t H5T_STD_U16BE_g;
279H5_DLLVAR hid_t H5T_STD_U16LE_g;
280H5_DLLVAR hid_t H5T_STD_U32BE_g;
281H5_DLLVAR hid_t H5T_STD_U32LE_g;
282H5_DLLVAR hid_t H5T_STD_U64BE_g;
283H5_DLLVAR hid_t H5T_STD_U64LE_g;
284H5_DLLVAR hid_t H5T_STD_B8BE_g;
285H5_DLLVAR hid_t H5T_STD_B8LE_g;
286H5_DLLVAR hid_t H5T_STD_B16BE_g;
287H5_DLLVAR hid_t H5T_STD_B16LE_g;
288H5_DLLVAR hid_t H5T_STD_B32BE_g;
289H5_DLLVAR hid_t H5T_STD_B32LE_g;
290H5_DLLVAR hid_t H5T_STD_B64BE_g;
291H5_DLLVAR hid_t H5T_STD_B64LE_g;
292H5_DLLVAR hid_t H5T_STD_REF_OBJ_g;
293H5_DLLVAR hid_t H5T_STD_REF_DSETREG_g;
294
295/*
296 * Types which are particular to Unix.
297 */
298#define H5T_UNIX_D32BE          (H5OPEN H5T_UNIX_D32BE_g)
299#define H5T_UNIX_D32LE          (H5OPEN H5T_UNIX_D32LE_g)
300#define H5T_UNIX_D64BE          (H5OPEN H5T_UNIX_D64BE_g)
301#define H5T_UNIX_D64LE          (H5OPEN H5T_UNIX_D64LE_g)
302H5_DLLVAR hid_t H5T_UNIX_D32BE_g;
303H5_DLLVAR hid_t H5T_UNIX_D32LE_g;
304H5_DLLVAR hid_t H5T_UNIX_D64BE_g;
305H5_DLLVAR hid_t H5T_UNIX_D64LE_g;
306
307/*
308 * Types particular to the C language.  String types use `bytes' instead
309 * of `bits' as their size.
310 */
311#define H5T_C_S1                (H5OPEN H5T_C_S1_g)
312H5_DLLVAR hid_t H5T_C_S1_g;
313
314/*
315 * Types particular to Fortran.
316 */
317#define H5T_FORTRAN_S1          (H5OPEN H5T_FORTRAN_S1_g)
318H5_DLLVAR hid_t H5T_FORTRAN_S1_g;
319
320/*
321 * These types are for Intel CPU's.  They are little endian with IEEE
322 * floating point.
323 */
324#define H5T_INTEL_I8            H5T_STD_I8LE
325#define H5T_INTEL_I16           H5T_STD_I16LE
326#define H5T_INTEL_I32           H5T_STD_I32LE
327#define H5T_INTEL_I64           H5T_STD_I64LE
328#define H5T_INTEL_U8            H5T_STD_U8LE
329#define H5T_INTEL_U16           H5T_STD_U16LE
330#define H5T_INTEL_U32           H5T_STD_U32LE
331#define H5T_INTEL_U64           H5T_STD_U64LE
332#define H5T_INTEL_B8            H5T_STD_B8LE
333#define H5T_INTEL_B16           H5T_STD_B16LE
334#define H5T_INTEL_B32           H5T_STD_B32LE
335#define H5T_INTEL_B64           H5T_STD_B64LE
336#define H5T_INTEL_F32           H5T_IEEE_F32LE
337#define H5T_INTEL_F64           H5T_IEEE_F64LE
338
339/*
340 * These types are for DEC Alpha CPU's.  They are little endian with IEEE
341 * floating point.
342 */
343#define H5T_ALPHA_I8            H5T_STD_I8LE
344#define H5T_ALPHA_I16           H5T_STD_I16LE
345#define H5T_ALPHA_I32           H5T_STD_I32LE
346#define H5T_ALPHA_I64           H5T_STD_I64LE
347#define H5T_ALPHA_U8            H5T_STD_U8LE
348#define H5T_ALPHA_U16           H5T_STD_U16LE
349#define H5T_ALPHA_U32           H5T_STD_U32LE
350#define H5T_ALPHA_U64           H5T_STD_U64LE
351#define H5T_ALPHA_B8            H5T_STD_B8LE
352#define H5T_ALPHA_B16           H5T_STD_B16LE
353#define H5T_ALPHA_B32           H5T_STD_B32LE
354#define H5T_ALPHA_B64           H5T_STD_B64LE
355#define H5T_ALPHA_F32           H5T_IEEE_F32LE
356#define H5T_ALPHA_F64           H5T_IEEE_F64LE
357
358/*
359 * These types are for MIPS cpu's commonly used in SGI systems. They are big
360 * endian with IEEE floating point.
361 */
362#define H5T_MIPS_I8             H5T_STD_I8BE
363#define H5T_MIPS_I16            H5T_STD_I16BE
364#define H5T_MIPS_I32            H5T_STD_I32BE
365#define H5T_MIPS_I64            H5T_STD_I64BE
366#define H5T_MIPS_U8             H5T_STD_U8BE
367#define H5T_MIPS_U16            H5T_STD_U16BE
368#define H5T_MIPS_U32            H5T_STD_U32BE
369#define H5T_MIPS_U64            H5T_STD_U64BE
370#define H5T_MIPS_B8             H5T_STD_B8BE
371#define H5T_MIPS_B16            H5T_STD_B16BE
372#define H5T_MIPS_B32            H5T_STD_B32BE
373#define H5T_MIPS_B64            H5T_STD_B64BE
374#define H5T_MIPS_F32            H5T_IEEE_F32BE
375#define H5T_MIPS_F64            H5T_IEEE_F64BE
376
377/*
378 * The VAX floating point types (i.e. in VAX byte order)
379 */
380#define H5T_VAX_F32             (H5OPEN H5T_VAX_F32_g)
381#define H5T_VAX_F64             (H5OPEN H5T_VAX_F64_g)
382H5_DLLVAR hid_t H5T_VAX_F32_g;
383H5_DLLVAR hid_t H5T_VAX_F64_g;
384
385/*
386 * The predefined native types. These are the types detected by H5detect and
387 * they violate the naming scheme a little.  Instead of a class name,
388 * precision and byte order as the last component, they have a C-like type
389 * name.  If the type begins with `U' then it is the unsigned version of the
390 * integer type; other integer types are signed.  The type LLONG corresponds
391 * to C's `long_long' and LDOUBLE is `long double' (these types might be the
392 * same as `LONG' and `DOUBLE' respectively).
393 */
394#define H5T_NATIVE_CHAR         (CHAR_MIN?H5T_NATIVE_SCHAR:H5T_NATIVE_UCHAR)
395#define H5T_NATIVE_SCHAR        (H5OPEN H5T_NATIVE_SCHAR_g)
396#define H5T_NATIVE_UCHAR        (H5OPEN H5T_NATIVE_UCHAR_g)
397#define H5T_NATIVE_SHORT        (H5OPEN H5T_NATIVE_SHORT_g)
398#define H5T_NATIVE_USHORT       (H5OPEN H5T_NATIVE_USHORT_g)
399#define H5T_NATIVE_INT          (H5OPEN H5T_NATIVE_INT_g)
400#define H5T_NATIVE_UINT         (H5OPEN H5T_NATIVE_UINT_g)
401#define H5T_NATIVE_LONG         (H5OPEN H5T_NATIVE_LONG_g)
402#define H5T_NATIVE_ULONG        (H5OPEN H5T_NATIVE_ULONG_g)
403#define H5T_NATIVE_LLONG        (H5OPEN H5T_NATIVE_LLONG_g)
404#define H5T_NATIVE_ULLONG       (H5OPEN H5T_NATIVE_ULLONG_g)
405#define H5T_NATIVE_FLOAT        (H5OPEN H5T_NATIVE_FLOAT_g)
406#define H5T_NATIVE_DOUBLE       (H5OPEN H5T_NATIVE_DOUBLE_g)
407#if H5_SIZEOF_LONG_DOUBLE !=0
408#define H5T_NATIVE_LDOUBLE      (H5OPEN H5T_NATIVE_LDOUBLE_g)
409#endif
410#define H5T_NATIVE_B8           (H5OPEN H5T_NATIVE_B8_g)
411#define H5T_NATIVE_B16          (H5OPEN H5T_NATIVE_B16_g)
412#define H5T_NATIVE_B32          (H5OPEN H5T_NATIVE_B32_g)
413#define H5T_NATIVE_B64          (H5OPEN H5T_NATIVE_B64_g)
414#define H5T_NATIVE_OPAQUE       (H5OPEN H5T_NATIVE_OPAQUE_g)
415#define H5T_NATIVE_HADDR        (H5OPEN H5T_NATIVE_HADDR_g)
416#define H5T_NATIVE_HSIZE        (H5OPEN H5T_NATIVE_HSIZE_g)
417#define H5T_NATIVE_HSSIZE       (H5OPEN H5T_NATIVE_HSSIZE_g)
418#define H5T_NATIVE_HERR         (H5OPEN H5T_NATIVE_HERR_g)
419#define H5T_NATIVE_HBOOL        (H5OPEN H5T_NATIVE_HBOOL_g)
420H5_DLLVAR hid_t H5T_NATIVE_SCHAR_g;
421H5_DLLVAR hid_t H5T_NATIVE_UCHAR_g;
422H5_DLLVAR hid_t H5T_NATIVE_SHORT_g;
423H5_DLLVAR hid_t H5T_NATIVE_USHORT_g;
424H5_DLLVAR hid_t H5T_NATIVE_INT_g;
425H5_DLLVAR hid_t H5T_NATIVE_UINT_g;
426H5_DLLVAR hid_t H5T_NATIVE_LONG_g;
427H5_DLLVAR hid_t H5T_NATIVE_ULONG_g;
428H5_DLLVAR hid_t H5T_NATIVE_LLONG_g;
429H5_DLLVAR hid_t H5T_NATIVE_ULLONG_g;
430H5_DLLVAR hid_t H5T_NATIVE_FLOAT_g;
431H5_DLLVAR hid_t H5T_NATIVE_DOUBLE_g;
432#if H5_SIZEOF_LONG_DOUBLE !=0
433H5_DLLVAR hid_t H5T_NATIVE_LDOUBLE_g;
434#endif
435H5_DLLVAR hid_t H5T_NATIVE_B8_g;
436H5_DLLVAR hid_t H5T_NATIVE_B16_g;
437H5_DLLVAR hid_t H5T_NATIVE_B32_g;
438H5_DLLVAR hid_t H5T_NATIVE_B64_g;
439H5_DLLVAR hid_t H5T_NATIVE_OPAQUE_g;
440H5_DLLVAR hid_t H5T_NATIVE_HADDR_g;
441H5_DLLVAR hid_t H5T_NATIVE_HSIZE_g;
442H5_DLLVAR hid_t H5T_NATIVE_HSSIZE_g;
443H5_DLLVAR hid_t H5T_NATIVE_HERR_g;
444H5_DLLVAR hid_t H5T_NATIVE_HBOOL_g;
445
446/* C9x integer types */
447#define H5T_NATIVE_INT8                 (H5OPEN H5T_NATIVE_INT8_g)
448#define H5T_NATIVE_UINT8                (H5OPEN H5T_NATIVE_UINT8_g)
449#define H5T_NATIVE_INT_LEAST8           (H5OPEN H5T_NATIVE_INT_LEAST8_g)
450#define H5T_NATIVE_UINT_LEAST8          (H5OPEN H5T_NATIVE_UINT_LEAST8_g)
451#define H5T_NATIVE_INT_FAST8            (H5OPEN H5T_NATIVE_INT_FAST8_g)
452#define H5T_NATIVE_UINT_FAST8           (H5OPEN H5T_NATIVE_UINT_FAST8_g)
453H5_DLLVAR hid_t H5T_NATIVE_INT8_g;
454H5_DLLVAR hid_t H5T_NATIVE_UINT8_g;
455H5_DLLVAR hid_t H5T_NATIVE_INT_LEAST8_g;
456H5_DLLVAR hid_t H5T_NATIVE_UINT_LEAST8_g;
457H5_DLLVAR hid_t H5T_NATIVE_INT_FAST8_g;
458H5_DLLVAR hid_t H5T_NATIVE_UINT_FAST8_g;
459
460#define H5T_NATIVE_INT16                (H5OPEN H5T_NATIVE_INT16_g)
461#define H5T_NATIVE_UINT16               (H5OPEN H5T_NATIVE_UINT16_g)
462#define H5T_NATIVE_INT_LEAST16          (H5OPEN H5T_NATIVE_INT_LEAST16_g)
463#define H5T_NATIVE_UINT_LEAST16         (H5OPEN H5T_NATIVE_UINT_LEAST16_g)
464#define H5T_NATIVE_INT_FAST16           (H5OPEN H5T_NATIVE_INT_FAST16_g)
465#define H5T_NATIVE_UINT_FAST16          (H5OPEN H5T_NATIVE_UINT_FAST16_g)
466H5_DLLVAR hid_t H5T_NATIVE_INT16_g;
467H5_DLLVAR hid_t H5T_NATIVE_UINT16_g;
468H5_DLLVAR hid_t H5T_NATIVE_INT_LEAST16_g;
469H5_DLLVAR hid_t H5T_NATIVE_UINT_LEAST16_g;
470H5_DLLVAR hid_t H5T_NATIVE_INT_FAST16_g;
471H5_DLLVAR hid_t H5T_NATIVE_UINT_FAST16_g;
472
473#define H5T_NATIVE_INT32                (H5OPEN H5T_NATIVE_INT32_g)
474#define H5T_NATIVE_UINT32               (H5OPEN H5T_NATIVE_UINT32_g)
475#define H5T_NATIVE_INT_LEAST32          (H5OPEN H5T_NATIVE_INT_LEAST32_g)
476#define H5T_NATIVE_UINT_LEAST32         (H5OPEN H5T_NATIVE_UINT_LEAST32_g)
477#define H5T_NATIVE_INT_FAST32           (H5OPEN H5T_NATIVE_INT_FAST32_g)
478#define H5T_NATIVE_UINT_FAST32          (H5OPEN H5T_NATIVE_UINT_FAST32_g)
479H5_DLLVAR hid_t H5T_NATIVE_INT32_g;
480H5_DLLVAR hid_t H5T_NATIVE_UINT32_g;
481H5_DLLVAR hid_t H5T_NATIVE_INT_LEAST32_g;
482H5_DLLVAR hid_t H5T_NATIVE_UINT_LEAST32_g;
483H5_DLLVAR hid_t H5T_NATIVE_INT_FAST32_g;
484H5_DLLVAR hid_t H5T_NATIVE_UINT_FAST32_g;
485
486#define H5T_NATIVE_INT64                (H5OPEN H5T_NATIVE_INT64_g)
487#define H5T_NATIVE_UINT64               (H5OPEN H5T_NATIVE_UINT64_g)
488#define H5T_NATIVE_INT_LEAST64          (H5OPEN H5T_NATIVE_INT_LEAST64_g)
489#define H5T_NATIVE_UINT_LEAST64         (H5OPEN H5T_NATIVE_UINT_LEAST64_g)
490#define H5T_NATIVE_INT_FAST64           (H5OPEN H5T_NATIVE_INT_FAST64_g)
491#define H5T_NATIVE_UINT_FAST64          (H5OPEN H5T_NATIVE_UINT_FAST64_g)
492H5_DLLVAR hid_t H5T_NATIVE_INT64_g;
493H5_DLLVAR hid_t H5T_NATIVE_UINT64_g;
494H5_DLLVAR hid_t H5T_NATIVE_INT_LEAST64_g;
495H5_DLLVAR hid_t H5T_NATIVE_UINT_LEAST64_g;
496H5_DLLVAR hid_t H5T_NATIVE_INT_FAST64_g;
497H5_DLLVAR hid_t H5T_NATIVE_UINT_FAST64_g;
498
499/* Operations defined on all datatypes */
500H5_DLL hid_t H5Tcreate(H5T_class_t type, size_t size);
501H5_DLL hid_t H5Tcopy(hid_t type_id);
502H5_DLL herr_t H5Tclose(hid_t type_id);
503H5_DLL htri_t H5Tequal(hid_t type1_id, hid_t type2_id);
504H5_DLL herr_t H5Tlock(hid_t type_id);
505H5_DLL herr_t H5Tcommit2(hid_t loc_id, const char *name, hid_t type_id,
506    hid_t lcpl_id, hid_t tcpl_id, hid_t tapl_id);
507H5_DLL hid_t H5Topen2(hid_t loc_id, const char *name, hid_t tapl_id);
508H5_DLL herr_t H5Tcommit_anon(hid_t loc_id, hid_t type_id, hid_t tcpl_id, hid_t tapl_id);
509H5_DLL hid_t H5Tget_create_plist(hid_t type_id);
510H5_DLL htri_t H5Tcommitted(hid_t type_id);
511H5_DLL herr_t H5Tencode(hid_t obj_id, void *buf, size_t *nalloc);
512H5_DLL hid_t H5Tdecode(const void *buf);
513
514/* Operations defined on compound datatypes */
515H5_DLL herr_t H5Tinsert(hid_t parent_id, const char *name, size_t offset,
516                         hid_t member_id);
517H5_DLL herr_t H5Tpack(hid_t type_id);
518
519/* Operations defined on enumeration datatypes */
520H5_DLL hid_t H5Tenum_create(hid_t base_id);
521H5_DLL herr_t H5Tenum_insert(hid_t type, const char *name, const void *value);
522H5_DLL herr_t H5Tenum_nameof(hid_t type, const void *value, char *name/*out*/,
523                             size_t size);
524H5_DLL herr_t H5Tenum_valueof(hid_t type, const char *name,
525                              void *value/*out*/);
526
527/* Operations defined on variable-length datatypes */
528H5_DLL hid_t H5Tvlen_create(hid_t base_id);
529
530/* Operations defined on array datatypes */
531H5_DLL hid_t H5Tarray_create2(hid_t base_id, unsigned ndims,
532            const hsize_t dim[/* ndims */]);
533H5_DLL int H5Tget_array_ndims(hid_t type_id);
534H5_DLL int H5Tget_array_dims2(hid_t type_id, hsize_t dims[]);
535
536/* Operations defined on opaque datatypes */
537H5_DLL herr_t H5Tset_tag(hid_t type, const char *tag);
538H5_DLL char *H5Tget_tag(hid_t type);
539
540/* Querying property values */
541H5_DLL hid_t H5Tget_super(hid_t type);
542H5_DLL H5T_class_t H5Tget_class(hid_t type_id);
543H5_DLL htri_t H5Tdetect_class(hid_t type_id, H5T_class_t cls);
544H5_DLL size_t H5Tget_size(hid_t type_id);
545H5_DLL H5T_order_t H5Tget_order(hid_t type_id);
546H5_DLL size_t H5Tget_precision(hid_t type_id);
547H5_DLL int H5Tget_offset(hid_t type_id);
548H5_DLL herr_t H5Tget_pad(hid_t type_id, H5T_pad_t *lsb/*out*/,
549                          H5T_pad_t *msb/*out*/);
550H5_DLL H5T_sign_t H5Tget_sign(hid_t type_id);
551H5_DLL herr_t H5Tget_fields(hid_t type_id, size_t *spos/*out*/,
552                             size_t *epos/*out*/, size_t *esize/*out*/,
553                             size_t *mpos/*out*/, size_t *msize/*out*/);
554H5_DLL size_t H5Tget_ebias(hid_t type_id);
555H5_DLL H5T_norm_t H5Tget_norm(hid_t type_id);
556H5_DLL H5T_pad_t H5Tget_inpad(hid_t type_id);
557H5_DLL H5T_str_t H5Tget_strpad(hid_t type_id);
558H5_DLL int H5Tget_nmembers(hid_t type_id);
559H5_DLL char *H5Tget_member_name(hid_t type_id, unsigned membno);
560H5_DLL int H5Tget_member_index(hid_t type_id, const char *name);
561H5_DLL size_t H5Tget_member_offset(hid_t type_id, unsigned membno);
562H5_DLL H5T_class_t H5Tget_member_class(hid_t type_id, unsigned membno);
563H5_DLL hid_t H5Tget_member_type(hid_t type_id, unsigned membno);
564H5_DLL herr_t H5Tget_member_value(hid_t type_id, unsigned membno, void *value/*out*/);
565H5_DLL H5T_cset_t H5Tget_cset(hid_t type_id);
566H5_DLL htri_t H5Tis_variable_str(hid_t type_id);
567H5_DLL hid_t H5Tget_native_type(hid_t type_id, H5T_direction_t direction);
568
569/* Setting property values */
570H5_DLL herr_t H5Tset_size(hid_t type_id, size_t size);
571H5_DLL herr_t H5Tset_order(hid_t type_id, H5T_order_t order);
572H5_DLL herr_t H5Tset_precision(hid_t type_id, size_t prec);
573H5_DLL herr_t H5Tset_offset(hid_t type_id, size_t offset);
574H5_DLL herr_t H5Tset_pad(hid_t type_id, H5T_pad_t lsb, H5T_pad_t msb);
575H5_DLL herr_t H5Tset_sign(hid_t type_id, H5T_sign_t sign);
576H5_DLL herr_t H5Tset_fields(hid_t type_id, size_t spos, size_t epos,
577                             size_t esize, size_t mpos, size_t msize);
578H5_DLL herr_t H5Tset_ebias(hid_t type_id, size_t ebias);
579H5_DLL herr_t H5Tset_norm(hid_t type_id, H5T_norm_t norm);
580H5_DLL herr_t H5Tset_inpad(hid_t type_id, H5T_pad_t pad);
581H5_DLL herr_t H5Tset_cset(hid_t type_id, H5T_cset_t cset);
582H5_DLL herr_t H5Tset_strpad(hid_t type_id, H5T_str_t strpad);
583
584/* Type conversion database */
585H5_DLL herr_t H5Tregister(H5T_pers_t pers, const char *name, hid_t src_id,
586                           hid_t dst_id, H5T_conv_t func);
587H5_DLL herr_t H5Tunregister(H5T_pers_t pers, const char *name, hid_t src_id,
588                             hid_t dst_id, H5T_conv_t func);
589H5_DLL H5T_conv_t H5Tfind(hid_t src_id, hid_t dst_id, H5T_cdata_t **pcdata);
590H5_DLL htri_t H5Tcompiler_conv(hid_t src_id, hid_t dst_id);
591H5_DLL herr_t H5Tconvert(hid_t src_id, hid_t dst_id, size_t nelmts,
592                          void *buf, void *background, hid_t plist_id);
593
594/* Symbols defined for compatibility with previous versions of the HDF5 API.
595 *
596 * Use of these symbols is deprecated.
597 */
598#ifndef H5_NO_DEPRECATED_SYMBOLS
599
600/* Macros */
601
602
603/* Typedefs */
604
605
606/* Function prototypes */
607H5_DLL herr_t H5Tcommit1(hid_t loc_id, const char *name, hid_t type_id);
608H5_DLL hid_t H5Topen1(hid_t loc_id, const char *name);
609H5_DLL hid_t H5Tarray_create1(hid_t base_id, int ndims,
610            const hsize_t dim[/* ndims */],
611            const int perm[/* ndims */]);
612H5_DLL int H5Tget_array_dims1(hid_t type_id, hsize_t dims[], int perm[]);
613
614#endif /* H5_NO_DEPRECATED_SYMBOLS */
615
616#ifdef __cplusplus
617}
618#endif
619#endif /* _H5Tpublic_H */
620
Note: See TracBrowser for help on using the repository browser.