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) */ |
---|
30 | typedef 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 */ |
---|
48 | typedef 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 */ |
---|
58 | typedef 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 */ |
---|
67 | typedef 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 | */ |
---|
79 | typedef 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 | */ |
---|
104 | typedef 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 */ |
---|
126 | typedef 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 */ |
---|
136 | typedef 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? */ |
---|
143 | typedef 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 */ |
---|
150 | typedef 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 */ |
---|
158 | typedef 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 */ |
---|
165 | typedef 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 */ |
---|
172 | typedef 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 */ |
---|
183 | typedef 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) */ |
---|
191 | typedef 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 |
---|
204 | extern "C" { |
---|
205 | #endif |
---|
206 | |
---|
207 | /* All datatype conversion functions are... */ |
---|
208 | typedef 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 | */ |
---|
215 | typedef 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) |
---|
233 | H5_DLLVAR hid_t H5T_IEEE_F32BE_g; |
---|
234 | H5_DLLVAR hid_t H5T_IEEE_F32LE_g; |
---|
235 | H5_DLLVAR hid_t H5T_IEEE_F64BE_g; |
---|
236 | H5_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) |
---|
268 | H5_DLLVAR hid_t H5T_STD_I8BE_g; |
---|
269 | H5_DLLVAR hid_t H5T_STD_I8LE_g; |
---|
270 | H5_DLLVAR hid_t H5T_STD_I16BE_g; |
---|
271 | H5_DLLVAR hid_t H5T_STD_I16LE_g; |
---|
272 | H5_DLLVAR hid_t H5T_STD_I32BE_g; |
---|
273 | H5_DLLVAR hid_t H5T_STD_I32LE_g; |
---|
274 | H5_DLLVAR hid_t H5T_STD_I64BE_g; |
---|
275 | H5_DLLVAR hid_t H5T_STD_I64LE_g; |
---|
276 | H5_DLLVAR hid_t H5T_STD_U8BE_g; |
---|
277 | H5_DLLVAR hid_t H5T_STD_U8LE_g; |
---|
278 | H5_DLLVAR hid_t H5T_STD_U16BE_g; |
---|
279 | H5_DLLVAR hid_t H5T_STD_U16LE_g; |
---|
280 | H5_DLLVAR hid_t H5T_STD_U32BE_g; |
---|
281 | H5_DLLVAR hid_t H5T_STD_U32LE_g; |
---|
282 | H5_DLLVAR hid_t H5T_STD_U64BE_g; |
---|
283 | H5_DLLVAR hid_t H5T_STD_U64LE_g; |
---|
284 | H5_DLLVAR hid_t H5T_STD_B8BE_g; |
---|
285 | H5_DLLVAR hid_t H5T_STD_B8LE_g; |
---|
286 | H5_DLLVAR hid_t H5T_STD_B16BE_g; |
---|
287 | H5_DLLVAR hid_t H5T_STD_B16LE_g; |
---|
288 | H5_DLLVAR hid_t H5T_STD_B32BE_g; |
---|
289 | H5_DLLVAR hid_t H5T_STD_B32LE_g; |
---|
290 | H5_DLLVAR hid_t H5T_STD_B64BE_g; |
---|
291 | H5_DLLVAR hid_t H5T_STD_B64LE_g; |
---|
292 | H5_DLLVAR hid_t H5T_STD_REF_OBJ_g; |
---|
293 | H5_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) |
---|
302 | H5_DLLVAR hid_t H5T_UNIX_D32BE_g; |
---|
303 | H5_DLLVAR hid_t H5T_UNIX_D32LE_g; |
---|
304 | H5_DLLVAR hid_t H5T_UNIX_D64BE_g; |
---|
305 | H5_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) |
---|
312 | H5_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) |
---|
318 | H5_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) |
---|
382 | H5_DLLVAR hid_t H5T_VAX_F32_g; |
---|
383 | H5_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) |
---|
420 | H5_DLLVAR hid_t H5T_NATIVE_SCHAR_g; |
---|
421 | H5_DLLVAR hid_t H5T_NATIVE_UCHAR_g; |
---|
422 | H5_DLLVAR hid_t H5T_NATIVE_SHORT_g; |
---|
423 | H5_DLLVAR hid_t H5T_NATIVE_USHORT_g; |
---|
424 | H5_DLLVAR hid_t H5T_NATIVE_INT_g; |
---|
425 | H5_DLLVAR hid_t H5T_NATIVE_UINT_g; |
---|
426 | H5_DLLVAR hid_t H5T_NATIVE_LONG_g; |
---|
427 | H5_DLLVAR hid_t H5T_NATIVE_ULONG_g; |
---|
428 | H5_DLLVAR hid_t H5T_NATIVE_LLONG_g; |
---|
429 | H5_DLLVAR hid_t H5T_NATIVE_ULLONG_g; |
---|
430 | H5_DLLVAR hid_t H5T_NATIVE_FLOAT_g; |
---|
431 | H5_DLLVAR hid_t H5T_NATIVE_DOUBLE_g; |
---|
432 | #if H5_SIZEOF_LONG_DOUBLE !=0 |
---|
433 | H5_DLLVAR hid_t H5T_NATIVE_LDOUBLE_g; |
---|
434 | #endif |
---|
435 | H5_DLLVAR hid_t H5T_NATIVE_B8_g; |
---|
436 | H5_DLLVAR hid_t H5T_NATIVE_B16_g; |
---|
437 | H5_DLLVAR hid_t H5T_NATIVE_B32_g; |
---|
438 | H5_DLLVAR hid_t H5T_NATIVE_B64_g; |
---|
439 | H5_DLLVAR hid_t H5T_NATIVE_OPAQUE_g; |
---|
440 | H5_DLLVAR hid_t H5T_NATIVE_HADDR_g; |
---|
441 | H5_DLLVAR hid_t H5T_NATIVE_HSIZE_g; |
---|
442 | H5_DLLVAR hid_t H5T_NATIVE_HSSIZE_g; |
---|
443 | H5_DLLVAR hid_t H5T_NATIVE_HERR_g; |
---|
444 | H5_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) |
---|
453 | H5_DLLVAR hid_t H5T_NATIVE_INT8_g; |
---|
454 | H5_DLLVAR hid_t H5T_NATIVE_UINT8_g; |
---|
455 | H5_DLLVAR hid_t H5T_NATIVE_INT_LEAST8_g; |
---|
456 | H5_DLLVAR hid_t H5T_NATIVE_UINT_LEAST8_g; |
---|
457 | H5_DLLVAR hid_t H5T_NATIVE_INT_FAST8_g; |
---|
458 | H5_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) |
---|
466 | H5_DLLVAR hid_t H5T_NATIVE_INT16_g; |
---|
467 | H5_DLLVAR hid_t H5T_NATIVE_UINT16_g; |
---|
468 | H5_DLLVAR hid_t H5T_NATIVE_INT_LEAST16_g; |
---|
469 | H5_DLLVAR hid_t H5T_NATIVE_UINT_LEAST16_g; |
---|
470 | H5_DLLVAR hid_t H5T_NATIVE_INT_FAST16_g; |
---|
471 | H5_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) |
---|
479 | H5_DLLVAR hid_t H5T_NATIVE_INT32_g; |
---|
480 | H5_DLLVAR hid_t H5T_NATIVE_UINT32_g; |
---|
481 | H5_DLLVAR hid_t H5T_NATIVE_INT_LEAST32_g; |
---|
482 | H5_DLLVAR hid_t H5T_NATIVE_UINT_LEAST32_g; |
---|
483 | H5_DLLVAR hid_t H5T_NATIVE_INT_FAST32_g; |
---|
484 | H5_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) |
---|
492 | H5_DLLVAR hid_t H5T_NATIVE_INT64_g; |
---|
493 | H5_DLLVAR hid_t H5T_NATIVE_UINT64_g; |
---|
494 | H5_DLLVAR hid_t H5T_NATIVE_INT_LEAST64_g; |
---|
495 | H5_DLLVAR hid_t H5T_NATIVE_UINT_LEAST64_g; |
---|
496 | H5_DLLVAR hid_t H5T_NATIVE_INT_FAST64_g; |
---|
497 | H5_DLLVAR hid_t H5T_NATIVE_UINT_FAST64_g; |
---|
498 | |
---|
499 | /* Operations defined on all datatypes */ |
---|
500 | H5_DLL hid_t H5Tcreate(H5T_class_t type, size_t size); |
---|
501 | H5_DLL hid_t H5Tcopy(hid_t type_id); |
---|
502 | H5_DLL herr_t H5Tclose(hid_t type_id); |
---|
503 | H5_DLL htri_t H5Tequal(hid_t type1_id, hid_t type2_id); |
---|
504 | H5_DLL herr_t H5Tlock(hid_t type_id); |
---|
505 | H5_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); |
---|
507 | H5_DLL hid_t H5Topen2(hid_t loc_id, const char *name, hid_t tapl_id); |
---|
508 | H5_DLL herr_t H5Tcommit_anon(hid_t loc_id, hid_t type_id, hid_t tcpl_id, hid_t tapl_id); |
---|
509 | H5_DLL hid_t H5Tget_create_plist(hid_t type_id); |
---|
510 | H5_DLL htri_t H5Tcommitted(hid_t type_id); |
---|
511 | H5_DLL herr_t H5Tencode(hid_t obj_id, void *buf, size_t *nalloc); |
---|
512 | H5_DLL hid_t H5Tdecode(const void *buf); |
---|
513 | |
---|
514 | /* Operations defined on compound datatypes */ |
---|
515 | H5_DLL herr_t H5Tinsert(hid_t parent_id, const char *name, size_t offset, |
---|
516 | hid_t member_id); |
---|
517 | H5_DLL herr_t H5Tpack(hid_t type_id); |
---|
518 | |
---|
519 | /* Operations defined on enumeration datatypes */ |
---|
520 | H5_DLL hid_t H5Tenum_create(hid_t base_id); |
---|
521 | H5_DLL herr_t H5Tenum_insert(hid_t type, const char *name, const void *value); |
---|
522 | H5_DLL herr_t H5Tenum_nameof(hid_t type, const void *value, char *name/*out*/, |
---|
523 | size_t size); |
---|
524 | H5_DLL herr_t H5Tenum_valueof(hid_t type, const char *name, |
---|
525 | void *value/*out*/); |
---|
526 | |
---|
527 | /* Operations defined on variable-length datatypes */ |
---|
528 | H5_DLL hid_t H5Tvlen_create(hid_t base_id); |
---|
529 | |
---|
530 | /* Operations defined on array datatypes */ |
---|
531 | H5_DLL hid_t H5Tarray_create2(hid_t base_id, unsigned ndims, |
---|
532 | const hsize_t dim[/* ndims */]); |
---|
533 | H5_DLL int H5Tget_array_ndims(hid_t type_id); |
---|
534 | H5_DLL int H5Tget_array_dims2(hid_t type_id, hsize_t dims[]); |
---|
535 | |
---|
536 | /* Operations defined on opaque datatypes */ |
---|
537 | H5_DLL herr_t H5Tset_tag(hid_t type, const char *tag); |
---|
538 | H5_DLL char *H5Tget_tag(hid_t type); |
---|
539 | |
---|
540 | /* Querying property values */ |
---|
541 | H5_DLL hid_t H5Tget_super(hid_t type); |
---|
542 | H5_DLL H5T_class_t H5Tget_class(hid_t type_id); |
---|
543 | H5_DLL htri_t H5Tdetect_class(hid_t type_id, H5T_class_t cls); |
---|
544 | H5_DLL size_t H5Tget_size(hid_t type_id); |
---|
545 | H5_DLL H5T_order_t H5Tget_order(hid_t type_id); |
---|
546 | H5_DLL size_t H5Tget_precision(hid_t type_id); |
---|
547 | H5_DLL int H5Tget_offset(hid_t type_id); |
---|
548 | H5_DLL herr_t H5Tget_pad(hid_t type_id, H5T_pad_t *lsb/*out*/, |
---|
549 | H5T_pad_t *msb/*out*/); |
---|
550 | H5_DLL H5T_sign_t H5Tget_sign(hid_t type_id); |
---|
551 | H5_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*/); |
---|
554 | H5_DLL size_t H5Tget_ebias(hid_t type_id); |
---|
555 | H5_DLL H5T_norm_t H5Tget_norm(hid_t type_id); |
---|
556 | H5_DLL H5T_pad_t H5Tget_inpad(hid_t type_id); |
---|
557 | H5_DLL H5T_str_t H5Tget_strpad(hid_t type_id); |
---|
558 | H5_DLL int H5Tget_nmembers(hid_t type_id); |
---|
559 | H5_DLL char *H5Tget_member_name(hid_t type_id, unsigned membno); |
---|
560 | H5_DLL int H5Tget_member_index(hid_t type_id, const char *name); |
---|
561 | H5_DLL size_t H5Tget_member_offset(hid_t type_id, unsigned membno); |
---|
562 | H5_DLL H5T_class_t H5Tget_member_class(hid_t type_id, unsigned membno); |
---|
563 | H5_DLL hid_t H5Tget_member_type(hid_t type_id, unsigned membno); |
---|
564 | H5_DLL herr_t H5Tget_member_value(hid_t type_id, unsigned membno, void *value/*out*/); |
---|
565 | H5_DLL H5T_cset_t H5Tget_cset(hid_t type_id); |
---|
566 | H5_DLL htri_t H5Tis_variable_str(hid_t type_id); |
---|
567 | H5_DLL hid_t H5Tget_native_type(hid_t type_id, H5T_direction_t direction); |
---|
568 | |
---|
569 | /* Setting property values */ |
---|
570 | H5_DLL herr_t H5Tset_size(hid_t type_id, size_t size); |
---|
571 | H5_DLL herr_t H5Tset_order(hid_t type_id, H5T_order_t order); |
---|
572 | H5_DLL herr_t H5Tset_precision(hid_t type_id, size_t prec); |
---|
573 | H5_DLL herr_t H5Tset_offset(hid_t type_id, size_t offset); |
---|
574 | H5_DLL herr_t H5Tset_pad(hid_t type_id, H5T_pad_t lsb, H5T_pad_t msb); |
---|
575 | H5_DLL herr_t H5Tset_sign(hid_t type_id, H5T_sign_t sign); |
---|
576 | H5_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); |
---|
578 | H5_DLL herr_t H5Tset_ebias(hid_t type_id, size_t ebias); |
---|
579 | H5_DLL herr_t H5Tset_norm(hid_t type_id, H5T_norm_t norm); |
---|
580 | H5_DLL herr_t H5Tset_inpad(hid_t type_id, H5T_pad_t pad); |
---|
581 | H5_DLL herr_t H5Tset_cset(hid_t type_id, H5T_cset_t cset); |
---|
582 | H5_DLL herr_t H5Tset_strpad(hid_t type_id, H5T_str_t strpad); |
---|
583 | |
---|
584 | /* Type conversion database */ |
---|
585 | H5_DLL herr_t H5Tregister(H5T_pers_t pers, const char *name, hid_t src_id, |
---|
586 | hid_t dst_id, H5T_conv_t func); |
---|
587 | H5_DLL herr_t H5Tunregister(H5T_pers_t pers, const char *name, hid_t src_id, |
---|
588 | hid_t dst_id, H5T_conv_t func); |
---|
589 | H5_DLL H5T_conv_t H5Tfind(hid_t src_id, hid_t dst_id, H5T_cdata_t **pcdata); |
---|
590 | H5_DLL htri_t H5Tcompiler_conv(hid_t src_id, hid_t dst_id); |
---|
591 | H5_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 */ |
---|
607 | H5_DLL herr_t H5Tcommit1(hid_t loc_id, const char *name, hid_t type_id); |
---|
608 | H5_DLL hid_t H5Topen1(hid_t loc_id, const char *name); |
---|
609 | H5_DLL hid_t H5Tarray_create1(hid_t base_id, int ndims, |
---|
610 | const hsize_t dim[/* ndims */], |
---|
611 | const int perm[/* ndims */]); |
---|
612 | H5_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 | |
---|