mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-02-23 16:20:57 +08:00
[svn-r26352] Update h5dump to latest BNF - reg vs irreg hyperslabs.
This commit is contained in:
parent
79771d3fac
commit
f1c4d0ff3f
@ -94,8 +94,11 @@
|
||||
#define PACKED_OFFSET "OFFSET"
|
||||
#define PACKED_LENGTH "LENGTH"
|
||||
#define VDS_VIRTUAL "VIRTUAL"
|
||||
#define VDS_HYPERSLAB "HYPERSLAB"
|
||||
#define VDS_REG_HYPERSLAB "REGULAR_HYPERSLAB"
|
||||
#define VDS_IRR_HYPERSLAB "IRREGULAR_HYPERSLAB"
|
||||
#define VDS_POINT "POINT"
|
||||
#define VDS_SRC_FILE "SRC_FILE"
|
||||
#define VDS_SRC_DATASET "SRC_DATASET"
|
||||
|
||||
#define BEGIN "{"
|
||||
#define END "}"
|
||||
|
@ -225,7 +225,8 @@ void h5tools_print_dims(h5tools_str_t *buffer, hsize_t *s, int dims);
|
||||
void h5tools_dump_subsetting_header(FILE *stream, const h5tool_format_t *info,
|
||||
h5tools_context_t *ctx, struct subset_t *sset, int dims);
|
||||
|
||||
void h5tools_print_virtual_selection(h5tools_str_t *buffer, const h5tool_format_t *info, hid_t vspace, hid_t dcpl_id, size_t index);
|
||||
void h5tools_print_virtual_selection(h5tools_str_t *buffer, const h5tool_format_t *info, h5tools_context_t *ctx,
|
||||
hid_t vspace, hid_t dcpl_id, size_t index);
|
||||
|
||||
void
|
||||
h5tools_dump_init(void)
|
||||
@ -2861,9 +2862,10 @@ h5tools_dump_oid(FILE *stream, const h5tool_format_t *info,
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
void
|
||||
h5tools_print_virtual_selection(h5tools_str_t *buffer, const h5tool_format_t *info, hid_t vspace, hid_t dcpl_id, size_t index)
|
||||
h5tools_print_virtual_selection(h5tools_str_t *buffer, const h5tool_format_t *info, h5tools_context_t *ctx,
|
||||
hid_t vspace, hid_t dcpl_id, size_t index)
|
||||
{
|
||||
h5tools_str_append(buffer, "%s ", h5tools_dump_header_format->virtualselectionbegin);
|
||||
h5tools_str_append(buffer, "%s", h5tools_dump_header_format->virtualselectionbegin);
|
||||
switch(H5Sget_select_type(vspace)) {
|
||||
case H5S_SEL_NONE: /* Nothing selected */
|
||||
h5tools_str_append(buffer, "NONE");
|
||||
@ -2874,9 +2876,15 @@ h5tools_print_virtual_selection(h5tools_str_t *buffer, const h5tool_format_t *in
|
||||
h5tools_str_append(buffer, " %s", h5tools_dump_header_format->virtualselectionblockend);
|
||||
break;
|
||||
case H5S_SEL_HYPERSLABS: /* "New-style" hyperslab selection defined */
|
||||
h5tools_str_append(buffer, "%s %s ", VDS_HYPERSLAB, h5tools_dump_header_format->virtualselectionblockbegin);
|
||||
h5tools_str_dump_space_blocks(buffer, vspace, info);
|
||||
h5tools_str_append(buffer, " %s", h5tools_dump_header_format->virtualselectionblockend);
|
||||
if (H5Sis_regular_hyperslab(vspace)) {
|
||||
h5tools_str_append(buffer, "%s %s ", VDS_REG_HYPERSLAB, h5tools_dump_header_format->virtualselectionblockbegin);
|
||||
h5tools_str_dump_space_slabs(buffer, vspace, info, ctx);
|
||||
}
|
||||
else {
|
||||
h5tools_str_append(buffer, "%s %s ", VDS_IRR_HYPERSLAB, h5tools_dump_header_format->virtualselectionblockbegin);
|
||||
h5tools_str_dump_space_blocks(buffer, vspace, info);
|
||||
}
|
||||
h5tools_str_append(buffer, "%s", h5tools_dump_header_format->virtualselectionblockend);
|
||||
break;
|
||||
case H5S_SEL_ALL: /* Entire extent selected */
|
||||
h5tools_str_append(buffer, "ALL");
|
||||
@ -3154,7 +3162,7 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info,
|
||||
ctx->indent_level++;
|
||||
|
||||
h5tools_str_reset(&buffer);
|
||||
h5tools_print_virtual_selection(&buffer, info, virtual_vspace, dcpl_id, next);
|
||||
h5tools_print_virtual_selection(&buffer, info, ctx, virtual_vspace, dcpl_id, next);
|
||||
h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0);
|
||||
|
||||
ssize_out = H5Pget_virtual_filename(dcpl_id, next, NULL, 0);
|
||||
@ -3166,7 +3174,7 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info,
|
||||
h5tools_simple_prefix(stream, info, ctx, curr_pos, 0);
|
||||
|
||||
h5tools_str_reset(&buffer);
|
||||
h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->virtualfilenamebegin);
|
||||
h5tools_str_append(&buffer, "%s %s", VDS_SRC_FILE, h5tools_dump_header_format->virtualfilenamebegin);
|
||||
h5tools_str_append(&buffer, "%s", name);
|
||||
h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->virtualfilenameend);
|
||||
h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0);
|
||||
@ -3175,7 +3183,7 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info,
|
||||
h5tools_simple_prefix(stream, info, ctx, curr_pos, 0);
|
||||
|
||||
h5tools_str_reset(&buffer);
|
||||
h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->virtualdatasetnamebegin);
|
||||
h5tools_str_append(&buffer, "%s %s", VDS_SRC_DATASET, h5tools_dump_header_format->virtualdatasetnamebegin);
|
||||
h5tools_str_append(&buffer, "%s", dsetname);
|
||||
h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->virtualdatasetnameend);
|
||||
h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0);
|
||||
@ -3184,7 +3192,7 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info,
|
||||
h5tools_simple_prefix(stream, info, ctx, curr_pos, 0);
|
||||
|
||||
h5tools_str_reset(&buffer);
|
||||
h5tools_print_virtual_selection(&buffer, info, virtual_srcspace, dcpl_id, next);
|
||||
h5tools_print_virtual_selection(&buffer, info, ctx, virtual_srcspace, dcpl_id, next);
|
||||
h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0);
|
||||
|
||||
ctx->indent_level--;
|
||||
|
@ -416,7 +416,7 @@ h5tools_str_region_prefix(h5tools_str_t *str, const h5tool_format_t *info,
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: h5tools_str_dump_space_blocks
|
||||
* Function: h5tools_str_dump_space_slabs
|
||||
*
|
||||
* Purpose: Prints information about a dataspace selection by appending
|
||||
* the information to the specified string.
|
||||
@ -429,6 +429,78 @@ h5tools_str_region_prefix(h5tools_str_t *str, const h5tool_format_t *info,
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
void
|
||||
h5tools_str_dump_space_slabs(h5tools_str_t *str, hid_t rspace,
|
||||
const h5tool_format_t *info, h5tools_context_t *ctx)
|
||||
{
|
||||
hsize_t *start;
|
||||
hsize_t *stride;
|
||||
hsize_t *count;
|
||||
hsize_t *block;
|
||||
int j;
|
||||
int ndims = H5Sget_simple_extent_ndims(rspace);
|
||||
|
||||
start = (hsize_t *)malloc(sizeof(hsize_t) * ndims);
|
||||
stride = (hsize_t *)malloc(sizeof(hsize_t) * ndims);
|
||||
count = (hsize_t *)malloc(sizeof(hsize_t) * ndims);
|
||||
block = (hsize_t *)malloc(sizeof(hsize_t) * ndims);
|
||||
|
||||
H5Sget_regular_hyperslab(rspace, start, stride, count, block);
|
||||
|
||||
/* Print hyperslab information */
|
||||
h5tools_str_append(str, "%s", "\n");
|
||||
h5tools_str_indent(str, info, ctx);
|
||||
|
||||
/* Start coordinates */
|
||||
h5tools_str_append(str, "%s ", START);
|
||||
for (j = 0; j < ndims; j++)
|
||||
h5tools_str_append(str, "%s" HSIZE_T_FORMAT, j ? "," : "(", start[j]);
|
||||
h5tools_str_append(str, ");");
|
||||
h5tools_str_append(str, "%s", "\n");
|
||||
h5tools_str_indent(str, info, ctx);
|
||||
|
||||
/* Stride coordinates */
|
||||
h5tools_str_append(str, "%s ", STRIDE);
|
||||
for (j = 0; j < ndims; j++)
|
||||
h5tools_str_append(str, "%s" HSIZE_T_FORMAT, j ? "," : "(", stride[j]);
|
||||
h5tools_str_append(str, ");");
|
||||
h5tools_str_append(str, "%s", "\n");
|
||||
h5tools_str_indent(str, info, ctx);
|
||||
|
||||
/* Count coordinates */
|
||||
h5tools_str_append(str, "%s ", COUNT);
|
||||
for (j = 0; j < ndims; j++)
|
||||
h5tools_str_append(str, "%s" HSIZE_T_FORMAT, j ? "," : "(", count[j]);
|
||||
h5tools_str_append(str, ");");
|
||||
h5tools_str_append(str, "%s", "\n");
|
||||
h5tools_str_indent(str, info, ctx);
|
||||
|
||||
/* Block coordinates */
|
||||
h5tools_str_append(str, "%s ", BLOCK);
|
||||
for (j = 0; j < ndims; j++)
|
||||
h5tools_str_append(str, "%s" HSIZE_T_FORMAT, j ? "," : "(", block[j]);
|
||||
h5tools_str_append(str, ");");
|
||||
h5tools_str_append(str, "%s", "\n");
|
||||
h5tools_str_indent(str, info, ctx);
|
||||
|
||||
HDfree(block);
|
||||
HDfree(count);
|
||||
HDfree(stride);
|
||||
HDfree(start);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: h5tools_str_dump_space_blocks
|
||||
*
|
||||
* Purpose: Prints information about a dataspace selection by appending
|
||||
* the information to the specified string.
|
||||
*
|
||||
* Return: none
|
||||
*
|
||||
* In/Out:
|
||||
* h5tools_str_t *str
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
void
|
||||
h5tools_str_dump_space_blocks(h5tools_str_t *str, hid_t rspace,
|
||||
const h5tool_format_t *info)
|
||||
{
|
||||
@ -485,7 +557,6 @@ h5tools_str_dump_space_blocks(h5tools_str_t *str, hid_t rspace,
|
||||
* Return: none
|
||||
*
|
||||
* In/Out:
|
||||
* h5tools_context_t *ctx
|
||||
* h5tools_str_t *str
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
@ -40,6 +40,7 @@ H5TOOLS_DLL char *h5tools_str_prefix(h5tools_str_t *str, const h5tool_format_
|
||||
H5TOOLS_DLL char *h5tools_str_region_prefix(h5tools_str_t *str, const h5tool_format_t *info,
|
||||
hsize_t elmtno, hsize_t *ptdata, unsigned ndims,
|
||||
hsize_t max_idx[], h5tools_context_t *ctx);
|
||||
H5TOOLS_DLL void h5tools_str_dump_space_slabs(h5tools_str_t *, hid_t, const h5tool_format_t *, h5tools_context_t *ctx);
|
||||
H5TOOLS_DLL void h5tools_str_dump_space_blocks(h5tools_str_t *, hid_t, const h5tool_format_t *);
|
||||
H5TOOLS_DLL void h5tools_str_dump_space_points(h5tools_str_t *, hid_t, const h5tool_format_t *);
|
||||
H5TOOLS_DLL void h5tools_str_sprint_region(h5tools_str_t *str, const h5tool_format_t *info, hid_t container,
|
||||
|
Loading…
Reference in New Issue
Block a user