diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 1998-01-16 22:23:43 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 1998-01-16 22:23:43 (GMT) |
commit | c2c94c31878dc42926661c9cb7e71be620196fc1 (patch) | |
tree | ee9ce2ae309882348dc1eafc1d105b5e6646605e /src/H5Odtype.c | |
parent | 903e677366a86ea385d5cfe1241f3f53132941de (diff) | |
download | hdf5-c2c94c31878dc42926661c9cb7e71be620196fc1.zip hdf5-c2c94c31878dc42926661c9cb7e71be620196fc1.tar.gz hdf5-c2c94c31878dc42926661c9cb7e71be620196fc1.tar.bz2 |
[svn-r157] Reformatted code with indent...
Diffstat (limited to 'src/H5Odtype.c')
-rw-r--r-- | src/H5Odtype.c | 1345 |
1 files changed, 671 insertions, 674 deletions
diff --git a/src/H5Odtype.c b/src/H5Odtype.c index 35105de..4315717 100644 --- a/src/H5Odtype.c +++ b/src/H5Odtype.c @@ -11,12 +11,12 @@ ****************************************************************************/ #ifdef RCSID -static char RcsId[] = "@(#)$Revision$"; +static char RcsId[] = "@(#)$Revision$"; #endif /* $Id$ */ -#define H5T_PACKAGE /*prevent warning from including H5Tpkg.h */ +#define H5T_PACKAGE /*prevent warning from including H5Tpkg.h */ #include <H5private.h> #include <H5Eprivate.h> @@ -25,46 +25,47 @@ static char RcsId[] = "@(#)$Revision$"; #include <H5Oprivate.h> #include <H5Tpkg.h> -#define PABLO_MASK H5O_dtype_mask +#define PABLO_MASK H5O_dtype_mask /* PRIVATE PROTOTYPES */ -static herr_t H5O_dtype_encode (H5F_t *f, size_t raw_size, uint8 *p, - const void *mesg); -static void *H5O_dtype_decode (H5F_t *f, size_t raw_size, const uint8 *p); -static void *H5O_dtype_copy (const void *_mesg, void *_dest); -static size_t H5O_dtype_size (H5F_t *f, const void *_mesg); -static herr_t H5O_dtype_reset (void *_mesg); -static herr_t H5O_dtype_debug (H5F_t *f, const void *_mesg, - FILE *stream, intn indent, intn fwidth); +static herr_t H5O_dtype_encode(H5F_t *f, size_t raw_size, uint8 *p, + const void *mesg); +static void *H5O_dtype_decode(H5F_t *f, size_t raw_size, const uint8 *p); +static void *H5O_dtype_copy(const void *_mesg, void *_dest); +static size_t H5O_dtype_size(H5F_t *f, const void *_mesg); +static herr_t H5O_dtype_reset(void *_mesg); +static herr_t H5O_dtype_debug(H5F_t *f, const void *_mesg, + FILE * stream, intn indent, intn fwidth); /* This message derives from H5O */ -const H5O_class_t H5O_DTYPE[1] = {{ - H5O_DTYPE_ID, /* message id number */ - "data_type", /* message name for debugging */ - sizeof (H5T_t), /* native message size */ - H5O_dtype_decode, /* decode message */ - H5O_dtype_encode, /* encode message */ - H5O_dtype_copy, /* copy the native value */ - H5O_dtype_size, /* size of raw message */ - H5O_dtype_reset, /* reset method */ - H5O_dtype_debug, /* debug the message */ -}}; +const H5O_class_t H5O_DTYPE[1] = +{ + { + H5O_DTYPE_ID, /* message id number */ + "data_type", /* message name for debugging */ + sizeof(H5T_t), /* native message size */ + H5O_dtype_decode, /* decode message */ + H5O_dtype_encode, /* encode message */ + H5O_dtype_copy, /* copy the native value */ + H5O_dtype_size, /* size of raw message */ + H5O_dtype_reset, /* reset method */ + H5O_dtype_debug, /* debug the message */ + }}; /* Interface initialization */ -static hbool_t interface_initialize_g = FALSE; -#define INTERFACE_INIT NULL - +static hbool_t interface_initialize_g = FALSE; +#define INTERFACE_INIT NULL /*------------------------------------------------------------------------- - * Function: H5O_dtype_decode_helper + * Function: H5O_dtype_decode_helper * - * Purpose: Decodes a data type + * Purpose: Decodes a data type * - * Return: Success: SUCCEED + * Return: Success: SUCCEED * - * Failure: FAIL + * Failure: FAIL * - * Programmer: Robb Matzke + * Programmer: Robb Matzke * Monday, December 8, 1997 * * Modifications: @@ -72,126 +73,126 @@ static hbool_t interface_initialize_g = FALSE; *------------------------------------------------------------------------- */ static herr_t -H5O_dtype_decode_helper (const uint8 **pp, H5T_t *dt) +H5O_dtype_decode_helper(const uint8 **pp, H5T_t *dt) { - uintn flags, perm_word; - intn i, j; - - FUNC_ENTER (H5O_dtype_decode_helper, FAIL); - - /* check args */ - assert (pp && *pp); - assert (dt); - - /* decode */ - UINT32DECODE (*pp, flags); - dt->type = flags & 0xff; - flags >>= 8; - UINT32DECODE (*pp, dt->size); - - switch (dt->type) { - case H5T_INTEGER: - /* - * Integer types... - */ - dt->u.atomic.order = (flags & 0x1) ? H5T_ORDER_BE : H5T_ORDER_LE; - dt->u.atomic.lsb_pad = (flags & 0x2) ? H5T_PAD_ONE : H5T_PAD_ZERO; - dt->u.atomic.msb_pad = (flags & 0x4) ? H5T_PAD_ONE : H5T_PAD_ZERO; - dt->u.atomic.u.i.sign = (flags & 0x8) ? H5T_SGN_2 : H5T_SGN_NONE; - UINT16DECODE (*pp, dt->u.atomic.offset); - UINT16DECODE (*pp, dt->u.atomic.prec); - break; - - case H5T_FLOAT: - /* - * Floating-point types... - */ - dt->u.atomic.order = (flags & 0x1) ? H5T_ORDER_BE : H5T_ORDER_LE; - dt->u.atomic.lsb_pad = (flags & 0x2) ? H5T_PAD_ONE : H5T_PAD_ZERO; - dt->u.atomic.msb_pad = (flags & 0x4) ? H5T_PAD_ONE : H5T_PAD_ZERO; - dt->u.atomic.u.f.pad = (flags & 0x8) ? H5T_PAD_ONE : H5T_PAD_ZERO; - switch ((flags>>4) & 0x03) { - case 0: - dt->u.atomic.u.f.norm = H5T_NORM_NONE; - break; - case 1: - dt->u.atomic.u.f.norm = H5T_NORM_MSBSET; - break; - case 2: - dt->u.atomic.u.f.norm = H5T_NORM_IMPLIED; - break; - default: - HRETURN_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); - UINT16DECODE (*pp, dt->u.atomic.prec); - dt->u.atomic.u.f.epos = *(*pp)++; - dt->u.atomic.u.f.esize = *(*pp)++; - assert (dt->u.atomic.u.f.esize>0); - dt->u.atomic.u.f.mpos = *(*pp)++; - dt->u.atomic.u.f.msize = *(*pp)++; - assert (dt->u.atomic.u.f.msize>0); - UINT32DECODE (*pp, dt->u.atomic.u.f.ebias); - break; - - case H5T_COMPOUND: - /* - * Compound data types... - */ - dt->u.compnd.nmembs = flags & 0xffff; - assert (dt->u.compnd.nmembs>0); - dt->u.compnd.nalloc = dt->u.compnd.nmembs; - dt->u.compnd.memb = H5MM_xcalloc (dt->u.compnd.nalloc, - sizeof(H5T_member_t)); - for (i=0; i<dt->u.compnd.nmembs; i++) { - dt->u.compnd.memb[i].name = H5MM_xstrdup (*pp); - *pp += ((strlen (*pp)+8)/8) * 8; /*multiple of 8 w/ null terminator*/ - UINT32DECODE (*pp, dt->u.compnd.memb[i].offset); - dt->u.compnd.memb[i].ndims = *(*pp)++; - assert (dt->u.compnd.memb[i].ndims<=4); - *pp += 3; /*reserved bytes*/ - for (j=0; j<dt->u.compnd.memb[i].ndims; j++) { - UINT32DECODE (*pp, dt->u.compnd.memb[i].dim[j]); - } - UINT32DECODE (*pp, perm_word); - dt->u.compnd.memb[i].perm[0] = (perm_word >> 0) & 0xff; - dt->u.compnd.memb[i].perm[1] = (perm_word >> 8) & 0xff; - dt->u.compnd.memb[i].perm[2] = (perm_word >> 16) & 0xff; - dt->u.compnd.memb[i].perm[3] = (perm_word >> 24) & 0xff; - if (H5O_dtype_decode_helper (pp, &(dt->u.compnd.memb[i].type))<0 || - H5T_COMPOUND==dt->u.compnd.memb[i].type.type) { - for (j=0; j<=i; j++) H5MM_xfree (dt->u.compnd.memb[i].name); - H5MM_xfree (dt->u.compnd.memb); - HRETURN_ERROR (H5E_DATATYPE, H5E_CANTDECODE, FAIL, - "can't decode member type"); - } - } - break; - - default: - if (flags) { - HRETURN_ERROR (H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "class flags are non-zero"); - } - break; - } - - FUNC_LEAVE (SUCCEED); + uintn flags, perm_word; + intn i, j; + + FUNC_ENTER(H5O_dtype_decode_helper, FAIL); + + /* check args */ + assert(pp && *pp); + assert(dt); + + /* decode */ + UINT32DECODE(*pp, flags); + dt->type = flags & 0xff; + flags >>= 8; + UINT32DECODE(*pp, dt->size); + + switch (dt->type) { + case H5T_INTEGER: + /* + * Integer types... + */ + dt->u.atomic.order = (flags & 0x1) ? H5T_ORDER_BE : H5T_ORDER_LE; + dt->u.atomic.lsb_pad = (flags & 0x2) ? H5T_PAD_ONE : H5T_PAD_ZERO; + dt->u.atomic.msb_pad = (flags & 0x4) ? H5T_PAD_ONE : H5T_PAD_ZERO; + dt->u.atomic.u.i.sign = (flags & 0x8) ? H5T_SGN_2 : H5T_SGN_NONE; + UINT16DECODE(*pp, dt->u.atomic.offset); + UINT16DECODE(*pp, dt->u.atomic.prec); + break; + + case H5T_FLOAT: + /* + * Floating-point types... + */ + dt->u.atomic.order = (flags & 0x1) ? H5T_ORDER_BE : H5T_ORDER_LE; + dt->u.atomic.lsb_pad = (flags & 0x2) ? H5T_PAD_ONE : H5T_PAD_ZERO; + dt->u.atomic.msb_pad = (flags & 0x4) ? H5T_PAD_ONE : H5T_PAD_ZERO; + dt->u.atomic.u.f.pad = (flags & 0x8) ? H5T_PAD_ONE : H5T_PAD_ZERO; + switch ((flags >> 4) & 0x03) { + case 0: + dt->u.atomic.u.f.norm = H5T_NORM_NONE; + break; + case 1: + dt->u.atomic.u.f.norm = H5T_NORM_MSBSET; + break; + case 2: + dt->u.atomic.u.f.norm = H5T_NORM_IMPLIED; + break; + default: + HRETURN_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); + UINT16DECODE(*pp, dt->u.atomic.prec); + dt->u.atomic.u.f.epos = *(*pp)++; + dt->u.atomic.u.f.esize = *(*pp)++; + assert(dt->u.atomic.u.f.esize > 0); + dt->u.atomic.u.f.mpos = *(*pp)++; + dt->u.atomic.u.f.msize = *(*pp)++; + assert(dt->u.atomic.u.f.msize > 0); + UINT32DECODE(*pp, dt->u.atomic.u.f.ebias); + break; + + case H5T_COMPOUND: + /* + * Compound data types... + */ + dt->u.compnd.nmembs = flags & 0xffff; + assert(dt->u.compnd.nmembs > 0); + dt->u.compnd.nalloc = dt->u.compnd.nmembs; + dt->u.compnd.memb = H5MM_xcalloc(dt->u.compnd.nalloc, + sizeof(H5T_member_t)); + for (i = 0; i < dt->u.compnd.nmembs; i++) { + dt->u.compnd.memb[i].name = H5MM_xstrdup(*pp); + *pp += ((strlen(*pp) + 8) / 8) * 8; /*multiple of 8 w/ null terminator */ + UINT32DECODE(*pp, dt->u.compnd.memb[i].offset); + dt->u.compnd.memb[i].ndims = *(*pp)++; + assert(dt->u.compnd.memb[i].ndims <= 4); + *pp += 3; /*reserved bytes */ + for (j = 0; j < dt->u.compnd.memb[i].ndims; j++) { + UINT32DECODE(*pp, dt->u.compnd.memb[i].dim[j]); + } + UINT32DECODE(*pp, perm_word); + dt->u.compnd.memb[i].perm[0] = (perm_word >> 0) & 0xff; + dt->u.compnd.memb[i].perm[1] = (perm_word >> 8) & 0xff; + dt->u.compnd.memb[i].perm[2] = (perm_word >> 16) & 0xff; + dt->u.compnd.memb[i].perm[3] = (perm_word >> 24) & 0xff; + if (H5O_dtype_decode_helper(pp, &(dt->u.compnd.memb[i].type)) < 0 || + H5T_COMPOUND == dt->u.compnd.memb[i].type.type) { + for (j = 0; j <= i; j++) + H5MM_xfree(dt->u.compnd.memb[i].name); + H5MM_xfree(dt->u.compnd.memb); + HRETURN_ERROR(H5E_DATATYPE, H5E_CANTDECODE, FAIL, + "can't decode member type"); + } + } + break; + + default: + if (flags) { + HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, + "class flags are non-zero"); + } + break; + } + + FUNC_LEAVE(SUCCEED); } - /*------------------------------------------------------------------------- - * Function: H5O_dtype_encode_helper + * Function: H5O_dtype_encode_helper * - * Purpose: Encodes a data type. + * Purpose: Encodes a data type. * - * Return: Success: SUCCEED + * Return: Success: SUCCEED * - * Failure: FAIL + * Failure: FAIL * - * Programmer: Robb Matzke + * Programmer: Robb Matzke * Monday, December 8, 1997 * * Modifications: @@ -199,191 +200,193 @@ H5O_dtype_decode_helper (const uint8 **pp, H5T_t *dt) *------------------------------------------------------------------------- */ static herr_t -H5O_dtype_encode_helper (uint8 **pp, const H5T_t *dt) +H5O_dtype_encode_helper(uint8 **pp, const H5T_t *dt) { - uintn flags = 0; - uintn perm_word; - char *hdr = *pp; - intn i, j, n; - - FUNC_ENTER (H5O_dtype_encode_helper, FAIL); - - /* check args */ - assert (pp && *pp); - assert (dt); - - /* skip the type and class bit field for now */ - *pp += 4; - UINT32ENCODE (*pp, dt->size); - - switch (dt->type) { - case H5T_INTEGER: - /* - * Integer data types... - */ - switch (dt->u.atomic.order) { - case H5T_ORDER_LE: - break; /*nothing*/ - case H5T_ORDER_BE: - flags |= 0x01; - break; - default: - HRETURN_ERROR (H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "byte order is not supported in file format yet"); - } - - switch (dt->u.atomic.lsb_pad) { - case H5T_PAD_ZERO: - break; /*nothing*/ - case H5T_PAD_ONE: - flags |= 0x02; - break; - default: - HRETURN_ERROR (H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "bit padding is not supported in file format yet"); - } - - switch (dt->u.atomic.msb_pad) { - case H5T_PAD_ZERO: - break; /*nothing*/ - case H5T_PAD_ONE: - flags |= 0x04; - break; - default: - HRETURN_ERROR (H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "bit padding is not supported in file format yet"); - } - - switch (dt->u.atomic.u.i.sign) { - case H5T_SGN_NONE: - break; /*nothing*/ - case H5T_SGN_2: - flags |= 0x08; - break; - default: - HRETURN_ERROR (H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "sign scheme is not supported in file format yet"); - } - - UINT16ENCODE (*pp, dt->u.atomic.offset); - UINT16ENCODE (*pp, dt->u.atomic.prec); - break; - - case H5T_FLOAT: - /* - * Floating-point types... - */ - switch (dt->u.atomic.order) { - case H5T_ORDER_LE: - break; /*nothing*/ - case H5T_ORDER_BE: - flags |= 0x01; - break; - default: - HRETURN_ERROR (H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "byte order is not supported in file format yet"); - } - - switch (dt->u.atomic.lsb_pad) { - case H5T_PAD_ZERO: - break; /*nothing*/ - case H5T_PAD_ONE: - flags |= 0x02; - break; - default: - HRETURN_ERROR (H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "bit padding is not supported in file format yet"); - } - - switch (dt->u.atomic.msb_pad) { - case H5T_PAD_ZERO: - break; /*nothing*/ - case H5T_PAD_ONE: - flags |= 0x04; - break; - default: - HRETURN_ERROR (H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "bit padding is not supported in file format yet"); - } - - switch (dt->u.atomic.u.f.pad) { - case H5T_PAD_ZERO: - break; /*nothing*/ - case H5T_PAD_ONE: - flags |= 0x08; - break; - default: - HRETURN_ERROR (H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "bit padding is not supported in file format yet"); - } - - switch (dt->u.atomic.u.f.norm) { - case H5T_NORM_NONE: - break; /*nothing*/ - case H5T_NORM_MSBSET: - flags |= 0x10; - break; - case H5T_NORM_IMPLIED: - flags |= 0x20; - break; - default: - HRETURN_ERROR (H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, - "normalization scheme is not supported in file " - "format yet"); - } - - flags |= (dt->u.atomic.u.f.sign << 8) & 0xff00; - UINT16ENCODE (*pp, dt->u.atomic.offset); - UINT16ENCODE (*pp, dt->u.atomic.prec); - *(*pp)++ = dt->u.atomic.u.f.epos; - *(*pp)++ = dt->u.atomic.u.f.esize; - *(*pp)++ = dt->u.atomic.u.f.mpos; - *(*pp)++ = dt->u.atomic.u.f.msize; - UINT32ENCODE (*pp, dt->u.atomic.u.f.ebias); - break; - - case H5T_COMPOUND: - /* - * Compound data types... - */ - flags = dt->u.compnd.nmembs & 0xffff; - for (i=0; i<dt->u.compnd.nmembs; i++) { - n = strlen (dt->u.compnd.memb[i].name); - for (j=0; j<=n && j%8; j++) { - if (j<n) *(*pp)++ = dt->u.compnd.memb[i].name[j]; - else *(*pp)++ = '\0'; - } - UINT32ENCODE (*pp, dt->u.compnd.memb[i].offset); - *(*pp)++ = dt->u.compnd.memb[i].ndims; - assert (dt->u.compnd.memb[i].ndims<=4); - *(*pp)++ = '\0'; - *(*pp)++ = '\0'; - *(*pp)++ = '\0'; - for (j=0; j<dt->u.compnd.memb[i].ndims; j++) { - UINT32ENCODE (*pp, dt->u.compnd.memb[i].dim[j]); - } - for (j=0, perm_word=0; j<dt->u.compnd.memb[i].ndims; j++) { - perm_word |= dt->u.compnd.memb[i].perm[j] << (8*j); - } - UINT32ENCODE (*pp, perm_word); - if (H5O_dtype_encode_helper (pp, &(dt->u.compnd.memb[i].type))<0) { - HRETURN_ERROR (H5E_DATATYPE, H5E_CANTENCODE, FAIL, - "can't encode member type"); - } - } - break; - - default: - /*nothing*/ - break; - } - - *hdr++ = dt->type; - *hdr++ = (flags >> 0) & 0xff; - *hdr++ = (flags >> 8) & 0xff; - *hdr++ = (flags >> 16) & 0xff; - - FUNC_LEAVE (SUCCEED); + uintn flags = 0; + uintn perm_word; + char *hdr = *pp; + intn i, j, n; + + FUNC_ENTER(H5O_dtype_encode_helper, FAIL); + + /* check args */ + assert(pp && *pp); + assert(dt); + + /* skip the type and class bit field for now */ + *pp += 4; + UINT32ENCODE(*pp, dt->size); + + switch (dt->type) { + case H5T_INTEGER: + /* + * Integer data types... + */ + switch (dt->u.atomic.order) { + case H5T_ORDER_LE: + break; /*nothing */ + case H5T_ORDER_BE: + flags |= 0x01; + break; + default: + HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, + "byte order is not supported in file format yet"); + } + + switch (dt->u.atomic.lsb_pad) { + case H5T_PAD_ZERO: + break; /*nothing */ + case H5T_PAD_ONE: + flags |= 0x02; + break; + default: + HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, + "bit padding is not supported in file format yet"); + } + + switch (dt->u.atomic.msb_pad) { + case H5T_PAD_ZERO: + break; /*nothing */ + case H5T_PAD_ONE: + flags |= 0x04; + break; + default: + HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, + "bit padding is not supported in file format yet"); + } + + switch (dt->u.atomic.u.i.sign) { + case H5T_SGN_NONE: + break; /*nothing */ + case H5T_SGN_2: + flags |= 0x08; + break; + default: + HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, + "sign scheme is not supported in file format yet"); + } + + UINT16ENCODE(*pp, dt->u.atomic.offset); + UINT16ENCODE(*pp, dt->u.atomic.prec); + break; + + case H5T_FLOAT: + /* + * Floating-point types... + */ + switch (dt->u.atomic.order) { + case H5T_ORDER_LE: + break; /*nothing */ + case H5T_ORDER_BE: + flags |= 0x01; + break; + default: + HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, + "byte order is not supported in file format yet"); + } + + switch (dt->u.atomic.lsb_pad) { + case H5T_PAD_ZERO: + break; /*nothing */ + case H5T_PAD_ONE: + flags |= 0x02; + break; + default: + HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, + "bit padding is not supported in file format yet"); + } + + switch (dt->u.atomic.msb_pad) { + case H5T_PAD_ZERO: + break; /*nothing */ + case H5T_PAD_ONE: + flags |= 0x04; + break; + default: + HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, + "bit padding is not supported in file format yet"); + } + + switch (dt->u.atomic.u.f.pad) { + case H5T_PAD_ZERO: + break; /*nothing */ + case H5T_PAD_ONE: + flags |= 0x08; + break; + default: + HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, + "bit padding is not supported in file format yet"); + } + + switch (dt->u.atomic.u.f.norm) { + case H5T_NORM_NONE: + break; /*nothing */ + case H5T_NORM_MSBSET: + flags |= 0x10; + break; + case H5T_NORM_IMPLIED: + flags |= 0x20; + break; + default: + HRETURN_ERROR(H5E_DATATYPE, H5E_UNSUPPORTED, FAIL, + "normalization scheme is not supported in file " + "format yet"); + } + + flags |= (dt->u.atomic.u.f.sign << 8) & 0xff00; + UINT16ENCODE(*pp, dt->u.atomic.offset); + UINT16ENCODE(*pp, dt->u.atomic.prec); + *(*pp)++ = dt->u.atomic.u.f.epos; + *(*pp)++ = dt->u.atomic.u.f.esize; + *(*pp)++ = dt->u.atomic.u.f.mpos; + *(*pp)++ = dt->u.atomic.u.f.msize; + UINT32ENCODE(*pp, dt->u.atomic.u.f.ebias); + break; + + case H5T_COMPOUND: + /* + * Compound data types... + */ + flags = dt->u.compnd.nmembs & 0xffff; + for (i = 0; i < dt->u.compnd.nmembs; i++) { + n = strlen(dt->u.compnd.memb[i].name); + for (j = 0; j <= n && j % 8; j++) { + if (j < n) + *(*pp)++ = dt->u.compnd.memb[i].name[j]; + else + *(*pp)++ = '\0'; + } + UINT32ENCODE(*pp, dt->u.compnd.memb[i].offset); + *(*pp)++ = dt->u.compnd.memb[i].ndims; + assert(dt->u.compnd.memb[i].ndims <= 4); + *(*pp)++ = '\0'; + *(*pp)++ = '\0'; + *(*pp)++ = '\0'; + for (j = 0; j < dt->u.compnd.memb[i].ndims; j++) { + UINT32ENCODE(*pp, dt->u.compnd.memb[i].dim[j]); + } + for (j = 0, perm_word = 0; j < dt->u.compnd.memb[i].ndims; j++) { + perm_word |= dt->u.compnd.memb[i].perm[j] << (8 * j); + } + UINT32ENCODE(*pp, perm_word); + if (H5O_dtype_encode_helper(pp, &(dt->u.compnd.memb[i].type)) < 0) { + HRETURN_ERROR(H5E_DATATYPE, H5E_CANTENCODE, FAIL, + "can't encode member type"); + } + } + break; + + default: + /*nothing */ + break; + } + + *hdr++ = dt->type; + *hdr++ = (flags >> 0) & 0xff; + *hdr++ = (flags >> 8) & 0xff; + *hdr++ = (flags >> 16) & 0xff; + + FUNC_LEAVE(SUCCEED); } /*-------------------------------------------------------------------------- @@ -404,28 +407,28 @@ H5O_dtype_encode_helper (uint8 **pp, const H5T_t *dt) into a struct in memory native format. The struct is allocated within this function using malloc() and is returned to the caller. --------------------------------------------------------------------------*/ -static void * -H5O_dtype_decode (H5F_t *f, size_t raw_size, const uint8 *p) +static void * +H5O_dtype_decode(H5F_t *f, size_t raw_size, const uint8 *p) { - H5T_t *dt = NULL; - - FUNC_ENTER (H5O_dtype_decode, NULL); - - /* check args */ - assert (f); - assert (raw_size>0); - assert (p); - - dt = H5MM_xcalloc (1, sizeof(H5T_t)); - - if (H5O_dtype_decode_helper (&p, dt)<0) { - H5MM_xfree (dt); - HRETURN_ERROR (H5E_DATATYPE, H5E_CANTDECODE, NULL, - "can't decode type"); - } - assert (raw_size==H5O_dtype_size (f, (void*)dt)); - - FUNC_LEAVE (dt); + H5T_t *dt = NULL; + + FUNC_ENTER(H5O_dtype_decode, NULL); + + /* check args */ + assert(f); + assert(raw_size > 0); + assert(p); + + dt = H5MM_xcalloc(1, sizeof(H5T_t)); + + if (H5O_dtype_decode_helper(&p, dt) < 0) { + H5MM_xfree(dt); + HRETURN_ERROR(H5E_DATATYPE, H5E_CANTDECODE, NULL, + "can't decode type"); + } + assert(raw_size == H5O_dtype_size(f, (void *) dt)); + + FUNC_LEAVE(dt); } /*-------------------------------------------------------------------------- @@ -446,25 +449,24 @@ H5O_dtype_decode (H5F_t *f, size_t raw_size, const uint8 *p) message in the "raw" disk form. --------------------------------------------------------------------------*/ static herr_t -H5O_dtype_encode (H5F_t *f, size_t raw_size, uint8 *p, const void *mesg) +H5O_dtype_encode(H5F_t *f, size_t raw_size, uint8 *p, const void *mesg) { - const H5T_t *dt = (const H5T_t *)mesg; - - FUNC_ENTER (H5O_dtype_encode, FAIL); - - /* check args */ - assert (f); - assert (raw_size==H5O_dtype_size (f, mesg)); - assert (p); - assert (dt); - - /* encode */ - if (H5O_dtype_encode_helper (&p, dt)<0) { - HRETURN_ERROR (H5E_DATATYPE, H5E_CANTENCODE, FAIL, - "can't encode type"); - } - - FUNC_LEAVE (SUCCEED); + const H5T_t *dt = (const H5T_t *) mesg; + + FUNC_ENTER(H5O_dtype_encode, FAIL); + + /* check args */ + assert(f); + assert(raw_size == H5O_dtype_size(f, mesg)); + assert(p); + assert(dt); + + /* encode */ + if (H5O_dtype_encode_helper(&p, dt) < 0) { + HRETURN_ERROR(H5E_DATATYPE, H5E_CANTENCODE, FAIL, + "can't encode type"); + } + FUNC_LEAVE(SUCCEED); } /*-------------------------------------------------------------------------- @@ -475,39 +477,37 @@ H5O_dtype_encode (H5F_t *f, size_t raw_size, uint8 *p, const void *mesg) USAGE void *H5O_dtype_copy(mesg, dest) const void *mesg; IN: Pointer to the source simple datatype - struct - const void *dest; IN: Pointer to the destination simple - datatype struct + struct + const void *dest; IN: Pointer to the destination simple + datatype struct RETURNS Pointer to DEST on success, NULL on failure DESCRIPTION This function copies a native (memory) simple datatype message, allocating the destination structure if necessary. --------------------------------------------------------------------------*/ -static void * -H5O_dtype_copy (const void *_src, void *_dst) +static void * +H5O_dtype_copy(const void *_src, void *_dst) { - const H5T_t *src = (const H5T_t *)_src; - H5T_t *dst = NULL; - - FUNC_ENTER (H5O_dtype_copy, NULL); - - /* check args */ - assert (src); - - /* copy */ - if (NULL==(dst=H5T_copy (src))) { - HRETURN_ERROR (H5E_DATATYPE, H5E_CANTINIT, NULL, "can't copy type"); - } - - /* was result already allocated? */ - if (_dst) { - *((H5T_t*)_dst) = *dst; - H5MM_xfree (dst); - dst = (H5T_t*)_dst; - } - - FUNC_LEAVE ((void*)dst); + const H5T_t *src = (const H5T_t *) _src; + H5T_t *dst = NULL; + + FUNC_ENTER(H5O_dtype_copy, NULL); + + /* check args */ + assert(src); + + /* copy */ + if (NULL == (dst = H5T_copy(src))) { + HRETURN_ERROR(H5E_DATATYPE, H5E_CANTINIT, NULL, "can't copy type"); + } + /* was result already allocated? */ + if (_dst) { + *((H5T_t *) _dst) = *dst; + H5MM_xfree(dst); + dst = (H5T_t *) _dst; + } + FUNC_LEAVE((void *) dst); } /*-------------------------------------------------------------------------- @@ -527,54 +527,52 @@ H5O_dtype_copy (const void *_src, void *_dst) portion of the message). It doesn't take into account alignment. --------------------------------------------------------------------------*/ static size_t -H5O_dtype_size (H5F_t *f, const void *mesg) +H5O_dtype_size(H5F_t *f, const void *mesg) { - intn i; - size_t ret_value = 8; - const H5T_t *dt = (const H5T_t *)mesg; - - FUNC_ENTER (H5O_dtype_size, FAIL); - - assert (mesg); - - switch (dt->type) { - case H5T_INTEGER: - ret_value += 4; - break; - - case H5T_FLOAT: - ret_value += 12; - break; - - case H5T_COMPOUND: - for (i=0; i<dt->u.compnd.nmembs; i++) { - ret_value += ((HDstrlen (dt->u.compnd.memb[i].name)+8)/8)*8; - ret_value += 12 + dt->u.compnd.memb[i].ndims * 4; - ret_value += H5O_dtype_size (f, &(dt->u.compnd.memb[i].type)); - } - break; - - default: - /*no properties*/ - break; - } - - - FUNC_LEAVE (ret_value); -} + intn i; + size_t ret_value = 8; + const H5T_t *dt = (const H5T_t *) mesg; + + FUNC_ENTER(H5O_dtype_size, FAIL); + + assert(mesg); + switch (dt->type) { + case H5T_INTEGER: + ret_value += 4; + break; + + case H5T_FLOAT: + ret_value += 12; + break; + + case H5T_COMPOUND: + for (i = 0; i < dt->u.compnd.nmembs; i++) { + ret_value += ((HDstrlen(dt->u.compnd.memb[i].name) + 8) / 8) * 8; + ret_value += 12 + dt->u.compnd.memb[i].ndims * 4; + ret_value += H5O_dtype_size(f, &(dt->u.compnd.memb[i].type)); + } + break; + + default: + /*no properties */ + break; + } + + FUNC_LEAVE(ret_value); +} /*------------------------------------------------------------------------- - * Function: H5O_dtype_reset + * Function: H5O_dtype_reset * - * Purpose: Frees resources within a data type message, but doesn't free - * the message itself. + * Purpose: Frees resources within a data type message, but doesn't free + * the message itself. * - * Return: Success: SUCCEED + * Return: Success: SUCCEED * - * Failure: FAIL + * Failure: FAIL * - * Programmer: Robb Matzke + * Programmer: Robb Matzke * Tuesday, December 9, 1997 * * Modifications: @@ -582,21 +580,20 @@ H5O_dtype_size (H5F_t *f, const void *mesg) *------------------------------------------------------------------------- */ static herr_t -H5O_dtype_reset (void *_mesg) +H5O_dtype_reset(void *_mesg) { - H5T_t *dt = (H5T_t *)_mesg; - H5T_t *tmp = NULL; - - FUNC_ENTER (H5O_dtype_reset, FAIL); - - if (dt) { - tmp = H5MM_xmalloc (sizeof(H5T_t)); - *tmp = *dt; - H5T_close (tmp); - HDmemset (dt, 0, sizeof(H5T_t)); - } - - FUNC_LEAVE (SUCCEED); + H5T_t *dt = (H5T_t *) _mesg; + H5T_t *tmp = NULL; + + FUNC_ENTER(H5O_dtype_reset, FAIL); + + if (dt) { + tmp = H5MM_xmalloc(sizeof(H5T_t)); + *tmp = *dt; + H5T_close(tmp); + HDmemset(dt, 0, sizeof(H5T_t)); + } + FUNC_LEAVE(SUCCEED); } /*-------------------------------------------------------------------------- @@ -608,7 +605,7 @@ H5O_dtype_reset (void *_mesg) void *H5O_dtype_debug(f, mesg, stream, indent, fwidth) H5F_t *f; IN: pointer to the HDF5 file struct const void *mesg; IN: Pointer to the source simple datatype - struct + struct FILE *stream; IN: Pointer to the stream for output data intn indent; IN: Amount to indent information by intn fwidth; IN: Field width (?) @@ -619,233 +616,233 @@ H5O_dtype_reset (void *_mesg) parameter. --------------------------------------------------------------------------*/ static herr_t -H5O_dtype_debug (H5F_t *f, const void *mesg, FILE *stream, - intn indent, intn fwidth) +H5O_dtype_debug(H5F_t *f, const void *mesg, FILE * stream, + intn indent, intn fwidth) { - const H5T_t *dt = (const H5T_t *)mesg; - const char *s; - char buf[256]; - intn i, j; - - FUNC_ENTER (H5O_dtype_debug, FAIL); - - /* check args */ - assert (f); - assert (dt); - assert (stream); - assert (indent>=0); - 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; - default: - sprintf (buf, "H5T_CLASS_%d", (int)(dt->type)); - s = buf; - break; - } - fprintf (stream, "%*s%-*s %s\n", indent, "", fwidth, - "Type class:", - s); - - fprintf (stream, "%*s%-*s %lu byte%s\n", indent, "", fwidth, - "Size:", - (unsigned long)(dt->size), 1==dt->size?"":"s"); - - if (H5T_COMPOUND==dt->type) { - fprintf (stream, "%*s%-*s %d\n", indent, "", fwidth, - "Number of members:", - dt->u.compnd.nmembs); - for (i=0; i<dt->u.compnd.nmembs; i++) { - sprintf (buf, "Member %d:", i); - fprintf (stream, "%*s%-*s %s\n", indent, "", fwidth, - buf, - dt->u.compnd.memb[i].name); - fprintf (stream, "%*s%-*s %lu\n", indent+3, "", MAX (0, fwidth-3), - "Byte offset:", - (unsigned long)(dt->u.compnd.memb[i].offset)); - 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"); - } - H5O_dtype_debug (f, &(dt->u.compnd.memb[i].type), 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; - } - fprintf (stream, "%*s%-*s %s\n", indent, "", fwidth, - "Byte order:", - s); - - fprintf (stream, "%*s%-*s %lu bit%s\n", indent, "", fwidth, - "Precision:", - (unsigned long)(dt->u.atomic.prec), - 1==dt->u.atomic.prec?"":"s"); - - fprintf (stream, "%*s%-*s %lu bit%s\n", indent, "", fwidth, - "Offset:", - (unsigned long)(dt->u.atomic.offset), - 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; - } - 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; - } - 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; - } - 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; - } - fprintf (stream, "%*s%-*s %s\n", indent, "", fwidth, - "Normalization:", s); - - fprintf (stream, "%*s%-*s %lu\n", indent, "", fwidth, - "Sign bit location:", - (unsigned long)(dt->u.atomic.u.f.sign)); - - fprintf (stream, "%*s%-*s %lu\n", indent, "", fwidth, - "Exponent location:", - (unsigned long)(dt->u.atomic.u.f.epos)); - - fprintf (stream, "%*s%-*s 0x%08lx\n", indent, "", fwidth, - "Exponent bias:", - (unsigned long)(dt->u.atomic.u.f.ebias)); - - fprintf (stream, "%*s%-*s %lu\n", indent, "", fwidth, - "Exponent size:", - (unsigned long)(dt->u.atomic.u.f.esize)); - - fprintf (stream, "%*s%-*s %lu\n", indent, "", fwidth, - "Mantissa location:", - (unsigned long)(dt->u.atomic.u.f.mpos)); - - fprintf (stream, "%*s%-*s %lu\n", indent, "", fwidth, - "Mantissa size:", - (unsigned long)(dt->u.atomic.u.f.msize)); - - } 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; - } - fprintf (stream, "%*s%-*s %s\n", indent, "", fwidth, - "Sign scheme:", s); - - } - } - - FUNC_LEAVE (SUCCEED); + const H5T_t *dt = (const H5T_t *) mesg; + const char *s; + char buf[256]; + intn i, j; + + FUNC_ENTER(H5O_dtype_debug, FAIL); + + /* check args */ + assert(f); + assert(dt); + assert(stream); + assert(indent >= 0); + 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; + default: + sprintf(buf, "H5T_CLASS_%d", (int) (dt->type)); + s = buf; + break; + } + fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth, + "Type class:", + s); + + fprintf(stream, "%*s%-*s %lu byte%s\n", indent, "", fwidth, + "Size:", + (unsigned long) (dt->size), 1 == dt->size ? "" : "s"); + + if (H5T_COMPOUND == dt->type) { + fprintf(stream, "%*s%-*s %d\n", indent, "", fwidth, + "Number of members:", + dt->u.compnd.nmembs); + for (i = 0; i < dt->u.compnd.nmembs; i++) { + sprintf(buf, "Member %d:", i); + fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth, + buf, + dt->u.compnd.memb[i].name); + fprintf(stream, "%*s%-*s %lu\n", indent + 3, "", MAX(0, fwidth - 3), + "Byte offset:", + (unsigned long) (dt->u.compnd.memb[i].offset)); + 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"); + } + H5O_dtype_debug(f, &(dt->u.compnd.memb[i].type), 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; + } + fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth, + "Byte order:", + s); + + fprintf(stream, "%*s%-*s %lu bit%s\n", indent, "", fwidth, + "Precision:", + (unsigned long) (dt->u.atomic.prec), + 1 == dt->u.atomic.prec ? "" : "s"); + + fprintf(stream, "%*s%-*s %lu bit%s\n", indent, "", fwidth, + "Offset:", + (unsigned long) (dt->u.atomic.offset), + 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; + } + 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; + } + 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; + } + 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; + } + fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth, + "Normalization:", s); + + fprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth, + "Sign bit location:", + (unsigned long) (dt->u.atomic.u.f.sign)); + + fprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth, + "Exponent location:", + (unsigned long) (dt->u.atomic.u.f.epos)); + + fprintf(stream, "%*s%-*s 0x%08lx\n", indent, "", fwidth, + "Exponent bias:", + (unsigned long) (dt->u.atomic.u.f.ebias)); + + fprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth, + "Exponent size:", + (unsigned long) (dt->u.atomic.u.f.esize)); + + fprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth, + "Mantissa location:", + (unsigned long) (dt->u.atomic.u.f.mpos)); + + fprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth, + "Mantissa size:", + (unsigned long) (dt->u.atomic.u.f.msize)); + + } 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; + } + fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth, + "Sign scheme:", s); + + } + } + + FUNC_LEAVE(SUCCEED); } |