diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/.distdep | 98 | ||||
-rw-r--r-- | src/H5.c | 17 | ||||
-rw-r--r-- | src/H5Odtype.c | 10 | ||||
-rw-r--r-- | src/H5T.c | 49 | ||||
-rw-r--r-- | src/H5Tconv.c | 228 | ||||
-rw-r--r-- | src/H5Tpkg.h | 2 | ||||
-rw-r--r-- | src/H5Tpublic.h | 49 |
7 files changed, 363 insertions, 90 deletions
diff --git a/src/.distdep b/src/.distdep index 499fcc6..917a475 100644 --- a/src/.distdep +++ b/src/.distdep @@ -341,29 +341,6 @@ H5Ocont.o: \ H5HGpublic.h \ H5Tprivate.h \ H5Tpublic.h -H5Odtype.o: \ - H5Odtype.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5Ipublic.h \ - H5Gprivate.h \ - H5Gpublic.h \ - H5Bprivate.h \ - H5Bpublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Dpublic.h \ - H5MMprivate.h \ - H5MMpublic.h \ - H5Oprivate.h \ - H5Opublic.h \ - H5HGprivate.h \ - H5HGpublic.h \ - H5Tprivate.h \ - H5Tpublic.h H5Olayout.o: \ H5Olayout.c \ H5private.h \ @@ -630,29 +607,6 @@ H5Tbit.o: \ H5Tprivate.h \ H5Tpublic.h \ H5Gprivate.h -H5Tconv.o: \ - H5Tconv.c \ - H5Iprivate.h \ - H5Ipublic.h \ - H5public.h \ - H5config.h \ - H5private.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5MMprivate.h \ - H5MMpublic.h \ - H5Tpkg.h \ - H5HGprivate.h \ - H5HGpublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Dpublic.h \ - H5Tprivate.h \ - H5Tpublic.h \ - H5Gprivate.h \ - H5Gpublic.h \ - H5Bprivate.h \ - H5Bpublic.h H5Tinit.o: \ H5Tinit.c \ H5private.h \ @@ -979,6 +933,19 @@ H5S.o: \ H5HGprivate.h \ H5HGpublic.h \ H5Tprivate.h +H5Flow.o: \ + H5Flow.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5Ipublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Dpublic.h \ + H5MMprivate.h \ + H5MMpublic.h H5.o: \ H5.c \ H5private.h \ @@ -1076,19 +1043,29 @@ H5F.o: \ H5Epublic.h \ H5MMprivate.h \ H5MMpublic.h -H5Flow.o: \ - H5Flow.c \ +H5Odtype.o: \ + H5Odtype.c \ H5private.h \ H5public.h \ H5config.h \ H5Eprivate.h \ H5Epublic.h \ H5Ipublic.h \ + H5Gprivate.h \ + H5Gpublic.h \ + H5Bprivate.h \ + H5Bpublic.h \ H5Fprivate.h \ H5Fpublic.h \ H5Dpublic.h \ H5MMprivate.h \ - H5MMpublic.h + H5MMpublic.h \ + H5Oprivate.h \ + H5Opublic.h \ + H5HGprivate.h \ + H5HGpublic.h \ + H5Tprivate.h \ + H5Tpublic.h H5T.o: \ H5T.c \ H5private.h \ @@ -1117,3 +1094,26 @@ H5T.o: \ H5Eprivate.h \ H5Epublic.h \ H5MMprivate.h +H5Tconv.o: \ + H5Tconv.c \ + H5Iprivate.h \ + H5Ipublic.h \ + H5public.h \ + H5config.h \ + H5private.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5MMprivate.h \ + H5MMpublic.h \ + H5Tpkg.h \ + H5HGprivate.h \ + H5HGpublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Dpublic.h \ + H5Tprivate.h \ + H5Tpublic.h \ + H5Gprivate.h \ + H5Gpublic.h \ + H5Bprivate.h \ + H5Bpublic.h @@ -1987,19 +1987,22 @@ H5_trace (hbool_t returning, const char *func, const char *type, ...) fprintf(out, "NULL"); } } else { - H5T_str_t str = va_arg (ap, H5T_str_t); + H5T_str_t str = va_arg(ap, H5T_str_t); switch (str) { case H5T_STR_ERROR: - fprintf (out, "H5T_STR_ERROR"); + fprintf(out, "H5T_STR_ERROR"); break; - case H5T_STR_NULL: - fprintf (out, "H5T_STR_NULL"); + case H5T_STR_NULLTERM: + fprintf(out, "H5T_STR_NULLTERM"); break; - case H5T_STR_SPACE: - fprintf (out, "H5T_STR_SPACE"); + case H5T_STR_NULLPAD: + fprintf(out, "H5T_STR_NULLPAD"); + break; + case H5T_STR_SPACEPAD: + fprintf(out, "H5T_STR_SPACEPAD"); break; default: - fprintf (out, "%ld", (long)str); + fprintf(out, "%ld", (long)str); break; } } diff --git a/src/H5Odtype.c b/src/H5Odtype.c index 8e44223..d4a4d6f 100644 --- a/src/H5Odtype.c +++ b/src/H5Odtype.c @@ -122,8 +122,9 @@ H5O_dtype_decode_helper(const uint8 **pp, H5T_t *dt) dt->u.atomic.offset = 0; dt->u.atomic.lsb_pad = H5T_PAD_ZERO; dt->u.atomic.msb_pad = H5T_PAD_ZERO; - dt->u.atomic.u.s.cset = H5T_CSET_ASCII; - dt->u.atomic.u.s.pad = H5T_STR_NULL; + + dt->u.atomic.u.s.pad = flags & 0x0f; + dt->u.atomic.u.s.cset = (flags>>4) & 0x0f; break; case H5T_FLOAT: @@ -327,8 +328,9 @@ H5O_dtype_encode_helper(uint8 **pp, const H5T_t *dt) assert (dt->u.atomic.offset == 0); assert (dt->u.atomic.lsb_pad == H5T_PAD_ZERO); assert (dt->u.atomic.msb_pad == H5T_PAD_ZERO); - assert (dt->u.atomic.u.s.cset == H5T_CSET_ASCII); - assert (dt->u.atomic.u.s.pad == H5T_STR_NULL); + + flags |= (dt->u.atomic.u.s.pad & 0x0f); + flags |= (dt->u.atomic.u.s.cset & 0x0f) << 4; break; case H5T_FLOAT: @@ -534,7 +534,7 @@ H5T_init_interface(void) dt->u.atomic.lsb_pad = H5T_PAD_ZERO; dt->u.atomic.msb_pad = H5T_PAD_ZERO; dt->u.atomic.u.s.cset = H5T_CSET_ASCII; - dt->u.atomic.u.s.pad = H5T_STR_NULL; + dt->u.atomic.u.s.pad = H5T_STR_NULLTERM; if ((H5T_C_S1_g = H5I_register(H5_DATATYPE, dt)) < 0) { HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't initialize H5T layer"); @@ -560,7 +560,7 @@ H5T_init_interface(void) dt->u.atomic.lsb_pad = H5T_PAD_ZERO; dt->u.atomic.msb_pad = H5T_PAD_ZERO; dt->u.atomic.u.s.cset = H5T_CSET_ASCII; - dt->u.atomic.u.s.pad = H5T_STR_SPACE; + dt->u.atomic.u.s.pad = H5T_STR_SPACEPAD; if ((H5T_FORTRAN_S1_g = H5I_register(H5_DATATYPE, dt)) < 0) { HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "can't initialize H5T layer"); @@ -570,22 +570,23 @@ H5T_init_interface(void) * Register conversion functions beginning with the most general and * ending with the most specific. */ - if (H5Tregister_soft ("i_i", H5T_INTEGER, H5T_INTEGER, - H5T_conv_i_i) < 0) { + if (H5Tregister_soft ("i_i", H5T_INTEGER, H5T_INTEGER, H5T_conv_i_i)<0) { HRETURN_ERROR (H5E_DATATYPE, H5E_CANTINIT, FAIL, "unable to register conversion function"); } - if (H5Tregister_soft ("f_f", H5T_FLOAT, H5T_FLOAT, - H5T_conv_f_f) < 0) { + if (H5Tregister_soft ("f_f", H5T_FLOAT, H5T_FLOAT, H5T_conv_f_f)<0) { HRETURN_ERROR (H5E_DATATYPE, H5E_CANTINIT, FAIL, "unable to register conversion function"); } - if (H5Tregister_soft("ibo", H5T_INTEGER, H5T_INTEGER, - H5T_conv_order) < 0) { + if (H5Tregister_soft("s_s", H5T_STRING, H5T_STRING, H5T_conv_s_s)<0) { HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "unable to register conversion function"); } - if (H5Tregister_soft("fbo", H5T_FLOAT, H5T_FLOAT, H5T_conv_order) < 0) { + if (H5Tregister_soft("ibo", H5T_INTEGER, H5T_INTEGER, H5T_conv_order)<0) { + HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, + "unable to register conversion function"); + } + if (H5Tregister_soft("fbo", H5T_FLOAT, H5T_FLOAT, H5T_conv_order)<0) { HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "unable to register conversion function"); } @@ -1503,8 +1504,7 @@ H5Tget_precision (hid_t type_id) * and then the size is increased to insure that significant * bits do not "hang over" the edge of the data type. * - * Changing the precision of an H5T_STRING automatically changes - * the size as well. The precision must be a multiple of 8. + * The precision property of strings is read-only. * * When decreasing the precision of a floating point type, set * the locations and sizes of the sign, mantissa, and exponent @@ -1564,13 +1564,8 @@ H5Tset_precision (hid_t type_id, size_t prec) break; case H5T_STRING: - if (prec % 8) { - HRETURN_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, - "precision for this type must be a multiple of 8"); - } - offset = 0; - size = prec / 8; - break; + HRETURN_ERROR(H5E_ARGS, H5E_UNSUPPORTED, FAIL, + "precision for this type is read-only"); case H5T_FLOAT: /* @@ -2424,6 +2419,16 @@ H5Tget_strpad (hid_t type_id) * Fortran left-justifies and space-pads strings. This property * defines the storage mechanism for the string. * + * When converting from a long string to a short string if the + * short string is H5T_STR_NULLPAD or H5T_STR_SPACEPAD then the + * string is simply truncated; otherwise if the short string is + * H5T_STR_NULLTERM it will be truncated and a null terminator + * is appended. + * + * When converting from a short string to a long string, the + * long string is padded on the end by appending nulls or + * spaces. + * * Return: Success: SUCCEED * * Failure: FAIL @@ -4245,17 +4250,17 @@ H5T_cmp(const H5T_t *dt1, const H5T_t *dt2) break; case H5T_STRING: - if (dt1->u.atomic.u.s.cset < dt1->u.atomic.u.s.cset) { + if (dt1->u.atomic.u.s.cset < dt2->u.atomic.u.s.cset) { HGOTO_DONE(-1); } - if (dt1->u.atomic.u.s.cset > dt1->u.atomic.u.s.cset) { + if (dt1->u.atomic.u.s.cset > dt2->u.atomic.u.s.cset) { HGOTO_DONE(1); } - if (dt1->u.atomic.u.s.pad < dt1->u.atomic.u.s.pad) { + if (dt1->u.atomic.u.s.pad < dt2->u.atomic.u.s.pad) { HGOTO_DONE(-1); } - if (dt1->u.atomic.u.s.pad > dt1->u.atomic.u.s.pad) { + if (dt1->u.atomic.u.s.pad > dt2->u.atomic.u.s.pad) { HGOTO_DONE(1); } diff --git a/src/H5Tconv.c b/src/H5Tconv.c index c940474..ce0df3e 100644 --- a/src/H5Tconv.c +++ b/src/H5Tconv.c @@ -1321,6 +1321,234 @@ H5T_conv_f_f (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, /*------------------------------------------------------------------------- + * Function: H5T_conv_s_s + * + * Purpose: Convert one fixed-length string type to another. + * + * Return: Success: SUCCEED + * + * Failure: FAIL + * + * Programmer: Robb Matzke + * Friday, August 7, 1998 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +herr_t +H5T_conv_s_s (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts, + void *buf, void __unused__ *bkg) +{ + H5T_t *src=NULL; /*source data type */ + H5T_t *dst=NULL; /*destination data type */ + intn direction; /*direction of traversal */ + size_t elmtno; /*element number */ + size_t olap; /*num overlapping elements */ + size_t nchars; /*number of characters copied */ + uint8 *s, *sp, *d, *dp; /*src and dst traversal pointers*/ + uint8 *dbuf=NULL; /*temp buf for overlap convers. */ + herr_t ret_value=FAIL; /*return value */ + + FUNC_ENTER(H5T_conv_s_s, FAIL); + + switch (cdata->command) { + case H5T_CONV_INIT: + if (H5_DATATYPE!=H5I_group(src_id) || + NULL==(src=H5I_object(src_id)) || + H5_DATATYPE!=H5I_group(dst_id) || + NULL==(dst=H5I_object(dst_id))) { + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data type"); + } + if (8*src->size != src->u.atomic.prec || + 8*dst->size != dst->u.atomic.prec) { + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "bad precision"); + } + if (0 != src->u.atomic.offset || + 0 != dst->u.atomic.offset) { + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "bad offset"); + } + if (H5T_CSET_ASCII != src->u.atomic.u.s.cset || + H5T_CSET_ASCII != dst->u.atomic.u.s.cset) { + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "bad character set"); + } + if (src->u.atomic.u.s.pad<0 || src->u.atomic.u.s.pad>=H5T_NPAD || + dst->u.atomic.u.s.pad<0 || dst->u.atomic.u.s.pad>=H5T_NPAD) { + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "bad character padding"); + } + cdata->need_bkg = H5T_BKG_NO; + break; + + case H5T_CONV_FREE: + break; + + case H5T_CONV_CONV: + /* Get the data types */ + if (H5_DATATYPE!=H5I_group(src_id) || + NULL==(src=H5I_object(src_id)) || + H5_DATATYPE!=H5I_group(dst_id) || + NULL==(dst=H5I_object(dst_id))) { + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data type"); + } + + /* + * Do we process the values from beginning to end or vice versa? Also, + * how many of the elements have the source and destination areas + * overlapping? + */ + if (src->size==dst->size) { + /* + * When the source and destination are the same size we can do + * all the conversions in place. + */ + sp = dp = (uint8*)buf; + direction = 1; + olap = 0; + } else if (src->size>=dst->size) { + sp = dp = (uint8*)buf; + direction = 1; + olap = (size_t)(ceil((double)(src->size)/ + (double)(src->size-dst->size))-1); + } else { + sp = (uint8*)buf + (nelmts-1) * src->size; + dp = (uint8*)buf + (nelmts-1) * dst->size; + direction = -1; + olap = (size_t)(ceil((double)(dst->size)/ + (double)(dst->size-src->size))-1); + } + + /* Allocate the overlap buffer */ + if (NULL==(dbuf=H5MM_malloc(dst->size))) { + HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, + "memory allocation failed for string conversion"); + } + + /* The conversion loop. */ + for (elmtno=0; elmtno<nelmts; elmtno++) { + + /* + * If the source and destination buffers overlap then use a + * temporary buffer fot eh destination. + */ + if (direction>0) { + s = sp; + d = elmtno<olap ? dbuf : dp; + } else { + s = sp; + d = elmtno >= nelmts-olap ? dbuf : dp; + } +#ifndef NDEBUG + /* I don't quite trust the overlap calculations yet --rpm */ + if (src->size==dst->size) { + assert(s==d); + } else if (d==dbuf) { + assert((dp>=sp && dp<sp+src->size) || + (sp>=dp && sp<dp+dst->size)); + } else { + assert((dp<sp && dp+dst->size<=sp) || + (sp<dp && sp+src->size<=dp)); + } +#endif + + /* Copy characters from source to destination */ + switch (src->u.atomic.u.s.pad) { + case H5T_STR_NULLTERM: + for (nchars=0; + nchars<dst->size && nchars<src->size && s[nchars]; + nchars++) { + d[nchars] = s[nchars]; + } + break; + + case H5T_STR_NULLPAD: + for (nchars=0; + nchars<dst->size && nchars<src->size && s[nchars]; + nchars++) { + d[nchars] = s[nchars]; + } + break; + + case H5T_STR_SPACEPAD: + nchars = src->size; + while (nchars>0 && ' '==s[nchars-1]) --nchars; + nchars = MIN(dst->size, nchars); + memcpy(d, s, nchars); + break; + + case H5T_STR_RESERVED_3: + case H5T_STR_RESERVED_4: + case H5T_STR_RESERVED_5: + case H5T_STR_RESERVED_6: + case H5T_STR_RESERVED_7: + case H5T_STR_RESERVED_8: + case H5T_STR_RESERVED_9: + case H5T_STR_RESERVED_10: + case H5T_STR_RESERVED_11: + case H5T_STR_RESERVED_12: + case H5T_STR_RESERVED_13: + case H5T_STR_RESERVED_14: + case H5T_STR_RESERVED_15: + case H5T_STR_ERROR: + HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, + "source string padding method not supported"); + } + + /* Terminate or pad the destination */ + switch (dst->u.atomic.u.s.pad) { + case H5T_STR_NULLTERM: + while (nchars<dst->size) d[nchars++] = '\0'; + d[dst->size-1] = '\0'; + break; + + case H5T_STR_NULLPAD: + while (nchars<dst->size) d[nchars++] = '\0'; + break; + + case H5T_STR_SPACEPAD: + while (nchars<dst->size) d[nchars++] = ' '; + break; + + case H5T_STR_RESERVED_3: + case H5T_STR_RESERVED_4: + case H5T_STR_RESERVED_5: + case H5T_STR_RESERVED_6: + case H5T_STR_RESERVED_7: + case H5T_STR_RESERVED_8: + case H5T_STR_RESERVED_9: + case H5T_STR_RESERVED_10: + case H5T_STR_RESERVED_11: + case H5T_STR_RESERVED_12: + case H5T_STR_RESERVED_13: + case H5T_STR_RESERVED_14: + case H5T_STR_RESERVED_15: + case H5T_STR_ERROR: + HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, + "destination string padding method not supported"); + } + + /* + * If we used a temporary buffer for the destination then we + * should copy the value to the true destination buffer. + */ + if (d==dbuf) HDmemcpy(dp, d, dst->size); + sp += direction * src->size; + dp += direction * dst->size; + } + break; + + default: + HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, + "unknown converson command"); + } + ret_value = SUCCEED; + + done: + H5MM_xfree(dbuf); + FUNC_LEAVE(ret_value); +} + + +/*------------------------------------------------------------------------- * Function: H5T_conv_float_double * * Purpose: Convert native `float' to native `double' using hardware. diff --git a/src/H5Tpkg.h b/src/H5Tpkg.h index 05c36a4..8068069 100644 --- a/src/H5Tpkg.h +++ b/src/H5Tpkg.h @@ -133,6 +133,8 @@ herr_t H5T_conv_i_i (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts, void *_buf, void __unused__ *bkg); herr_t H5T_conv_f_f (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts, void *_buf, void __unused__ *bkg); +herr_t H5T_conv_s_s (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, + size_t nelmts, void *_buf, void __unused__ *bkg); herr_t H5T_conv_float_double (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts, void *buf, void __unused__ *bkg); herr_t H5T_conv_double_float (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, diff --git a/src/H5Tpublic.h b/src/H5Tpublic.h index 822e053..f9d417b 100644 --- a/src/H5Tpublic.h +++ b/src/H5Tpublic.h @@ -64,22 +64,55 @@ typedef enum H5T_norm_t { /*H5T_NORM_NONE must be last */ } H5T_norm_t; -/* Character set to use for text strings */ +/* + * Character set to use for text strings. Do not change these values since + * they appear in HDF5 files! + */ typedef enum H5T_cset_t { H5T_CSET_ERROR = -1, /*error */ H5T_CSET_ASCII = 0, /*US ASCII */ - - H5T_NCSET = 1 /*this must be last! */ + H5T_CSET_RESERVED_1 = 1, /*reserved for later use */ + H5T_CSET_RESERVED_2 = 2, /*reserved for later use */ + H5T_CSET_RESERVED_3 = 3, /*reserved for later use */ + H5T_CSET_RESERVED_4 = 4, /*reserved for later use */ + H5T_CSET_RESERVED_5 = 5, /*reserved for later use */ + H5T_CSET_RESERVED_6 = 6, /*reserved for later use */ + H5T_CSET_RESERVED_7 = 7, /*reserved for later use */ + H5T_CSET_RESERVED_8 = 8, /*reserved for later use */ + H5T_CSET_RESERVED_9 = 9, /*reserved for later use */ + H5T_CSET_RESERVED_10 = 10, /*reserved for later use */ + H5T_CSET_RESERVED_11 = 11, /*reserved for later use */ + H5T_CSET_RESERVED_12 = 12, /*reserved for later use */ + H5T_CSET_RESERVED_13 = 13, /*reserved for later use */ + H5T_CSET_RESERVED_14 = 14, /*reserved for later use */ + H5T_CSET_RESERVED_15 = 15 /*reserved for later use */ } H5T_cset_t; +#define H5T_NCSET 1 /*Number of character sets actually defined */ -/* Type of padding to use in character strings */ +/* + * Type of padding to use in character strings. Do not change these values + * since they appear in HDF5 files! + */ typedef enum H5T_str_t { H5T_STR_ERROR = -1, /*error */ - H5T_STR_NULL = 0, /*pad with null term like in C */ - H5T_STR_SPACE = 1, /*pad with spaces like in Fortran */ - - H5T_NSTR = 2 /*this must be last! */ + H5T_STR_NULLTERM = 0, /*null terminate like in C */ + H5T_STR_NULLPAD = 1, /*pad with nulls */ + H5T_STR_SPACEPAD = 2, /*pad with spaces like in Fortran */ + H5T_STR_RESERVED_3 = 3, /*reserved for later use */ + H5T_STR_RESERVED_4 = 4, /*reserved for later use */ + H5T_STR_RESERVED_5 = 5, /*reserved for later use */ + H5T_STR_RESERVED_6 = 6, /*reserved for later use */ + H5T_STR_RESERVED_7 = 7, /*reserved for later use */ + H5T_STR_RESERVED_8 = 8, /*reserved for later use */ + H5T_STR_RESERVED_9 = 9, /*reserved for later use */ + H5T_STR_RESERVED_10 = 10, /*reserved for later use */ + H5T_STR_RESERVED_11 = 11, /*reserved for later use */ + H5T_STR_RESERVED_12 = 12, /*reserved for later use */ + H5T_STR_RESERVED_13 = 13, /*reserved for later use */ + H5T_STR_RESERVED_14 = 14, /*reserved for later use */ + H5T_STR_RESERVED_15 = 15 /*reserved for later use */ } H5T_str_t; +#define H5T_NSTR 3 /*num H5T_str_t types actually defined */ /* Type of padding to use in other atomic types */ typedef enum H5T_pad_t { |