summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/H5Odtype.c287
1 files changed, 149 insertions, 138 deletions
diff --git a/src/H5Odtype.c b/src/H5Odtype.c
index 799f475..7ccf328 100644
--- a/src/H5Odtype.c
+++ b/src/H5Odtype.c
@@ -1446,9 +1446,10 @@ H5O_dtype_set_share(void *_mesg/*in,out*/, const H5O_shared_t *sh)
dt->shared->state = H5T_STATE_NAMED;
/* Set up the object location for the datatype also */
+ if(H5O_loc_reset(&(dt->oloc)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "unable to reset location")
dt->oloc.file = sh->file;
- dt->oloc.addr = sh->u.loc.oh_addr;;
- dt->oloc.holding_file = FALSE;
+ dt->oloc.addr = sh->u.loc.oh_addr;
} /* end if */
done:
@@ -1611,18 +1612,22 @@ H5O_dtype_shared_post_copy_upd(const H5O_loc_t H5_ATTR_UNUSED *src_oloc,
hid_t H5_ATTR_UNUSED dxpl_id, H5O_copy_t H5_ATTR_UNUSED *cpy_info)
{
H5T_t *dt_dst = (H5T_t *)mesg_dst; /* Destination datatype */
+ herr_t ret_value = SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI_NOINIT_NOERR
+ FUNC_ENTER_NOAPI_NOINIT
if(dt_dst->sh_loc.type == H5O_SHARE_TYPE_COMMITTED) {
HDassert(H5T_committed(dt_dst));
+ if(H5O_loc_reset(&(dt_dst->oloc)) < 0)
+ HGOTO_ERROR(H5E_DATATYPE, H5E_CANTINIT, FAIL, "unable to reset location")
dt_dst->oloc.file = dt_dst->sh_loc.file;
dt_dst->oloc.addr = dt_dst->sh_loc.u.loc.oh_addr;
} /* end if */
else
HDassert(!H5T_committed(dt_dst));
- FUNC_LEAVE_NOAPI(SUCCEED)
+done:
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5O_dtype_shared_post_copy_upd */
@@ -1712,62 +1717,64 @@ H5O_dtype_debug(H5F_t *f, hid_t dxpl_id, const void *mesg, FILE *stream,
case H5T_NO_CLASS:
case H5T_NCLASSES:
default:
- sprintf(buf, "H5T_CLASS_%d", (int)(dt->shared->type));
+ HDsprintf(buf, "H5T_CLASS_%d", (int)(dt->shared->type));
s = buf;
break;
} /* end switch */
- fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
+ HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
"Type class:",
s);
- fprintf(stream, "%*s%-*s %lu byte%s\n", indent, "", fwidth,
+ HDfprintf(stream, "%*s%-*s %lu byte%s\n", indent, "", fwidth,
"Size:",
(unsigned long)(dt->shared->size), 1 == dt->shared->size ? "" : "s");
- fprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
+ HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
"Version:", dt->shared->version);
if (H5T_COMPOUND == dt->shared->type) {
- fprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
- "Number of members:",
- dt->shared->u.compnd.nmembs);
- for(i = 0; i < dt->shared->u.compnd.nmembs; i++) {
- sprintf(buf, "Member %u:", i);
- fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
- buf,
- dt->shared->u.compnd.memb[i].name);
- fprintf(stream, "%*s%-*s %lu\n", indent+3, "", MAX(0, fwidth-3),
- "Byte offset:",
- (unsigned long)(dt->shared->u.compnd.memb[i].offset));
- H5O_dtype_debug(f, dxpl_id, dt->shared->u.compnd.memb[i].type, stream,
- indent + 3, MAX(0, fwidth - 3));
- }
- } else if(H5T_ENUM == dt->shared->type) {
- fprintf(stream, "%*s%s\n", indent, "", "Base type:");
- H5O_dtype_debug(f, dxpl_id, dt->shared->parent, stream, indent+3, MAX(0, fwidth-3));
- fprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
- "Number of members:",
- dt->shared->u.enumer.nmembs);
- for(i = 0; i < dt->shared->u.enumer.nmembs; i++) {
- sprintf(buf, "Member %u:", i);
- fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
- buf,
- dt->shared->u.enumer.name[i]);
- fprintf(stream, "%*s%-*s 0x", indent, "", fwidth,
- "Raw bytes of value:");
- for(k = 0; k < dt->shared->parent->shared->size; k++)
- fprintf(stream, "%02x",
- dt->shared->u.enumer.value[i*dt->shared->parent->shared->size + k]);
- fprintf(stream, "\n");
- } /* end for */
-
- } else if(H5T_OPAQUE == dt->shared->type) {
- fprintf(stream, "%*s%-*s \"%s\"\n", indent, "", fwidth,
- "Tag:", dt->shared->u.opaque.tag);
- } else if(H5T_REFERENCE == dt->shared->type) {
- fprintf(stream, "%*s%-*s\n", indent, "", fwidth,
- "Fix dumping reference types!");
- } else if(H5T_STRING == dt->shared->type) {
+ HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
+ "Number of members:",
+ dt->shared->u.compnd.nmembs);
+ for(i = 0; i < dt->shared->u.compnd.nmembs; i++) {
+ HDsprintf(buf, "Member %u:", i);
+ HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
+ buf,
+ dt->shared->u.compnd.memb[i].name);
+ HDfprintf(stream, "%*s%-*s %lu\n", indent+3, "", MAX(0, fwidth-3),
+ "Byte offset:",
+ (unsigned long)(dt->shared->u.compnd.memb[i].offset));
+ H5O_dtype_debug(f, dxpl_id, dt->shared->u.compnd.memb[i].type, stream,
+ indent + 3, MAX(0, fwidth - 3));
+ } /* end for */
+ } /* end if */
+ else if(H5T_ENUM == dt->shared->type) {
+ HDfprintf(stream, "%*s%s\n", indent, "", "Base type:");
+ H5O_dtype_debug(f, dxpl_id, dt->shared->parent, stream, indent+3, MAX(0, fwidth-3));
+ HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
+ "Number of members:",
+ dt->shared->u.enumer.nmembs);
+ for(i = 0; i < dt->shared->u.enumer.nmembs; i++) {
+ HDsprintf(buf, "Member %u:", i);
+ HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
+ buf,
+ dt->shared->u.enumer.name[i]);
+ HDfprintf(stream, "%*s%-*s 0x", indent, "", fwidth,
+ "Raw bytes of value:");
+ for(k = 0; k < dt->shared->parent->shared->size; k++)
+ HDfprintf(stream, "%02x", dt->shared->u.enumer.value[i*dt->shared->parent->shared->size + k]);
+ HDfprintf(stream, "\n");
+ } /* end for */
+ } /* end else if */
+ else if(H5T_OPAQUE == dt->shared->type) {
+ HDfprintf(stream, "%*s%-*s \"%s\"\n", indent, "", fwidth,
+ "Tag:", dt->shared->u.opaque.tag);
+ } /* end else if */
+ else if(H5T_REFERENCE == dt->shared->type) {
+ HDfprintf(stream, "%*s%-*s\n", indent, "", fwidth,
+ "Fix dumping reference types!");
+ } /* end else if */
+ else if(H5T_STRING == dt->shared->type) {
switch(dt->shared->u.atomic.u.s.cset) {
case H5T_CSET_ASCII:
s = "ASCII";
@@ -1791,17 +1798,17 @@ H5O_dtype_debug(H5F_t *f, hid_t dxpl_id, const void *mesg, FILE *stream,
case H5T_CSET_RESERVED_13:
case H5T_CSET_RESERVED_14:
case H5T_CSET_RESERVED_15:
- sprintf(buf, "H5T_CSET_RESERVED_%d", (int)(dt->shared->u.atomic.u.s.cset));
+ HDsprintf(buf, "H5T_CSET_RESERVED_%d", (int)(dt->shared->u.atomic.u.s.cset));
s = buf;
break;
case H5T_CSET_ERROR:
default:
- sprintf(buf, "Unknown character set: %d", (int)(dt->shared->u.atomic.u.s.cset));
+ HDsprintf(buf, "Unknown character set: %d", (int)(dt->shared->u.atomic.u.s.cset));
s = buf;
break;
} /* end switch */
- fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
+ HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
"Character Set:",
s);
@@ -1831,20 +1838,21 @@ H5O_dtype_debug(H5F_t *f, hid_t dxpl_id, const void *mesg, FILE *stream,
case H5T_STR_RESERVED_13:
case H5T_STR_RESERVED_14:
case H5T_STR_RESERVED_15:
- sprintf(buf, "H5T_STR_RESERVED_%d", (int)(dt->shared->u.atomic.u.s.pad));
+ HDsprintf(buf, "H5T_STR_RESERVED_%d", (int)(dt->shared->u.atomic.u.s.pad));
s = buf;
break;
case H5T_STR_ERROR:
default:
- sprintf(buf, "Unknown string padding: %d", (int)(dt->shared->u.atomic.u.s.pad));
+ HDsprintf(buf, "Unknown string padding: %d", (int)(dt->shared->u.atomic.u.s.pad));
s = buf;
break;
} /* end switch */
- fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
+ HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
"String Padding:",
s);
- } else if(H5T_VLEN == dt->shared->type) {
+ } /* end else if */
+ else if(H5T_VLEN == dt->shared->type) {
switch(dt->shared->u.vlen.type) {
case H5T_VLEN_SEQUENCE:
s = "sequence";
@@ -1857,11 +1865,11 @@ H5O_dtype_debug(H5F_t *f, hid_t dxpl_id, const void *mesg, FILE *stream,
case H5T_VLEN_BADTYPE:
case H5T_VLEN_MAXTYPE:
default:
- sprintf(buf, "H5T_VLEN_%d", dt->shared->u.vlen.type);
+ HDsprintf(buf, "H5T_VLEN_%d", dt->shared->u.vlen.type);
s = buf;
break;
} /* end switch */
- fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
+ HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
"Vlen type:", s);
switch(dt->shared->u.vlen.loc) {
@@ -1876,11 +1884,11 @@ H5O_dtype_debug(H5F_t *f, hid_t dxpl_id, const void *mesg, FILE *stream,
case H5T_LOC_BADLOC:
case H5T_LOC_MAXLOC:
default:
- sprintf(buf, "H5T_LOC_%d", (int)dt->shared->u.vlen.loc);
+ HDsprintf(buf, "H5T_LOC_%d", (int)dt->shared->u.vlen.loc);
s = buf;
break;
} /* end switch */
- fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
+ HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
"Location:", s);
/* Extra information for VL-strings */
@@ -1908,17 +1916,17 @@ H5O_dtype_debug(H5F_t *f, hid_t dxpl_id, const void *mesg, FILE *stream,
case H5T_CSET_RESERVED_13:
case H5T_CSET_RESERVED_14:
case H5T_CSET_RESERVED_15:
- sprintf(buf, "H5T_CSET_RESERVED_%d", (int)(dt->shared->u.vlen.cset));
+ HDsprintf(buf, "H5T_CSET_RESERVED_%d", (int)(dt->shared->u.vlen.cset));
s = buf;
break;
case H5T_CSET_ERROR:
default:
- sprintf(buf, "Unknown character set: %d", (int)(dt->shared->u.vlen.cset));
+ HDsprintf(buf, "Unknown character set: %d", (int)(dt->shared->u.vlen.cset));
s = buf;
break;
} /* end switch */
- fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
+ HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
"Character Set:",
s);
@@ -1948,32 +1956,34 @@ H5O_dtype_debug(H5F_t *f, hid_t dxpl_id, const void *mesg, FILE *stream,
case H5T_STR_RESERVED_13:
case H5T_STR_RESERVED_14:
case H5T_STR_RESERVED_15:
- sprintf(buf, "H5T_STR_RESERVED_%d", (int)(dt->shared->u.vlen.pad));
+ HDsprintf(buf, "H5T_STR_RESERVED_%d", (int)(dt->shared->u.vlen.pad));
s = buf;
break;
case H5T_STR_ERROR:
default:
- sprintf(buf, "Unknown string padding: %d", (int)(dt->shared->u.vlen.pad));
+ HDsprintf(buf, "Unknown string padding: %d", (int)(dt->shared->u.vlen.pad));
s = buf;
break;
} /* end switch */
- fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
+ HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
"String Padding:",
s);
} /* end if */
- } else if(H5T_ARRAY == dt->shared->type) {
- fprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
- "Rank:",
- dt->shared->u.array.ndims);
- fprintf(stream, "%*s%-*s {", indent, "", fwidth, "Dim Size:");
+ } /* end else if */
+ else if(H5T_ARRAY == dt->shared->type) {
+ HDfprintf(stream, "%*s%-*s %u\n", indent, "", fwidth,
+ "Rank:",
+ dt->shared->u.array.ndims);
+ HDfprintf(stream, "%*s%-*s {", indent, "", fwidth, "Dim Size:");
for(i = 0; i < dt->shared->u.array.ndims; i++)
- fprintf(stream, "%s%u", (i ? ", " : ""), (unsigned)dt->shared->u.array.dim[i]);
- fprintf(stream, "}\n");
- fprintf(stream, "%*s%s\n", indent, "", "Base type:");
- H5O_dtype_debug(f, dxpl_id, dt->shared->parent, stream, indent + 3, MAX(0, fwidth - 3));
- } else {
- switch (dt->shared->u.atomic.order) {
+ HDfprintf(stream, "%s%u", (i ? ", " : ""), (unsigned)dt->shared->u.array.dim[i]);
+ HDfprintf(stream, "}\n");
+ HDfprintf(stream, "%*s%s\n", indent, "", "Base type:");
+ H5O_dtype_debug(f, dxpl_id, dt->shared->parent, stream, indent + 3, MAX(0, fwidth - 3));
+ } /* end else if */
+ else {
+ switch (dt->shared->u.atomic.order) {
case H5T_ORDER_LE:
s = "little endian";
break;
@@ -1996,25 +2006,25 @@ H5O_dtype_debug(H5F_t *f, hid_t dxpl_id, const void *mesg, FILE *stream,
case H5T_ORDER_ERROR:
default:
- sprintf(buf, "H5T_ORDER_%d", dt->shared->u.atomic.order);
+ HDsprintf(buf, "H5T_ORDER_%d", dt->shared->u.atomic.order);
s = buf;
break;
- } /* end switch */
- 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->shared->u.atomic.prec),
- 1==dt->shared->u.atomic.prec?"":"s");
-
- fprintf(stream, "%*s%-*s %lu bit%s\n", indent, "", fwidth,
- "Offset:",
- (unsigned long)(dt->shared->u.atomic.offset),
- 1==dt->shared->u.atomic.offset?"":"s");
-
- switch (dt->shared->u.atomic.lsb_pad) {
+ } /* end switch */
+ HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
+ "Byte order:",
+ s);
+
+ HDfprintf(stream, "%*s%-*s %lu bit%s\n", indent, "", fwidth,
+ "Precision:",
+ (unsigned long)(dt->shared->u.atomic.prec),
+ 1==dt->shared->u.atomic.prec?"":"s");
+
+ HDfprintf(stream, "%*s%-*s %lu bit%s\n", indent, "", fwidth,
+ "Offset:",
+ (unsigned long)(dt->shared->u.atomic.offset),
+ 1==dt->shared->u.atomic.offset?"":"s");
+
+ switch (dt->shared->u.atomic.lsb_pad) {
case H5T_PAD_ZERO:
s = "zero";
break;
@@ -2032,11 +2042,11 @@ H5O_dtype_debug(H5F_t *f, hid_t dxpl_id, const void *mesg, FILE *stream,
default:
s = "pad?";
break;
- } /* end switch */
- fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
- "Low pad type:", s);
+ } /* end switch */
+ HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
+ "Low pad type:", s);
- switch (dt->shared->u.atomic.msb_pad) {
+ switch (dt->shared->u.atomic.msb_pad) {
case H5T_PAD_ZERO:
s = "zero";
break;
@@ -2054,12 +2064,12 @@ H5O_dtype_debug(H5F_t *f, hid_t dxpl_id, const void *mesg, FILE *stream,
default:
s = "pad?";
break;
- } /* end switch */
- fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
- "High pad type:", s);
+ } /* end switch */
+ HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
+ "High pad type:", s);
- if (H5T_FLOAT == dt->shared->type) {
- switch (dt->shared->u.atomic.u.f.pad) {
+ if (H5T_FLOAT == dt->shared->type) {
+ switch (dt->shared->u.atomic.u.f.pad) {
case H5T_PAD_ZERO:
s = "zero";
break;
@@ -2076,16 +2086,16 @@ H5O_dtype_debug(H5F_t *f, hid_t dxpl_id, const void *mesg, FILE *stream,
case H5T_NPAD:
default:
if (dt->shared->u.atomic.u.f.pad < 0)
- sprintf(buf, "H5T_PAD_%d", -(dt->shared->u.atomic.u.f.pad));
+ HDsprintf(buf, "H5T_PAD_%d", -(dt->shared->u.atomic.u.f.pad));
else
- sprintf(buf, "bit-%d", dt->shared->u.atomic.u.f.pad);
+ HDsprintf(buf, "bit-%d", dt->shared->u.atomic.u.f.pad);
s = buf;
break;
- } /* end switch */
- fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
- "Internal pad type:", s);
+ } /* end switch */
+ HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
+ "Internal pad type:", s);
- switch (dt->shared->u.atomic.u.f.norm) {
+ switch (dt->shared->u.atomic.u.f.norm) {
case H5T_NORM_IMPLIED:
s = "implied";
break;
@@ -2100,38 +2110,39 @@ H5O_dtype_debug(H5F_t *f, hid_t dxpl_id, const void *mesg, FILE *stream,
case H5T_NORM_ERROR:
default:
- sprintf(buf, "H5T_NORM_%d", (int) (dt->shared->u.atomic.u.f.norm));
+ HDsprintf(buf, "H5T_NORM_%d", (int) (dt->shared->u.atomic.u.f.norm));
s = buf;
- } /* end switch */
- fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
- "Normalization:", s);
+ } /* end switch */
+ HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
+ "Normalization:", s);
- fprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth,
- "Sign bit location:",
- (unsigned long) (dt->shared->u.atomic.u.f.sign));
+ HDfprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth,
+ "Sign bit location:",
+ (unsigned long) (dt->shared->u.atomic.u.f.sign));
- fprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth,
- "Exponent location:",
- (unsigned long) (dt->shared->u.atomic.u.f.epos));
+ HDfprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth,
+ "Exponent location:",
+ (unsigned long) (dt->shared->u.atomic.u.f.epos));
- fprintf(stream, "%*s%-*s 0x%08lx\n", indent, "", fwidth,
- "Exponent bias:",
- (unsigned long) (dt->shared->u.atomic.u.f.ebias));
+ HDfprintf(stream, "%*s%-*s 0x%08lx\n", indent, "", fwidth,
+ "Exponent bias:",
+ (unsigned long) (dt->shared->u.atomic.u.f.ebias));
- fprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth,
- "Exponent size:",
- (unsigned long) (dt->shared->u.atomic.u.f.esize));
+ HDfprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth,
+ "Exponent size:",
+ (unsigned long) (dt->shared->u.atomic.u.f.esize));
- fprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth,
- "Mantissa location:",
- (unsigned long) (dt->shared->u.atomic.u.f.mpos));
+ HDfprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth,
+ "Mantissa location:",
+ (unsigned long) (dt->shared->u.atomic.u.f.mpos));
- fprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth,
- "Mantissa size:",
- (unsigned long) (dt->shared->u.atomic.u.f.msize));
+ HDfprintf(stream, "%*s%-*s %lu\n", indent, "", fwidth,
+ "Mantissa size:",
+ (unsigned long) (dt->shared->u.atomic.u.f.msize));
- } else if (H5T_INTEGER == dt->shared->type) {
- switch (dt->shared->u.atomic.u.i.sign) {
+ } /* end if */
+ else if (H5T_INTEGER == dt->shared->type) {
+ switch (dt->shared->u.atomic.u.i.sign) {
case H5T_SGN_NONE:
s = "none";
break;
@@ -2143,14 +2154,14 @@ H5O_dtype_debug(H5F_t *f, hid_t dxpl_id, const void *mesg, FILE *stream,
case H5T_SGN_ERROR:
case H5T_NSGN:
default:
- sprintf(buf, "H5T_SGN_%d", (int) (dt->shared->u.atomic.u.i.sign));
+ HDsprintf(buf, "H5T_SGN_%d", (int) (dt->shared->u.atomic.u.i.sign));
s = buf;
break;
- } /* end switch */
- fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
- "Sign scheme:", s);
- }
- }
+ } /* end switch */
+ HDfprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
+ "Sign scheme:", s);
+ } /* end else if */
+ } /* end else */
FUNC_LEAVE_NOAPI(SUCCEED)
} /* end H5O_dtype_debug() */