summaryrefslogtreecommitdiffstats
path: root/src/H5Odtype.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5Odtype.c')
-rw-r--r--src/H5Odtype.c447
1 files changed, 205 insertions, 242 deletions
diff --git a/src/H5Odtype.c b/src/H5Odtype.c
index cad92d9..abab4cf 100644
--- a/src/H5Odtype.c
+++ b/src/H5Odtype.c
@@ -92,6 +92,7 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt)
unsigned flags, version;
int i, j;
size_t z;
+ herr_t ret_value=SUCCEED; /* Return value */
FUNC_ENTER_NOINIT(H5O_dtype_decode_helper);
@@ -102,10 +103,8 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt)
/* decode */
UINT32DECODE(*pp, flags);
version = (flags>>4) & 0x0f;
- if (version!=H5O_DTYPE_VERSION_COMPAT && version!=H5O_DTYPE_VERSION_UPDATED) {
- HRETURN_ERROR(H5E_DATATYPE, H5E_CANTLOAD, FAIL,
- "bad version number for data type message");
- }
+ if (version!=H5O_DTYPE_VERSION_COMPAT && version!=H5O_DTYPE_VERSION_UPDATED)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTLOAD, FAIL, "bad version number for data type message");
dt->type = (H5T_class_t)(flags & 0x0f);
flags >>= 8;
UINT32DECODE(*pp, dt->size);
@@ -140,10 +139,8 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt)
*/
z = flags & 0xff;
assert(0==(z&0x7)); /*must be aligned*/
- if (NULL==(dt->u.opaque.tag=H5MM_malloc(z+1))) {
- HRETURN_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL,
- "memory allocation failed");
- }
+ if (NULL==(dt->u.opaque.tag=H5MM_malloc(z+1)))
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed");
HDmemcpy(dt->u.opaque.tag, *pp, z);
dt->u.opaque.tag[z] = '\0';
*pp += z;
@@ -168,8 +165,7 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt)
dt->u.atomic.u.f.norm = H5T_NORM_IMPLIED;
break;
default:
- HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL,
- "unknown floating-point normalization");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "unknown floating-point normalization");
}
dt->u.atomic.u.f.sign = (flags >> 8) & 0xff;
UINT16DECODE(*pp, dt->u.atomic.offset);
@@ -192,10 +188,8 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt)
dt->u.compnd.nalloc = dt->u.compnd.nmembs;
dt->u.compnd.memb = H5MM_calloc(dt->u.compnd.nalloc*
sizeof(H5T_cmemb_t));
- if (NULL==dt->u.compnd.memb) {
- HRETURN_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL,
- "memory allocation failed");
- }
+ if (NULL==dt->u.compnd.memb)
+ HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed");
for (i = 0; i < dt->u.compnd.nmembs; i++) {
int ndims=0; /* Number of dimensions of the array field */
hsize_t dim[H5O_LAYOUT_NDIMS]; /* Dimensions of the array */
@@ -234,10 +228,8 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt)
/* Allocate space for the field's datatype */
temp_type = H5FL_ALLOC (H5T_t,1);
- if (NULL==temp_type) {
- HRETURN_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL,
- "memory allocation failed");
- }
+ if (NULL==temp_type)
+ HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed");
temp_type->ent.header = HADDR_UNDEF;
/* Decode the field's datatype information */
@@ -245,7 +237,7 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt)
for (j=0; j<=i; j++)
H5MM_xfree(dt->u.compnd.memb[j].name);
H5MM_xfree(dt->u.compnd.memb);
- HRETURN_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL, "unable to decode member type");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL, "unable to decode member type");
}
/* Go create the array datatype now, for older versions of the datatype message */
@@ -261,7 +253,7 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt)
for (j=0; j<=i; j++)
H5MM_xfree(dt->u.compnd.memb[j].name);
H5MM_xfree(dt->u.compnd.memb);
- HRETURN_ERROR(H5E_DATATYPE, H5E_CANTREGISTER, FAIL, "unable to create array datatype");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTREGISTER, FAIL, "unable to create array datatype");
}
/* Close the base type for the array */
@@ -297,22 +289,15 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt)
*/
dt->u.enumer.nmembs = dt->u.enumer.nalloc = flags & 0xffff;
assert(dt->u.enumer.nmembs>=0);
- if (NULL==(dt->parent=H5FL_ALLOC(H5T_t,1))) {
- HRETURN_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL,
- "memory allocation failed");
- }
+ if (NULL==(dt->parent=H5FL_ALLOC(H5T_t,1)))
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed");
dt->parent->ent.header = HADDR_UNDEF;
- if (H5O_dtype_decode_helper(f, pp, dt->parent)<0) {
- HRETURN_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL,
- "unable to decode parent data type");
- }
- if (NULL==(dt->u.enumer.name=H5MM_calloc(dt->u.enumer.nalloc *
- sizeof(char*))) ||
- NULL==(dt->u.enumer.value=H5MM_calloc(dt->u.enumer.nalloc *
- dt->parent->size))) {
- HRETURN_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL,
- "memory allocation failed");
- }
+ if (H5O_dtype_decode_helper(f, pp, dt->parent)<0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL, "unable to decode parent data type");
+ if (NULL==(dt->u.enumer.name=H5MM_calloc(dt->u.enumer.nalloc * sizeof(char*))) ||
+ NULL==(dt->u.enumer.value=H5MM_calloc(dt->u.enumer.nalloc *
+ dt->parent->size)))
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed");
/* Names, each a multiple of 8 with null termination */
for (i=0; i<dt->u.enumer.nmembs; i++) {
@@ -359,18 +344,15 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt)
/* Decode base type of VL information */
if (NULL==(dt->parent = H5FL_ALLOC(H5T_t,1)))
- HRETURN_ERROR (H5E_DATATYPE, H5E_NOSPACE, FAIL,
- "memory allocation failed");
+ HGOTO_ERROR (H5E_DATATYPE, H5E_NOSPACE, FAIL, "memory allocation failed");
dt->parent->ent.header = HADDR_UNDEF;
if (H5O_dtype_decode_helper(f, pp, dt->parent)<0)
- HRETURN_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL,
- "unable to decode VL parent type");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL, "unable to decode VL parent type");
dt->force_conv=TRUE;
/* Mark this type as on disk */
if (H5T_vlen_mark(dt, f, H5T_VLEN_DISK)<0)
- HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL,
- "invalid VL location");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "invalid VL location");
break;
case H5T_TIME: /* Time datatypes */
@@ -400,10 +382,10 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt)
/* Decode base type of array */
if (NULL==(dt->parent = H5FL_ALLOC(H5T_t,1)))
- HRETURN_ERROR (H5E_DATATYPE, H5E_NOSPACE, FAIL, "memory allocation failed");
+ HGOTO_ERROR (H5E_DATATYPE, H5E_NOSPACE, FAIL, "memory allocation failed");
dt->parent->ent.header = HADDR_UNDEF;
if (H5O_dtype_decode_helper(f, pp, dt->parent)<0)
- HRETURN_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL, "unable to decode VL parent type");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL, "unable to decode VL parent type");
/*
* Set the "force conversion" flag if a VL base datatype is used or
@@ -414,11 +396,11 @@ H5O_dtype_decode_helper(H5F_t *f, const uint8_t **pp, H5T_t *dt)
break;
default:
- HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL,
- "unknown datatype class found");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "unknown datatype class found");
}
- FUNC_LEAVE(SUCCEED);
+done:
+ FUNC_LEAVE(ret_value);
}
@@ -444,6 +426,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt)
char *hdr = (char *)*pp;
int i, j;
size_t n, z, aligned;
+ herr_t ret_value=SUCCEED; /* Return value */
FUNC_ENTER_NOINIT(H5O_dtype_encode_helper);
@@ -467,8 +450,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt)
flags |= 0x01;
break;
default:
- HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL,
- "byte order is not supported in file format yet");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "byte order is not supported in file format yet");
}
switch (dt->u.atomic.lsb_pad) {
@@ -478,8 +460,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt)
flags |= 0x02;
break;
default:
- HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL,
- "bit padding is not supported in file format yet");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "bit padding is not supported in file format yet");
}
switch (dt->u.atomic.msb_pad) {
@@ -489,8 +470,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt)
flags |= 0x04;
break;
default:
- HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL,
- "bit padding is not supported in file format yet");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "bit padding is not supported in file format yet");
}
switch (dt->u.atomic.u.i.sign) {
@@ -500,8 +480,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt)
flags |= 0x08;
break;
default:
- HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL,
- "sign scheme is not supported in file format yet");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "sign scheme is not supported in file format yet");
}
UINT16ENCODE(*pp, dt->u.atomic.offset);
@@ -519,8 +498,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt)
flags |= 0x01;
break;
default:
- HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL,
- "byte order is not supported in file format yet");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "byte order is not supported in file format yet");
}
switch (dt->u.atomic.lsb_pad) {
@@ -530,8 +508,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt)
flags |= 0x02;
break;
default:
- HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL,
- "bit padding is not supported in file format yet");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "bit padding is not supported in file format yet");
}
switch (dt->u.atomic.msb_pad) {
@@ -541,8 +518,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt)
flags |= 0x04;
break;
default:
- HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL,
- "bit padding is not supported in file format yet");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "bit padding is not supported in file format yet");
}
UINT16ENCODE(*pp, dt->u.atomic.offset);
@@ -574,8 +550,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt)
flags |= 0x01;
break;
default:
- HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL,
- "byte order is not supported in file format yet");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "byte order is not supported in file format yet");
}
switch (dt->u.atomic.lsb_pad) {
@@ -585,8 +560,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt)
flags |= 0x02;
break;
default:
- HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL,
- "bit padding is not supported in file format yet");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "bit padding is not supported in file format yet");
}
switch (dt->u.atomic.msb_pad) {
@@ -596,8 +570,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt)
flags |= 0x04;
break;
default:
- HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL,
- "bit padding is not supported in file format yet");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "bit padding is not supported in file format yet");
}
switch (dt->u.atomic.u.f.pad) {
@@ -607,8 +580,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt)
flags |= 0x08;
break;
default:
- HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL,
- "bit padding is not supported in file format yet");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "bit padding is not supported in file format yet");
}
switch (dt->u.atomic.u.f.norm) {
@@ -621,8 +593,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt)
flags |= 0x20;
break;
default:
- HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL,
- "normalization scheme is not supported in file format yet");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "normalization scheme is not supported in file format yet");
}
flags |= (dt->u.atomic.u.f.sign << 8) & 0xff00;
@@ -681,10 +652,8 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt)
} /* end if */
/* Subtype */
- if (H5O_dtype_encode_helper(pp, dt->u.compnd.memb[i].type)<0) {
- HRETURN_ERROR(H5E_DATATYPE, H5E_CANTENCODE, FAIL,
- "unable to encode member type");
- }
+ if (H5O_dtype_encode_helper(pp, dt->u.compnd.memb[i].type)<0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTENCODE, FAIL, "unable to encode member type");
}
break;
@@ -695,10 +664,8 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt)
flags = dt->u.enumer.nmembs & 0xffff;
/* Parent type */
- if (H5O_dtype_encode_helper(pp, dt->parent)<0) {
- HRETURN_ERROR(H5E_DATATYPE, H5E_CANTENCODE, FAIL,
- "unable to encode parent data type");
- }
+ if (H5O_dtype_encode_helper(pp, dt->parent)<0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTENCODE, FAIL, "unable to encode parent data type");
/* Names, each a multiple of eight bytes */
for (i=0; i<dt->u.enumer.nmembs; i++) {
@@ -740,9 +707,8 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt)
} /* end if */
/* Encode base type of VL information */
- if (H5O_dtype_encode_helper(pp, dt->parent)<0) {
- HRETURN_ERROR(H5E_DATATYPE, H5E_CANTENCODE, FAIL, "unable to encode VL parent type");
- }
+ if (H5O_dtype_encode_helper(pp, dt->parent)<0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTENCODE, FAIL, "unable to encode VL parent type");
break;
case H5T_TIME: /* Time datatypes... */
@@ -753,8 +719,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt)
flags |= 0x01;
break;
default:
- HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL,
- "byte order is not supported in file format yet");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, "byte order is not supported in file format yet");
}
UINT16ENCODE(*pp, dt->u.atomic.prec);
break;
@@ -781,7 +746,7 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt)
/* Encode base type of array's information */
if (H5O_dtype_encode_helper(pp, dt->parent)<0)
- HRETURN_ERROR(H5E_DATATYPE, H5E_CANTENCODE, FAIL, "unable to encode VL parent type");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTENCODE, FAIL, "unable to encode VL parent type");
break;
default:
@@ -794,9 +759,11 @@ H5O_dtype_encode_helper(uint8_t **pp, const H5T_t *dt)
*hdr++ = (flags >> 8) & 0xff;
*hdr++ = (flags >> 16) & 0xff;
- FUNC_LEAVE(SUCCEED);
+done:
+ FUNC_LEAVE(ret_value);
}
+
/*--------------------------------------------------------------------------
NAME
H5O_dtype_decode
@@ -820,26 +787,33 @@ H5O_dtype_decode(H5F_t *f, const uint8_t *p,
H5O_shared_t UNUSED *sh)
{
H5T_t *dt = NULL;
+ void *ret_value; /* Return value */
FUNC_ENTER_NOAPI(H5O_dtype_decode, NULL);
/* check args */
assert(p);
- if (NULL==(dt = H5FL_ALLOC(H5T_t,1))) {
- HRETURN_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL,
- "memory allocation failed");
- }
+ if (NULL==(dt = H5FL_ALLOC(H5T_t,1)))
+ HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed");
dt->ent.header = HADDR_UNDEF;
- if (H5O_dtype_decode_helper(f, &p, dt) < 0) {
- H5FL_FREE(H5T_t,dt);
- HRETURN_ERROR(H5E_DATATYPE, H5E_CANTDECODE, NULL,
- "can't decode type");
- }
- FUNC_LEAVE(dt);
+ if (H5O_dtype_decode_helper(f, &p, dt) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTDECODE, NULL, "can't decode type");
+
+ /* Set return value */
+ ret_value=dt;
+
+done:
+ if(ret_value==NULL) {
+ if(dt!=NULL)
+ H5FL_FREE(H5T_t,dt);
+ } /* end if */
+
+ FUNC_LEAVE(ret_value);
}
+
/*--------------------------------------------------------------------------
NAME
H5O_dtype_encode
@@ -861,6 +835,7 @@ static herr_t
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);
@@ -870,13 +845,14 @@ H5O_dtype_encode(H5F_t UNUSED *f, uint8_t *p, const void *mesg)
assert(dt);
/* encode */
- if (H5O_dtype_encode_helper(&p, dt) < 0) {
- HRETURN_ERROR(H5E_DATATYPE, H5E_CANTENCODE, FAIL,
- "can't encode type");
- }
+ if (H5O_dtype_encode_helper(&p, dt) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTENCODE, FAIL, "can't encode type");
+
+done:
FUNC_LEAVE(SUCCEED);
}
+
/*--------------------------------------------------------------------------
NAME
H5O_dtype_copy
@@ -899,6 +875,7 @@ H5O_dtype_copy(const void *_src, void *_dst)
{
const H5T_t *src = (const H5T_t *) _src;
H5T_t *dst = NULL;
+ void *ret_value; /* Return value */
FUNC_ENTER_NOAPI(H5O_dtype_copy, NULL);
@@ -907,7 +884,7 @@ H5O_dtype_copy(const void *_src, void *_dst)
/* copy */
if (NULL == (dst = H5T_copy(src, H5T_COPY_ALL)))
- HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, NULL, "can't copy type");
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, NULL, "can't copy type");
/* was result already allocated? */
if (_dst) {
@@ -915,9 +892,15 @@ H5O_dtype_copy(const void *_src, void *_dst)
H5FL_FREE(H5T_t,dst);
dst = (H5T_t *) _dst;
}
- FUNC_LEAVE((void *) dst);
+
+ /* Set return value */
+ ret_value=dst;
+
+done:
+ FUNC_LEAVE(ret_value);
}
+
/*--------------------------------------------------------------------------
NAME
H5O_dtype_size
@@ -977,9 +960,8 @@ H5O_dtype_size(H5F_t *f, const void *mesg)
case H5T_ENUM:
ret_value += H5O_dtype_size(f, dt->parent);
- for (i=0; i<dt->u.enumer.nmembs; i++) {
+ for (i=0; i<dt->u.enumer.nmembs; i++)
ret_value += ((HDstrlen(dt->u.enumer.name[i])+8)/8)*8;
- }
ret_value += dt->u.enumer.nmembs * dt->parent->size;
break;
@@ -1005,6 +987,7 @@ H5O_dtype_size(H5F_t *f, const void *mesg)
FUNC_LEAVE(ret_value);
}
+
/*-------------------------------------------------------------------------
* Function: H5O_dtype_reset
@@ -1026,19 +1009,20 @@ H5O_dtype_reset(void *_mesg)
{
H5T_t *dt = (H5T_t *) _mesg;
H5T_t *tmp = NULL;
+ herr_t ret_value=SUCCEED; /* Return value */
FUNC_ENTER_NOAPI(H5O_dtype_reset, FAIL);
if (dt) {
- if (NULL==(tmp = H5FL_ALLOC(H5T_t,0))) {
- HRETURN_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL,
- "memory allocation failed");
- }
+ if (NULL==(tmp = H5FL_ALLOC(H5T_t,0)))
+ HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed");
*tmp = *dt;
H5T_close(tmp);
HDmemset(dt, 0, sizeof(H5T_t));
}
- FUNC_LEAVE(SUCCEED);
+
+done:
+ FUNC_LEAVE(ret_value);
}
@@ -1089,6 +1073,7 @@ H5O_dtype_get_share(H5F_t UNUSED *f, const void *_mesg,
H5O_shared_t *sh/*out*/)
{
const H5T_t *dt = (const H5T_t *)_mesg;
+ herr_t ret_value=SUCCEED; /* Return value */
FUNC_ENTER_NOAPI(H5O_dtype_get_share, FAIL);
@@ -1099,12 +1084,11 @@ H5O_dtype_get_share(H5F_t UNUSED *f, const void *_mesg,
assert (H5T_STATE_NAMED==dt->state || H5T_STATE_OPEN==dt->state);
sh->in_gh = FALSE;
sh->u.ent = dt->ent;
- } else {
- HRETURN_ERROR (H5E_DATATYPE, H5E_CANTINIT, FAIL,
- "data type is not sharable");
- }
+ } else
+ HGOTO_ERROR (H5E_DATATYPE, H5E_CANTINIT, FAIL, "data type is not sharable");
- FUNC_LEAVE (SUCCEED);
+done:
+ FUNC_LEAVE (ret_value);
}
@@ -1140,6 +1124,7 @@ H5O_dtype_set_share (H5F_t UNUSED *f, void *_mesg/*in,out*/,
FUNC_LEAVE (SUCCEED);
}
+
/*--------------------------------------------------------------------------
NAME
H5O_dtype_debug
@@ -1179,43 +1164,43 @@ H5O_dtype_debug(H5F_t *f, const void *mesg, FILE *stream,
assert(fwidth >= 0);
switch (dt->type) {
- case H5T_INTEGER:
- s = "integer";
- break;
- case H5T_FLOAT:
- s = "floating-point";
- break;
- case H5T_TIME:
- s = "date and time";
- break;
- case H5T_STRING:
- s = "text string";
- break;
- case H5T_BITFIELD:
- s = "bit field";
- break;
- case H5T_OPAQUE:
- s = "opaque";
- break;
- case H5T_COMPOUND:
- s = "compound";
- break;
- case H5T_REFERENCE:
- s = "reference";
- break;
- case H5T_ENUM:
- s = "enum";
- break;
- case H5T_ARRAY:
- s = "array";
- break;
- case H5T_VLEN:
- s = "variable-length sequence";
- break;
- default:
- sprintf(buf, "H5T_CLASS_%d", (int) (dt->type));
- s = buf;
- break;
+ case H5T_INTEGER:
+ s = "integer";
+ break;
+ case H5T_FLOAT:
+ s = "floating-point";
+ break;
+ case H5T_TIME:
+ s = "date and time";
+ break;
+ case H5T_STRING:
+ s = "text string";
+ break;
+ case H5T_BITFIELD:
+ s = "bit field";
+ break;
+ case H5T_OPAQUE:
+ s = "opaque";
+ break;
+ case H5T_COMPOUND:
+ s = "compound";
+ break;
+ case H5T_REFERENCE:
+ s = "reference";
+ break;
+ case H5T_ENUM:
+ s = "enum";
+ break;
+ case H5T_ARRAY:
+ s = "array";
+ break;
+ case H5T_VLEN:
+ s = "variable-length sequence";
+ break;
+ default:
+ sprintf(buf, "H5T_CLASS_%d", (int) (dt->type));
+ s = buf;
+ break;
}
fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
"Type class:",
@@ -1237,28 +1222,6 @@ H5O_dtype_debug(H5F_t *f, const void *mesg, FILE *stream,
fprintf(stream, "%*s%-*s %lu\n", indent+3, "", MAX(0, fwidth-3),
"Byte offset:",
(unsigned long) (dt->u.compnd.memb[i].offset));
-#ifdef OLD_WAY
- fprintf(stream, "%*s%-*s %d%s\n", indent+3, "", MAX(0, fwidth-3),
- "Dimensionality:",
- dt->u.compnd.memb[i].ndims,
- 0==dt->u.compnd.memb[i].ndims?" (scalar)":"");
- if (dt->u.compnd.memb[i].ndims>0) {
- fprintf(stream, "%*s%-*s {", indent+3, "", MAX(0, fwidth-3),
- "Size:");
- for (j=0; j<dt->u.compnd.memb[i].ndims; j++) {
- fprintf(stream, "%s%lu", j?", ":"",
- (unsigned long)(dt->u.compnd.memb[i].dim[j]));
- }
- fprintf(stream, "}\n");
- fprintf(stream, "%*s%-*s {", indent+3, "", MAX(0, fwidth-3),
- "Permutation:");
- for (j=0; j<dt->u.compnd.memb[i].ndims; j++) {
- fprintf(stream, "%s%lu", j?", ":"",
- (unsigned long)(dt->u.compnd.memb[i].perm[j]));
- }
- fprintf(stream, "}\n");
- }
-#endif /* OLD_WAY */
H5O_dtype_debug(f, dt->u.compnd.memb[i].type, stream,
indent+3, MAX(0, fwidth - 3));
}
@@ -1309,22 +1272,22 @@ H5O_dtype_debug(H5F_t *f, const void *mesg, FILE *stream,
H5O_dtype_debug(f, dt->parent, stream, indent+3, MAX(0, fwidth-3));
} else {
switch (dt->u.atomic.order) {
- case H5T_ORDER_LE:
- s = "little endian";
- break;
- case H5T_ORDER_BE:
- s = "big endian";
- break;
- case H5T_ORDER_VAX:
- s = "VAX";
- break;
- case H5T_ORDER_NONE:
- s = "none";
- break;
- default:
- sprintf(buf, "H5T_ORDER_%d", dt->u.atomic.order);
- s = buf;
- break;
+ case H5T_ORDER_LE:
+ s = "little endian";
+ break;
+ case H5T_ORDER_BE:
+ s = "big endian";
+ break;
+ case H5T_ORDER_VAX:
+ s = "VAX";
+ break;
+ case H5T_ORDER_NONE:
+ s = "none";
+ break;
+ default:
+ sprintf(buf, "H5T_ORDER_%d", dt->u.atomic.order);
+ s = buf;
+ break;
}
fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
"Byte order:",
@@ -1341,66 +1304,66 @@ H5O_dtype_debug(H5F_t *f, const void *mesg, FILE *stream,
1==dt->u.atomic.offset?"":"s");
switch (dt->u.atomic.lsb_pad) {
- case H5T_PAD_ZERO:
- s = "zero";
- break;
- case H5T_PAD_ONE:
- s = "one";
- break;
- default:
- s = "pad?";
- break;
+ case H5T_PAD_ZERO:
+ s = "zero";
+ break;
+ case H5T_PAD_ONE:
+ s = "one";
+ break;
+ default:
+ s = "pad?";
+ break;
}
fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
"Low pad type:", s);
switch (dt->u.atomic.msb_pad) {
- case H5T_PAD_ZERO:
- s = "zero";
- break;
- case H5T_PAD_ONE:
- s = "one";
- break;
- default:
- s = "pad?";
- break;
+ case H5T_PAD_ZERO:
+ s = "zero";
+ break;
+ case H5T_PAD_ONE:
+ s = "one";
+ break;
+ default:
+ s = "pad?";
+ break;
}
fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
"High pad type:", s);
if (H5T_FLOAT == dt->type) {
switch (dt->u.atomic.u.f.pad) {
- case H5T_PAD_ZERO:
- s = "zero";
- break;
- case H5T_PAD_ONE:
- s = "one";
- break;
- default:
- if (dt->u.atomic.u.f.pad < 0) {
- sprintf(buf, "H5T_PAD_%d", -(dt->u.atomic.u.f.pad));
- } else {
- sprintf(buf, "bit-%d", dt->u.atomic.u.f.pad);
- }
- s = buf;
- break;
+ case H5T_PAD_ZERO:
+ s = "zero";
+ break;
+ case H5T_PAD_ONE:
+ s = "one";
+ break;
+ default:
+ if (dt->u.atomic.u.f.pad < 0) {
+ sprintf(buf, "H5T_PAD_%d", -(dt->u.atomic.u.f.pad));
+ } else {
+ sprintf(buf, "bit-%d", dt->u.atomic.u.f.pad);
+ }
+ s = buf;
+ break;
}
fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
"Internal pad type:", s);
switch (dt->u.atomic.u.f.norm) {
- case H5T_NORM_IMPLIED:
- s = "implied";
- break;
- case H5T_NORM_MSBSET:
- s = "msb set";
- break;
- case H5T_NORM_NONE:
- s = "none";
- break;
- default:
- sprintf(buf, "H5T_NORM_%d", (int) (dt->u.atomic.u.f.norm));
- s = buf;
+ case H5T_NORM_IMPLIED:
+ s = "implied";
+ break;
+ case H5T_NORM_MSBSET:
+ s = "msb set";
+ break;
+ case H5T_NORM_NONE:
+ s = "none";
+ break;
+ default:
+ sprintf(buf, "H5T_NORM_%d", (int) (dt->u.atomic.u.f.norm));
+ s = buf;
}
fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
"Normalization:", s);
@@ -1431,16 +1394,16 @@ H5O_dtype_debug(H5F_t *f, const void *mesg, FILE *stream,
} else if (H5T_INTEGER == dt->type) {
switch (dt->u.atomic.u.i.sign) {
- case H5T_SGN_NONE:
- s = "none";
- break;
- case H5T_SGN_2:
- s = "2's comp";
- break;
- default:
- sprintf(buf, "H5T_SGN_%d", (int) (dt->u.atomic.u.i.sign));
- s = buf;
- break;
+ case H5T_SGN_NONE:
+ s = "none";
+ break;
+ case H5T_SGN_2:
+ s = "2's comp";
+ break;
+ default:
+ sprintf(buf, "H5T_SGN_%d", (int) (dt->u.atomic.u.i.sign));
+ s = buf;
+ break;
}
fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
"Sign scheme:", s);