From 603fa2e6c92cf1aafc2bb51daa1b89a1f66825ed Mon Sep 17 00:00:00 2001 From: Quincey Koziol Date: Wed, 27 Oct 2004 12:07:54 -0500 Subject: [svn-r9470] Purpose: Code cleanup Description: Clear up some inconsistencies, inefficiencies and possible errors between the release and development branch. Platforms tested: FreeBSD 4.10 (sleipnir) w/parallel Solaris 2.7 (arabica) Linux 2.4 (heping) w/C++ & FORTRAN --- src/H5Odtype.c | 68 ++++++++++++-------------- src/H5T.c | 86 +++------------------------------ src/H5Tarray.c | 13 +++-- src/H5Tcommit.c | 13 ++--- src/H5Tcompound.c | 10 ++-- src/H5Tenum.c | 142 +++++++++++++++++++++++++++--------------------------- src/H5Tfields.c | 2 +- src/H5Tfixed.c | 8 +-- src/H5Tnative.c | 2 +- src/H5Toffset.c | 2 +- src/H5Torder.c | 4 +- src/H5Tpad.c | 4 +- src/H5Tpkg.h | 33 ++++++++----- src/H5Tprecis.c | 6 +-- src/H5Tpublic.h | 25 +++++----- 15 files changed, 176 insertions(+), 242 deletions(-) diff --git a/src/H5Odtype.c b/src/H5Odtype.c index 7009670..a62baa8 100644 --- a/src/H5Odtype.c +++ b/src/H5Odtype.c @@ -318,10 +318,11 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt) assert(dt->shared->u.enumer.nmembs>=0); if (NULL==(dt->shared->parent=H5FL_CALLOC(H5T_t))) HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); - if (NULL==(dt->shared->parent->shared=H5FL_CALLOC(H5T_shared_t))) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); + if(NULL== (dt->shared->parent->shared= H5FL_CALLOC (H5T_shared_t))) { + H5FL_FREE(H5T_t, dt->shared->parent); + HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); + } dt->shared->parent->ent.header = HADDR_UNDEF; - dt->shared->parent->shared->fo_count=1; if (H5O_dtype_decode_helper(f, pp, dt->shared->parent)<0) HGOTO_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL, "unable to decode parent data type"); if (NULL==(dt->shared->u.enumer.name=H5MM_calloc(dt->shared->u.enumer.nalloc * sizeof(char*))) || @@ -347,6 +348,8 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt) dt->shared->u.atomic.offset = 0; dt->shared->u.atomic.lsb_pad = H5T_PAD_ZERO; dt->shared->u.atomic.msb_pad = H5T_PAD_ZERO; + + /* Set reference type */ dt->shared->u.atomic.u.r.rtype = (H5R_type_t)(flags & 0x0f); break; @@ -375,10 +378,12 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt) /* Decode base type of VL information */ if (NULL==(dt->shared->parent = H5FL_CALLOC(H5T_t))) HGOTO_ERROR (H5E_DATATYPE, H5E_NOSPACE, FAIL, "memory allocation failed"); - if (NULL==(dt->shared->parent->shared=H5FL_CALLOC(H5T_shared_t))) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); + if (NULL==(dt->shared->parent->shared = H5FL_CALLOC(H5T_shared_t))) + { + H5FL_FREE(H5T_t, dt->shared->parent); + HGOTO_ERROR (H5E_DATATYPE, H5E_NOSPACE, FAIL, "memory allocation failed"); + } dt->shared->parent->ent.header = HADDR_UNDEF; - dt->shared->parent->shared->fo_count=1; if (H5O_dtype_decode_helper(f, pp, dt->shared->parent)<0) HGOTO_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL, "unable to decode VL parent type"); @@ -416,10 +421,11 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt) /* Decode base type of array */ if (NULL==(dt->shared->parent = H5FL_CALLOC(H5T_t))) HGOTO_ERROR (H5E_DATATYPE, H5E_NOSPACE, FAIL, "memory allocation failed"); - if (NULL==(dt->shared->parent->shared=H5FL_CALLOC(H5T_shared_t))) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); + if(NULL== (dt->shared->parent->shared = H5FL_CALLOC (H5T_shared_t))) { + H5FL_FREE(H5T_t, dt->shared->parent); + HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); + } dt->shared->parent->ent.header = HADDR_UNDEF; - dt->shared->parent->shared->fo_count=1; if (H5O_dtype_decode_helper(f, pp, dt->shared->parent)<0) HGOTO_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL, "unable to decode VL parent type"); @@ -684,9 +690,9 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt) *(*pp)++ = 0; /* Reserved */ - *(*pp)++ = '\0'; - *(*pp)++ = '\0'; - *(*pp)++ = '\0'; + *(*pp)++ = 0; + *(*pp)++ = 0; + *(*pp)++ = 0; /* Dimension permutation */ UINT32ENCODE(*pp, 0); @@ -802,6 +808,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt) break; } + /* Encode the type's class, version and bit field */ *hdr++ = ((unsigned)(dt->shared->type) & 0x0f) | (((dt->shared->type==H5T_COMPOUND && has_array) ? H5O_DTYPE_VERSION_UPDATED : H5O_DTYPE_VERSION_COMPAT )<<4); *hdr++ = (flags >> 0) & 0xff; *hdr++ = (flags >> 8) & 0xff; @@ -837,7 +844,7 @@ H5O_dtype_decode(H5F_t *f, hid_t UNUSED dxpl_id, const uint8_t *p, H5T_t *dt = NULL; void *ret_value; /* Return value */ - FUNC_ENTER_NOAPI(H5O_dtype_decode, NULL); + FUNC_ENTER_NOAPI_NOINIT(H5O_dtype_decode); /* check args */ assert(p); @@ -847,7 +854,6 @@ H5O_dtype_decode(H5F_t *f, hid_t UNUSED dxpl_id, const uint8_t *p, if (NULL==(dt->shared=H5FL_CALLOC(H5T_shared_t))) HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); dt->ent.header = HADDR_UNDEF; - dt->shared->fo_count=1; if (H5O_dtype_decode_helper(f, &p, dt) < 0) HGOTO_ERROR(H5E_DATATYPE, H5E_CANTDECODE, NULL, "can't decode type"); @@ -890,7 +896,7 @@ H5O_dtype_encode(H5F_t UNUSED *f, uint8_t *p, const void *mesg) const H5T_t *dt = (const H5T_t *) mesg; herr_t ret_value=SUCCEED; /* Return value */ - FUNC_ENTER_NOAPI(H5O_dtype_encode, FAIL); + FUNC_ENTER_NOAPI_NOINIT(H5O_dtype_encode); /* check args */ assert(f); @@ -930,7 +936,7 @@ H5O_dtype_copy(const void *_src, void *_dst) H5T_t *dst = NULL; void *ret_value; /* Return value */ - FUNC_ENTER_NOAPI(H5O_dtype_copy, NULL); + FUNC_ENTER_NOAPI_NOINIT(H5O_dtype_copy); /* check args */ assert(src); @@ -980,7 +986,7 @@ H5O_dtype_size(H5F_t *f, const void *mesg) size_t ret_value = 8; const H5T_t *dt = (const H5T_t *) mesg; - FUNC_ENTER_NOAPI(H5O_dtype_size, 0); + FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5O_dtype_size); assert(mesg); @@ -1042,7 +1048,6 @@ H5O_dtype_size(H5F_t *f, const void *mesg) break; } -done: FUNC_LEAVE_NOAPI(ret_value); } @@ -1066,15 +1071,13 @@ static herr_t H5O_dtype_reset(void *_mesg) { H5T_t *dt = (H5T_t *) _mesg; - herr_t ret_value=SUCCEED; /* Return value */ - FUNC_ENTER_NOAPI(H5O_dtype_reset, FAIL); + FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5O_dtype_reset); if (dt) H5T_free(dt); -done: - FUNC_LEAVE_NOAPI(ret_value); + FUNC_LEAVE_NOAPI(SUCCEED); } @@ -1095,17 +1098,14 @@ done: static herr_t H5O_dtype_free (void *mesg) { - herr_t ret_value=SUCCEED; /* Return value */ - - FUNC_ENTER_NOAPI(H5O_dtype_free, FAIL); + FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5O_dtype_free); assert (mesg); H5FL_FREE(H5T_shared_t, ((H5T_t *) mesg)->shared); H5FL_FREE(H5T_t,mesg); -done: - FUNC_LEAVE_NOAPI(ret_value); + FUNC_LEAVE_NOAPI(SUCCEED); } @@ -1131,7 +1131,7 @@ H5O_dtype_get_share(H5F_t UNUSED *f, const void *_mesg, const H5T_t *dt = (const H5T_t *)_mesg; herr_t ret_value=SUCCEED; /* Return value */ - FUNC_ENTER_NOAPI(H5O_dtype_get_share, FAIL); + FUNC_ENTER_NOAPI_NOINIT(H5O_dtype_get_share); assert (dt); assert (sh); @@ -1172,9 +1172,8 @@ H5O_dtype_set_share (H5F_t UNUSED *f, void *_mesg/*in,out*/, const H5O_shared_t *sh) { H5T_t *dt = (H5T_t *)_mesg; - herr_t ret_value=SUCCEED; /* Return value */ - FUNC_ENTER_NOAPI(H5O_dtype_set_share, FAIL); + FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5O_dtype_set_share); assert (dt); assert (sh); @@ -1190,8 +1189,7 @@ H5O_dtype_set_share (H5F_t UNUSED *f, void *_mesg/*in,out*/, /* Note that the datatype is a named datatype */ dt->shared->state = H5T_STATE_NAMED; -done: - FUNC_LEAVE_NOAPI(ret_value); + FUNC_LEAVE_NOAPI(SUCCEED); } @@ -1223,9 +1221,8 @@ H5O_dtype_debug(H5F_t *f, hid_t dxpl_id, const void *mesg, FILE *stream, char buf[256]; int i; size_t k; - herr_t ret_value=SUCCEED; /* Return value */ - FUNC_ENTER_NOAPI(H5O_dtype_debug, FAIL); + FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5O_dtype_debug); /* check args */ assert(f); @@ -1509,6 +1506,5 @@ H5O_dtype_debug(H5F_t *f, hid_t dxpl_id, const void *mesg, FILE *stream, } } -done: - FUNC_LEAVE_NOAPI(ret_value); + FUNC_LEAVE_NOAPI(SUCCEED); } diff --git a/src/H5T.c b/src/H5T.c index e7a8392..905d89d 100644 --- a/src/H5T.c +++ b/src/H5T.c @@ -29,7 +29,7 @@ #include "H5Dprivate.h" /*datasets (for H5Tcopy) */ #include "H5Eprivate.h" /*error handling */ #include "H5FLprivate.h" /* Free Lists */ -#include "H5FOprivate.h" /* File objects */ +#include "H5FOprivate.h" /* File objects */ #include "H5Gprivate.h" /*groups */ #include "H5Iprivate.h" /*ID functions */ #include "H5MMprivate.h" /*memory management */ @@ -434,9 +434,9 @@ static herr_t H5T_register(H5T_pers_t pers, const char *name, H5T_t *src, H5FL_FREE(H5T_t, dt); \ HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed") \ } \ - dt->shared->fo_count=1; \ } + #define H5T_INIT_TYPE(GUTS,GLOBAL,CRT_TMPL,BASE,SIZE_TMPL,SIZE) { \ /* Get new datatype struct */ \ H5_GLUE3(H5T_INIT_TYPE_,CRT_TMPL,_CREATE)(BASE) \ @@ -1831,7 +1831,7 @@ H5Tis_variable_str(hid_t dtype_id) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data type"); /* Set return value */ - ret_value=H5T_is_variable_str(dt); + ret_value=H5T_IS_VL_STRING(dt->shared); done: FUNC_LEAVE_API(ret_value); @@ -1839,39 +1839,6 @@ done: /*------------------------------------------------------------------------- - * Function: H5T_is_variable_str - * - * Purpose: Private function of H5Tis_variable_str. - * Check whether a datatype is a variable-length string - * - * - * Return: TRUE (1) or FALSE (0) on success/Negative on failure - * - * Programmer: Raymond Lu - * November 4, 2002 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -htri_t -H5T_is_variable_str(H5T_t *dt) -{ - htri_t ret_value=FALSE; /* Return value */ - - FUNC_ENTER_NOAPI(H5T_is_variable_str, FAIL); - - assert(dt); - - if(H5T_VLEN == dt->shared->type && H5T_VLEN_STRING == dt->shared->u.vlen.type) - ret_value = TRUE; - -done: - FUNC_LEAVE_NOAPI(ret_value); -} - - -/*------------------------------------------------------------------------- * Function: H5Tget_size * * Purpose: Determines the total size of a datatype in bytes. @@ -2646,6 +2613,7 @@ H5T_create(H5T_class_t type, size_t size) if (NULL==(dt->shared = H5FL_CALLOC(H5T_shared_t))) HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); dt->shared->type = type; + if(type==H5T_COMPOUND) dt->shared->u.compnd.packed=TRUE; /* Start out packed */ else if(type==H5T_OPAQUE) @@ -2688,7 +2656,6 @@ H5T_create(H5T_class_t type, size_t size) } dt->ent.header = HADDR_UNDEF; - dt->shared->fo_count = 1; dt->shared->size = size; /* Set return value */ @@ -2807,9 +2774,8 @@ H5T_open (H5G_entry_t *ent, hid_t dxpl_id) done: if(ret_value==NULL) { if(dt) { - if(shared_fo==NULL) { /* Need to free shared fo */ + if(shared_fo==NULL) /* Need to free shared fo */ H5FL_FREE(H5T_shared_t, dt->shared); - } H5FL_FREE(H5T_t, dt); } if(shared_fo) @@ -2929,7 +2895,6 @@ H5T_copy(const H5T_t *old_dt, H5T_copy_t method) /* Copy actual information */ new_dt->ent = old_dt->ent; *(new_dt->shared) = *(old_dt->shared); - new_dt->shared->fo_count = 1; /* Copy parent information */ if (new_dt->shared->parent) @@ -3298,41 +3263,6 @@ done: /*------------------------------------------------------------------------- - * Function: H5T_is_atomic - * - * Purpose: Determines if a data type is an atomic type. - * - * Return: Success: TRUE, FALSE - * - * Failure: Negative - * - * Programmer: Robb Matzke - * Wednesday, January 7, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -htri_t -H5T_is_atomic(const H5T_t *dt) -{ - htri_t ret_value; - - FUNC_ENTER_NOAPI(H5T_is_atomic, FAIL); - - assert(dt); - - if (!H5T_IS_COMPLEX(dt->shared->type) && H5T_OPAQUE!=dt->shared->type) - ret_value = TRUE; - else - ret_value = FALSE; - -done: - FUNC_LEAVE_NOAPI(ret_value); -} - - -/*------------------------------------------------------------------------- * Function: H5T_set_size * * Purpose: Sets the total size in bytes for a data type (this operation @@ -3386,7 +3316,7 @@ H5T_set_size(H5T_t *dt, size_t size) else if(dt->shared->type!=H5T_VLEN) dt->shared->size = dt->shared->parent->shared->size; } else { - if (H5T_is_atomic(dt)) { + if (H5T_IS_ATOMIC(dt->shared)) { offset = dt->shared->u.atomic.offset; prec = dt->shared->u.atomic.prec; @@ -3504,7 +3434,7 @@ H5T_set_size(H5T_t *dt, size_t size) /* Commit (if we didn't convert this type to a VL string) */ if(dt->shared->type!=H5T_VLEN) { dt->shared->size = size; - if (H5T_is_atomic(dt)) { + if (H5T_IS_ATOMIC(dt->shared)) { dt->shared->u.atomic.offset = offset; dt->shared->u.atomic.prec = prec; } @@ -4703,7 +4633,7 @@ H5T_debug(const H5T_t *dt, FILE *stream) fprintf(stream, "%s%s {nbytes=%lu", s1, s2, (unsigned long)(dt->shared->size)); - if (H5T_is_atomic(dt)) { + if (H5T_IS_ATOMIC(dt->shared)) { switch (dt->shared->u.atomic.order) { case H5T_ORDER_BE: s1 = "BE"; diff --git a/src/H5Tarray.c b/src/H5Tarray.c index 1dc4b8e..a8c8de9 100644 --- a/src/H5Tarray.c +++ b/src/H5Tarray.c @@ -21,13 +21,13 @@ /* Pablo information */ /* (Put before include files to avoid problems with inline functions) */ -#define PABLO_MASK H5Tarray_mask +#define PABLO_MASK H5T_array_mask -#include "H5private.h" /*generic functions */ -#include "H5Eprivate.h" /*error handling */ -#include "H5FLprivate.h" /*Free Lists */ -#include "H5Iprivate.h" /*ID functions */ -#include "H5Tpkg.h" /*data-type functions */ +#include "H5private.h" /* Generic Functions */ +#include "H5Eprivate.h" /* Error handling */ +#include "H5FLprivate.h" /* Free Lists */ +#include "H5Iprivate.h" /* IDs */ +#include "H5Tpkg.h" /* Datatypes */ /* Interface initialization */ static int interface_initialize_g = 0; @@ -163,7 +163,6 @@ H5T_array_create(H5T_t *base, int ndims, const hsize_t dim[/* ndims */], HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); } ret_value->ent.header = HADDR_UNDEF; - ret_value->shared->fo_count=1; ret_value->shared->type = H5T_ARRAY; /* Copy the base type of the array */ diff --git a/src/H5Tcommit.c b/src/H5Tcommit.c index 75e78de..7433384 100644 --- a/src/H5Tcommit.c +++ b/src/H5Tcommit.c @@ -21,13 +21,13 @@ /* Pablo information */ /* (Put before include files to avoid problems with inline functions) */ -#define PABLO_MASK H5Tcommit_mask +#define PABLO_MASK H5T_commit_mask -#include "H5private.h" /*generic functions */ -#include "H5Eprivate.h" /*error handling */ -#include "H5Iprivate.h" /*ID functions */ -#include "H5FOprivate.h" /* File objects */ -#include "H5Tpkg.h" /*data-type functions */ +#include "H5private.h" /* Generic Functions */ +#include "H5Eprivate.h" /* Error handling */ +#include "H5FOprivate.h" /* File objects */ +#include "H5Iprivate.h" /* IDs */ +#include "H5Tpkg.h" /* Datatypes */ /* Interface initialization */ static int interface_initialize_g = 0; @@ -184,6 +184,7 @@ done: type->ent.header = HADDR_UNDEF; } } + FUNC_LEAVE_NOAPI(ret_value); } diff --git a/src/H5Tcompound.c b/src/H5Tcompound.c index 6b57b3e..ee51989 100644 --- a/src/H5Tcompound.c +++ b/src/H5Tcompound.c @@ -128,7 +128,7 @@ done: *------------------------------------------------------------------------- */ size_t -H5T_get_member_offset(H5T_t *dt, int membno) +H5T_get_member_offset(const H5T_t *dt, int membno) { size_t ret_value; @@ -258,7 +258,7 @@ done: *------------------------------------------------------------------------- */ H5T_t * -H5T_get_member_type(H5T_t *dt, int membno) +H5T_get_member_type(const H5T_t *dt, int membno) { H5T_t *ret_value = NULL; @@ -293,14 +293,14 @@ done: *------------------------------------------------------------------------- */ size_t -H5T_get_member_size(H5T_t *dt, int membno) +H5T_get_member_size(H5T_t *dt, unsigned membno) { size_t ret_value = 0; FUNC_ENTER_NOAPI(H5T_get_member_size, 0); assert(dt); - assert(membno >=0 && membno < dt->shared->u.compnd.nmembs); + assert(membno < dt->shared->u.compnd.nmembs); /* Value */ ret_value = dt->shared->u.compnd.memb[membno].type->shared->size; @@ -600,7 +600,7 @@ done: *------------------------------------------------------------------------- */ htri_t -H5T_is_packed(H5T_t *dt) +H5T_is_packed(const H5T_t *dt) { htri_t ret_value=TRUE; /* Return value */ diff --git a/src/H5Tenum.c b/src/H5Tenum.c index f1e6e5f..945e728 100644 --- a/src/H5Tenum.c +++ b/src/H5Tenum.c @@ -19,26 +19,28 @@ #define H5T_PACKAGE /*suppress error about including H5Tpkg */ +/* Pablo information */ +/* (Put before include files to avoid problems with inline functions) */ +#define PABLO_MASK H5T_enum_mask + #include "H5private.h" /*generic functions */ #include "H5Eprivate.h" /*error handling */ -#include "H5FLprivate.h" /*Free Lists */ +#include "H5FLprivate.h" /*Free Lists */ #include "H5Iprivate.h" /*ID functions */ #include "H5MMprivate.h" /*memory management */ #include "H5Tpkg.h" /*data-type functions */ -#define PABLO_MASK H5Tenum_mask - /* Interface initialization */ static int interface_initialize_g = 0; #define INTERFACE_INIT H5T_init_enum_interface static herr_t H5T_init_enum_interface(void); -/* Declare extern the free list for H5T_t's */ +/* Declare extern the free lists for H5T_t's and H5T_shared_t's */ H5FL_EXTERN(H5T_t); H5FL_EXTERN(H5T_shared_t); /* Static local functions */ -static char *H5T_enum_nameof(H5T_t *dt, void *value, char *name/*out*/, +static char *H5T_enum_nameof(H5T_t *dt, const void *value, char *name/*out*/, size_t size); static herr_t H5T_enum_valueof(H5T_t *dt, const char *name, void *value/*out*/); @@ -60,9 +62,9 @@ DESCRIPTION static herr_t H5T_init_enum_interface(void) { - FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5T_init_enum_interface); + FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5T_init_enum_interface) - FUNC_LEAVE_NOAPI(H5T_init()); + FUNC_LEAVE_NOAPI(H5T_init()) } /* H5T_init_enum_interface() */ @@ -90,22 +92,22 @@ H5Tenum_create(hid_t parent_id) H5T_t *dt = NULL; /*new enumeration data type */ hid_t ret_value; /*return value */ - FUNC_ENTER_API(H5Tenum_create, FAIL); + FUNC_ENTER_API(H5Tenum_create, FAIL) H5TRACE1("i","i",parent_id); /* Check args */ if (NULL==(parent=H5I_object_verify(parent_id,H5I_DATATYPE)) || H5T_INTEGER!=parent->shared->type) - HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an integer data type"); + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an integer data type") /* Build new type */ if((dt=H5T_enum_create(parent))==NULL) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "cannot create enum type"); + HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "cannot create enum type") /* Atomize the type */ if ((ret_value=H5I_register(H5I_DATATYPE, dt))<0) - HGOTO_ERROR(H5E_DATATYPE, H5E_CANTREGISTER, FAIL, "unable to register data type atom"); + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTREGISTER, FAIL, "unable to register data type atom") done: - FUNC_LEAVE_API(ret_value); + FUNC_LEAVE_API(ret_value) } @@ -128,30 +130,29 @@ done: *------------------------------------------------------------------------- */ H5T_t * -H5T_enum_create(H5T_t *parent) +H5T_enum_create(const H5T_t *parent) { H5T_t *ret_value; /*new enumeration data type */ - FUNC_ENTER_NOAPI(H5T_enum_create, NULL); + FUNC_ENTER_NOAPI(H5T_enum_create, NULL) assert(parent); /* Build new type */ if (NULL==(ret_value = H5FL_CALLOC(H5T_t))) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); + HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed") if (NULL==(ret_value->shared=H5FL_CALLOC(H5T_shared_t))) { H5FL_FREE(H5T_t, ret_value); HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); } ret_value->shared->type = H5T_ENUM; - ret_value->shared->fo_count=1; ret_value->shared->parent = H5T_copy(parent, H5T_COPY_ALL); assert(ret_value->shared->parent); ret_value->shared->size = ret_value->shared->parent->shared->size; ret_value->ent.header = HADDR_UNDEF; done: - FUNC_LEAVE_NOAPI(ret_value); + FUNC_LEAVE_NOAPI(ret_value) } @@ -177,30 +178,30 @@ done: *------------------------------------------------------------------------- */ herr_t -H5Tenum_insert(hid_t type, const char *name, void *value) +H5Tenum_insert(hid_t type, const char *name, const void *value) { H5T_t *dt=NULL; herr_t ret_value=SUCCEED; /* Return value */ - FUNC_ENTER_API(H5Tenum_insert, FAIL); + FUNC_ENTER_API(H5Tenum_insert, FAIL) H5TRACE3("e","isx",type,name,value); /* Check args */ if (NULL==(dt=H5I_object_verify(type,H5I_DATATYPE))) - HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data type"); + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data type") if (H5T_ENUM!=dt->shared->type) - HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an enumeration data type"); + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an enumeration data type") if (!name || !*name) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no name specified"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no name specified") if (!value) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no value specified"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no value specified") /* Do work */ if (H5T_enum_insert(dt, name, value)<0) - HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "unable to insert new enumeration member"); + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "unable to insert new enumeration member") done: - FUNC_LEAVE_API(ret_value); + FUNC_LEAVE_API(ret_value) } @@ -224,14 +225,14 @@ done: *------------------------------------------------------------------------- */ herr_t -H5T_enum_insert(H5T_t *dt, const char *name, void *value) +H5T_enum_insert(H5T_t *dt, const char *name, const void *value) { int i; char **names=NULL; uint8_t *values=NULL; herr_t ret_value=SUCCEED; /* Return value */ - FUNC_ENTER_NOAPI(H5T_enum_insert, FAIL); + FUNC_ENTER_NOAPI(H5T_enum_insert, FAIL) assert(dt); assert(name && *name); @@ -240,20 +241,20 @@ H5T_enum_insert(H5T_t *dt, const char *name, void *value) /* The name and value had better not already exist */ for (i=0; ishared->u.enumer.nmembs; i++) { if (!HDstrcmp(dt->shared->u.enumer.name[i], name)) - HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "name redefinition"); + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "name redefinition") if (!HDmemcmp(dt->shared->u.enumer.value+i*dt->shared->size, value, dt->shared->size)) - HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "value redefinition"); + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "value redefinition") } /* Increase table sizes */ if (dt->shared->u.enumer.nmembs >= dt->shared->u.enumer.nalloc) { int n = MAX(32, 2*dt->shared->u.enumer.nalloc); if (NULL==(names=H5MM_realloc(dt->shared->u.enumer.name, n*sizeof(char*)))) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); + HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed") dt->shared->u.enumer.name = names; if (NULL==(values=H5MM_realloc(dt->shared->u.enumer.value, n*dt->shared->size))) - HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed"); + HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed") dt->shared->u.enumer.value = values; dt->shared->u.enumer.nalloc = n; } @@ -265,7 +266,7 @@ H5T_enum_insert(H5T_t *dt, const char *name, void *value) HDmemcpy(dt->shared->u.enumer.value+i*dt->shared->size, value, dt->shared->size); done: - FUNC_LEAVE_NOAPI(ret_value); + FUNC_LEAVE_NOAPI(ret_value) } @@ -292,22 +293,22 @@ H5Tget_member_value(hid_t type, int membno, void *value/*out*/) H5T_t *dt=NULL; herr_t ret_value=SUCCEED; /* Return value */ - FUNC_ENTER_API(H5Tget_member_value, FAIL); + FUNC_ENTER_API(H5Tget_member_value, FAIL) H5TRACE3("e","iIsx",type,membno,value); if (NULL==(dt=H5I_object_verify(type,H5I_DATATYPE))) - HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data type"); + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data type") if (H5T_ENUM!=dt->shared->type) - HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "operation not defined for data type class"); + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "operation not defined for data type class") if (membno<0 || membno>=dt->shared->u.enumer.nmembs) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid member number"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid member number") if (!value) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "null value buffer"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "null value buffer") if (H5T_get_member_value(dt, membno, value)<0) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to get member value"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to get member value") done: - FUNC_LEAVE_API(ret_value); + FUNC_LEAVE_API(ret_value) } @@ -330,11 +331,11 @@ done: *------------------------------------------------------------------------- */ herr_t -H5T_get_member_value(H5T_t *dt, int membno, void *value/*out*/) +H5T_get_member_value(const H5T_t *dt, int membno, void *value/*out*/) { herr_t ret_value=SUCCEED; /* Return value */ - FUNC_ENTER_NOAPI(H5T_get_member_value, FAIL); + FUNC_ENTER_NOAPI(H5T_get_member_value, FAIL) assert(dt); assert(value); @@ -342,7 +343,7 @@ H5T_get_member_value(H5T_t *dt, int membno, void *value/*out*/) HDmemcpy(value, dt->shared->u.enumer.value + membno*dt->shared->size, dt->shared->size); done: - FUNC_LEAVE_NOAPI(ret_value); + FUNC_LEAVE_NOAPI(ret_value) } @@ -370,29 +371,29 @@ done: *------------------------------------------------------------------------- */ herr_t -H5Tenum_nameof(hid_t type, void *value, char *name/*out*/, size_t size) +H5Tenum_nameof(hid_t type, const void *value, char *name/*out*/, size_t size) { H5T_t *dt = NULL; herr_t ret_value=SUCCEED; /* Return value */ - FUNC_ENTER_API(H5Tenum_nameof, FAIL); + FUNC_ENTER_API(H5Tenum_nameof, FAIL) H5TRACE4("e","ixxz",type,value,name,size); /* Check args */ if (NULL==(dt=H5I_object_verify(type,H5I_DATATYPE))) - HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data type"); + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data type") if (H5T_ENUM!=dt->shared->type) - HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an enumeration data type"); + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an enumeration data type") if (!value) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no value supplied"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no value supplied") if (!name) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no name buffer supplied"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no name buffer supplied") if (NULL==H5T_enum_nameof(dt, value, name, size)) - HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "nameof query failed"); + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "nameof query failed") done: - FUNC_LEAVE_API(ret_value); + FUNC_LEAVE_API(ret_value) } @@ -422,13 +423,13 @@ done: *------------------------------------------------------------------------- */ static char * -H5T_enum_nameof(H5T_t *dt, void *value, char *name/*out*/, size_t size) +H5T_enum_nameof(H5T_t *dt, const void *value, char *name/*out*/, size_t size) { int lt, md, rt; /*indices for binary search */ int cmp=(-1); /*comparison result */ char *ret_value; /* Return value */ - FUNC_ENTER_NOAPI(H5T_enum_nameof, NULL); + FUNC_ENTER_NOAPI(H5T_enum_nameof, NULL) /* Check args */ assert(dt && H5T_ENUM==dt->shared->type); @@ -438,10 +439,11 @@ H5T_enum_nameof(H5T_t *dt, void *value, char *name/*out*/, size_t size) /* Sanity check */ if (dt->shared->u.enumer.nmembs == 0) - HGOTO_ERROR(H5E_DATATYPE, H5E_NOTFOUND, NULL, "datatype has no members"); + HGOTO_ERROR(H5E_DATATYPE, H5E_NOTFOUND, NULL, "datatype has no members") /* Do a binary search over the values to find the correct one */ - H5T_sort_value(dt, NULL); + if(H5T_sort_value(dt, NULL)<0) + HGOTO_ERROR(H5E_INTERNAL, H5E_CANTCOMPARE, NULL, "value sort failed") lt = 0; rt = dt->shared->u.enumer.nmembs; md = -1; @@ -459,20 +461,20 @@ H5T_enum_nameof(H5T_t *dt, void *value, char *name/*out*/, size_t size) } /* Value was not yet defined. This fixes bug # 774, 2002/06/05 EIP */ if (cmp!=0) - HGOTO_ERROR(H5E_DATATYPE, H5E_NOTFOUND, NULL, "value is currently not defined"); + HGOTO_ERROR(H5E_DATATYPE, H5E_NOTFOUND, NULL, "value is currently not defined") /* Save result name */ if (!name && NULL==(name=H5MM_malloc(HDstrlen(dt->shared->u.enumer.name[md])+1))) HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); HDstrncpy(name, dt->shared->u.enumer.name[md], size); if (HDstrlen(dt->shared->u.enumer.name[md])>=size) - HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, NULL, "name has been truncated"); + HGOTO_ERROR(H5E_DATATYPE, H5E_NOSPACE, NULL, "name has been truncated") /* Set return value */ ret_value=name; done: - FUNC_LEAVE_NOAPI(ret_value); + FUNC_LEAVE_NOAPI(ret_value) } @@ -501,24 +503,24 @@ H5Tenum_valueof(hid_t type, const char *name, void *value/*out*/) H5T_t *dt = NULL; herr_t ret_value=SUCCEED; /* Return value */ - FUNC_ENTER_API(H5Tenum_valueof, FAIL); + FUNC_ENTER_API(H5Tenum_valueof, FAIL) H5TRACE3("e","isx",type,name,value); /* Check args */ if (NULL==(dt=H5I_object_verify(type,H5I_DATATYPE))) - HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data type"); + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a data type") if (H5T_ENUM!=dt->shared->type) - HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an enumeration data type"); + HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an enumeration data type") if (!name || !*name) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no name"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no name") if (!value) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no value buffer"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no value buffer") if (H5T_enum_valueof(dt, name, value)<0) - HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "valueof query failed"); + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "valueof query failed") done: - FUNC_LEAVE_API(ret_value); + FUNC_LEAVE_API(ret_value) } @@ -548,7 +550,7 @@ H5T_enum_valueof(H5T_t *dt, const char *name, void *value/*out*/) int cmp=(-1); /*comparison result */ herr_t ret_value=SUCCEED; /* Return value */ - FUNC_ENTER_NOAPI(H5T_enum_valueof, FAIL); + FUNC_ENTER_NOAPI(H5T_enum_valueof, FAIL) /* Check args */ assert(dt && H5T_ENUM==dt->shared->type); @@ -557,10 +559,11 @@ H5T_enum_valueof(H5T_t *dt, const char *name, void *value/*out*/) /* Sanity check */ if (dt->shared->u.enumer.nmembs == 0) - HGOTO_ERROR(H5E_DATATYPE, H5E_NOTFOUND, FAIL, "datatype has no members"); + HGOTO_ERROR(H5E_DATATYPE, H5E_NOTFOUND, FAIL, "datatype has no members") /* Do a binary search over the names to find the correct one */ - H5T_sort_name(dt, NULL); + if(H5T_sort_name(dt, NULL)<0) + HGOTO_ERROR(H5E_INTERNAL, H5E_CANTCOMPARE, FAIL, "value sort failed") lt = 0; rt = dt->shared->u.enumer.nmembs; md = -1; @@ -578,11 +581,10 @@ H5T_enum_valueof(H5T_t *dt, const char *name, void *value/*out*/) } /* Value was not yet defined. This fixes bug # 774, 2002/06/05 EIP */ if (cmp!=0) - HGOTO_ERROR(H5E_DATATYPE, H5E_NOTFOUND, FAIL, "string doesn't exist in the enumeration type"); + HGOTO_ERROR(H5E_DATATYPE, H5E_NOTFOUND, FAIL, "string doesn't exist in the enumeration type") HDmemcpy(value, dt->shared->u.enumer.value+md*dt->shared->size, dt->shared->size); done: - FUNC_LEAVE_NOAPI(ret_value); + FUNC_LEAVE_NOAPI(ret_value) } - diff --git a/src/H5Tfields.c b/src/H5Tfields.c index 50539f9..674a16b 100644 --- a/src/H5Tfields.c +++ b/src/H5Tfields.c @@ -198,7 +198,7 @@ done: *------------------------------------------------------------------------- */ char * -H5T_get_member_name(H5T_t *dt, int membno) +H5T_get_member_name(H5T_t const *dt, int membno) { char *ret_value; diff --git a/src/H5Tfixed.c b/src/H5Tfixed.c index 6baf253..041c58f 100644 --- a/src/H5Tfixed.c +++ b/src/H5Tfixed.c @@ -109,11 +109,11 @@ done: *------------------------------------------------------------------------- */ H5T_sign_t -H5T_get_sign(H5T_t *dt) +H5T_get_sign(H5T_t const *dt) { H5T_sign_t ret_value; - FUNC_ENTER_NOAPI(H5T_get_sign, H5T_SGN_ERROR); + FUNC_ENTER_NOAPI(H5T_get_sign, H5T_SGN_ERROR) assert(dt); @@ -123,13 +123,13 @@ H5T_get_sign(H5T_t *dt) /* Check args */ if (H5T_INTEGER!=dt->shared->type) - HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, H5T_SGN_ERROR, "operation not defined for data type class"); + HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, H5T_SGN_ERROR, "operation not defined for data type class") /* Sign */ ret_value = dt->shared->u.atomic.u.i.sign; done: - FUNC_LEAVE_NOAPI(ret_value); + FUNC_LEAVE_NOAPI(ret_value) } diff --git a/src/H5Tnative.c b/src/H5Tnative.c index add84bf..992a2ab 100644 --- a/src/H5Tnative.c +++ b/src/H5Tnative.c @@ -201,7 +201,7 @@ H5T_get_native_type(H5T_t *dtype, H5T_direction_t direction, size_t *struct_alig if((ret_value=H5T_copy(dtype, H5T_COPY_TRANSIENT))==NULL) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "cannot retrieve float type"); - if(H5T_is_variable_str(dtype)) { + if(H5T_IS_VL_STRING(dtype->shared)) { /* Update size, offset and compound alignment for parent. */ if(H5T_cmp_offset(comp_size, offset, sizeof(char *), 1, H5T_POINTER_COMP_ALIGN_g, struct_align)<0) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "cannot compute compound offset"); diff --git a/src/H5Toffset.c b/src/H5Toffset.c index f8c9fdb..a3965ad 100644 --- a/src/H5Toffset.c +++ b/src/H5Toffset.c @@ -109,7 +109,7 @@ H5Tget_offset(hid_t type_id) HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "operation not defined for specified data type"); /* Offset */ - assert(H5T_is_atomic(dt)); + assert(H5T_IS_ATOMIC(dt->shared)); ret_value = (int)dt->shared->u.atomic.offset; done: diff --git a/src/H5Torder.c b/src/H5Torder.c index 004f513..4bd1c9c 100644 --- a/src/H5Torder.c +++ b/src/H5Torder.c @@ -90,7 +90,7 @@ H5Tget_order(hid_t type_id) HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, H5T_ORDER_ERROR, "operation not defined for specified data type"); /* Order */ - assert(H5T_is_atomic(dt)); + assert(H5T_IS_ATOMIC(dt->shared)); ret_value = dt->shared->u.atomic.order; done: @@ -138,7 +138,7 @@ H5Tset_order(hid_t type_id, H5T_order_t order) HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, H5T_ORDER_ERROR, "operation not defined for specified data type"); /* Commit */ - assert(H5T_is_atomic(dt)); + assert(H5T_IS_ATOMIC(dt->shared)); dt->shared->u.atomic.order = order; done: diff --git a/src/H5Tpad.c b/src/H5Tpad.c index 0f9085c..4c84c7e4 100644 --- a/src/H5Tpad.c +++ b/src/H5Tpad.c @@ -90,7 +90,7 @@ H5Tget_pad(hid_t type_id, H5T_pad_t *lsb/*out*/, H5T_pad_t *msb/*out*/) HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "operation not defined for specified data type"); /* Get values */ - assert(H5T_is_atomic(dt)); + assert(H5T_IS_ATOMIC(dt->shared)); if (lsb) *lsb = dt->shared->u.atomic.lsb_pad; if (msb) @@ -141,7 +141,7 @@ H5Tset_pad(hid_t type_id, H5T_pad_t lsb, H5T_pad_t msb) HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "operation not defined for specified data type"); /* Commit */ - assert(H5T_is_atomic(dt)); + assert(H5T_IS_ATOMIC(dt->shared)); dt->shared->u.atomic.lsb_pad = lsb; dt->shared->u.atomic.msb_pad = msb; diff --git a/src/H5Tpkg.h b/src/H5Tpkg.h index e9f7c89..58fabca 100644 --- a/src/H5Tpkg.h +++ b/src/H5Tpkg.h @@ -51,8 +51,17 @@ /* Macro to ease detecting "complex" datatypes (i.e. those with base types or fields) */ #define H5T_IS_COMPLEX(t) ((t)==H5T_COMPOUND || (t)==H5T_ENUM || (t)==H5T_VLEN || (t)==H5T_ARRAY) +/* Macro to ease detecting fixed "string" datatypes */ +#define H5T_IS_FIXED_STRING(dt) (H5T_STRING == (dt)->type) + +/* Macro to ease detecting variable-length "string" datatypes */ +#define H5T_IS_VL_STRING(dt) (H5T_VLEN == (dt)->type && H5T_VLEN_STRING == (dt)->u.vlen.type) + /* Macro to ease detecting fixed or variable-length "string" datatypes */ -#define H5T_IS_STRING(dt) (H5T_STRING == (dt)->type || (H5T_VLEN == (dt)->type && H5T_VLEN_STRING == (dt)->u.vlen.type)) +#define H5T_IS_STRING(dt) (H5T_IS_FIXED_STRING(dt) || H5T_IS_VL_STRING(dt)) + +/* Macro to ease detecting atomic datatypes */ +#define H5T_IS_ATOMIC(dt) (!(H5T_IS_COMPLEX((dt)->type) || (dt)->type==H5T_OPAQUE)) /* Statistics about a conversion function */ struct H5T_stats_t { @@ -186,7 +195,7 @@ typedef enum H5T_state_t { /* This struct is shared between all occurances of an open named type */ typedef struct H5T_shared_t { - hsize_t fo_count; /* number of references to this file object */ + hsize_t fo_count; /* number of references to this file object */ H5T_state_t state; /*current state of the type */ H5F_t *sh_file;/*file pointer if this is a shared type */ H5T_class_t type; /*which class of type is this? */ @@ -314,18 +323,15 @@ H5_DLLVAR double H5T_NATIVE_DOUBLE_NEG_INF_g; H5_DLL herr_t H5T_init_interface(void); H5_DLL H5T_t *H5T_create(H5T_class_t type, size_t size); H5_DLL herr_t H5T_free(H5T_t *dt); -H5_DLL H5T_sign_t H5T_get_sign(H5T_t *dt); +H5_DLL H5T_sign_t H5T_get_sign(H5T_t const *dt); H5_DLL H5T_t *H5T_get_super(H5T_t *dt); -H5_DLL char *H5T_get_member_name(H5T_t *dt, int membno); -H5_DLL herr_t H5T_get_member_value(H5T_t *dt, int membno, void *value); -H5_DLL H5T_t *H5T_get_member_type(H5T_t *dt, int membno); +H5_DLL char *H5T_get_member_name(H5T_t const *dt, int membno); +H5_DLL herr_t H5T_get_member_value(const H5T_t *dt, int membno, void *value); H5_DLL int H5T_get_nmembers(const H5T_t *dt); -H5_DLL htri_t H5T_is_variable_str(H5T_t *dt); -H5_DLL htri_t H5T_is_atomic(const H5T_t *dt); H5_DLL herr_t H5T_insert(H5T_t *parent, const char *name, size_t offset, const H5T_t *member); -H5_DLL H5T_t *H5T_enum_create(H5T_t *parent); -H5_DLL herr_t H5T_enum_insert(H5T_t *dt, const char *name, void *value); +H5_DLL H5T_t *H5T_enum_create(const H5T_t *parent); +H5_DLL herr_t H5T_enum_insert(H5T_t *dt, const char *name, const void *value); H5_DLL int H5T_get_array_ndims(H5T_t *dt); H5_DLL int H5T_get_array_dims(H5T_t *dt, hsize_t dims[], int perm[]); H5_DLL herr_t H5T_sort_value(H5T_t *dt, int *map); @@ -876,8 +882,9 @@ H5_DLL H5T_t * H5T_array_create(H5T_t *base, int ndims, const hsize_t dim[/* ndims */], const int perm[/* ndims */]); /* Compound functions */ -H5_DLL size_t H5T_get_member_offset(H5T_t *dt, int membno); -H5_DLL size_t H5T_get_member_size(H5T_t *dt, int membno); -H5_DLL htri_t H5T_is_packed(H5T_t *dt); +H5_DLL H5T_t *H5T_get_member_type(const H5T_t *dt, int membno); +H5_DLL size_t H5T_get_member_offset(const H5T_t *dt, int membno); +H5_DLL size_t H5T_get_member_size(H5T_t *dt, unsigned membno); +H5_DLL htri_t H5T_is_packed(const H5T_t *dt); #endif diff --git a/src/H5Tprecis.c b/src/H5Tprecis.c index 02c33cf..33a71e0 100644 --- a/src/H5Tprecis.c +++ b/src/H5Tprecis.c @@ -97,7 +97,7 @@ H5Tget_precision(hid_t type_id) HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, 0, "operation not defined for specified data type"); /* Precision */ - assert(H5T_is_atomic(dt)); + assert(H5T_IS_ATOMIC(dt->shared)); ret_value = dt->shared->u.atomic.prec; done: @@ -221,7 +221,7 @@ H5T_set_precision(H5T_t *dt, size_t prec) else if(dt->shared->type!=H5T_VLEN) dt->shared->size = dt->shared->parent->shared->size; } else { - if (H5T_is_atomic(dt)) { + if (H5T_IS_ATOMIC(dt->shared)) { /* Adjust the offset and size */ offset = dt->shared->u.atomic.offset; size = dt->shared->size; @@ -259,7 +259,7 @@ H5T_set_precision(H5T_t *dt, size_t prec) /* Commit */ dt->shared->size = size; - if (H5T_is_atomic(dt)) { + if (H5T_IS_ATOMIC(dt->shared)) { dt->shared->u.atomic.offset = offset; dt->shared->u.atomic.prec = prec; } diff --git a/src/H5Tpublic.h b/src/H5Tpublic.h index 8097546..83c118b 100644 --- a/src/H5Tpublic.h +++ b/src/H5Tpublic.h @@ -24,7 +24,7 @@ #define HOFFSET(S,M) (offsetof(S,M)) -/* These are the various classes of data types */ +/* These are the various classes of datatypes */ /* If this goes over 16 types (0-15), the file format will need to change) */ typedef enum H5T_class_t { H5T_NO_CLASS = -1, /*error */ @@ -134,7 +134,7 @@ typedef enum H5T_pad_t { /* Commands sent to conversion functions */ typedef enum H5T_cmd_t { H5T_CONV_INIT = 0, /*query and/or initialize private data */ - H5T_CONV_CONV = 1, /*convert data from source to dest data type */ + H5T_CONV_CONV = 1, /*convert data from source to dest datatype */ H5T_CONV_FREE = 2 /*function is being removed from path */ } H5T_cmd_t; @@ -181,7 +181,7 @@ typedef struct { extern "C" { #endif -/* All data type conversion functions are... */ +/* All datatype conversion functions are... */ typedef herr_t (*H5T_conv_t) (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts, size_t buf_stride, size_t bkg_stride, void *buf, void *bkg, hid_t dset_xfer_plist); @@ -468,7 +468,7 @@ H5_DLLVAR hid_t H5T_NATIVE_UINT_LEAST64_g; H5_DLLVAR hid_t H5T_NATIVE_INT_FAST64_g; H5_DLLVAR hid_t H5T_NATIVE_UINT_FAST64_g; -/* Operations defined on all data types */ +/* Operations defined on all datatypes */ H5_DLL hid_t H5Topen(hid_t loc_id, const char *name); H5_DLL hid_t H5Tcreate(H5T_class_t type, size_t size); H5_DLL hid_t H5Tcopy(hid_t type_id); @@ -478,29 +478,29 @@ H5_DLL herr_t H5Tlock(hid_t type_id); H5_DLL herr_t H5Tcommit(hid_t loc_id, const char *name, hid_t type_id); H5_DLL htri_t H5Tcommitted(hid_t type_id); -/* Operations defined on compound data types */ +/* Operations defined on compound datatypes */ H5_DLL herr_t H5Tinsert(hid_t parent_id, const char *name, size_t offset, hid_t member_id); H5_DLL herr_t H5Tpack(hid_t type_id); -/* Operations defined on enumeration data types */ +/* Operations defined on enumeration datatypes */ H5_DLL hid_t H5Tenum_create(hid_t base_id); -H5_DLL herr_t H5Tenum_insert(hid_t type, const char *name, void *value); -H5_DLL herr_t H5Tenum_nameof(hid_t type, void *value, char *name/*out*/, +H5_DLL herr_t H5Tenum_insert(hid_t type, const char *name, const void *value); +H5_DLL herr_t H5Tenum_nameof(hid_t type, const void *value, char *name/*out*/, size_t size); H5_DLL herr_t H5Tenum_valueof(hid_t type, const char *name, void *value/*out*/); -/* Operations defined on variable-length data types */ +/* Operations defined on variable-length datatypes */ H5_DLL hid_t H5Tvlen_create(hid_t base_id); -/* Operations defined on array data types */ +/* Operations defined on array datatypes */ H5_DLL hid_t H5Tarray_create(hid_t base_id, int ndims, const hsize_t dim[/* ndims */], const int perm[/* ndims */]); H5_DLL int H5Tget_array_ndims(hid_t type_id); H5_DLL int H5Tget_array_dims(hid_t type_id, hsize_t dims[], int perm[]); -/* Operations defined on opaque data types */ +/* Operations defined on opaque datatypes */ H5_DLL herr_t H5Tset_tag(hid_t type, const char *tag); H5_DLL char *H5Tget_tag(hid_t type); @@ -528,8 +528,7 @@ H5_DLL int H5Tget_member_index(hid_t type_id, const char *name); H5_DLL size_t H5Tget_member_offset(hid_t type_id, int membno); H5_DLL H5T_class_t H5Tget_member_class(hid_t type_id, int membno); H5_DLL hid_t H5Tget_member_type(hid_t type_id, int membno); -H5_DLL herr_t H5Tget_member_value(hid_t type_id, int membno, - void *value/*out*/); +H5_DLL herr_t H5Tget_member_value(hid_t type_id, int membno, void *value/*out*/); H5_DLL H5T_cset_t H5Tget_cset(hid_t type_id); H5_DLL htri_t H5Tis_variable_str(hid_t type_id); H5_DLL hid_t H5Tget_native_type(hid_t type_id, H5T_direction_t direction); -- cgit v0.12