summaryrefslogtreecommitdiffstats
path: root/tools/h5tools.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/h5tools.c')
-rw-r--r--tools/h5tools.c374
1 files changed, 187 insertions, 187 deletions
diff --git a/tools/h5tools.c b/tools/h5tools.c
index 73c2314..8bf7287 100644
--- a/tools/h5tools.c
+++ b/tools/h5tools.c
@@ -463,19 +463,78 @@ h5dump_sprint(h5dump_str_t *str/*in,out*/, const h5dump_t *info,
sprintf(fmt_ullong, "%%%su", PRINTF_LL_WIDTH);
}
- if (info) {
- /* Append value depending on data type */
- start = h5dump_str_len(str);
- if (H5Tequal(type, H5T_NATIVE_DOUBLE)) {
- h5dump_str_append(str, OPT(info->fmt_double, "%g"), *((double*)vp));
+
+ /* Append value depending on data type */
+ start = h5dump_str_len(str);
+ if (H5Tequal(type, H5T_NATIVE_DOUBLE)) {
+ h5dump_str_append(str, OPT(info->fmt_double, "%g"), *((double*)vp));
+
+ } else if (H5Tequal(type, H5T_NATIVE_FLOAT)) {
+ h5dump_str_append(str, OPT(info->fmt_double, "%g"), *((float*)vp));
+
+ } else if (info->ascii &&
+ (H5Tequal(type, H5T_NATIVE_SCHAR) ||
+ H5Tequal(type, H5T_NATIVE_UCHAR))) {
+ switch (*((char*)vp)) {
+ case '"':
+ h5dump_str_append(str, "\\\"");
+ break;
+ case '\\':
+ h5dump_str_append(str, "\\\\");
+ break;
+ case '\b':
+ h5dump_str_append(str, "\\b");
+ break;
+ case '\f':
+ h5dump_str_append(str, "\\f");
+ break;
+ case '\n':
+ h5dump_str_append(str, "\\n");
+ break;
+ case '\r':
+ h5dump_str_append(str, "\\r");
+ break;
+ case '\t':
+ h5dump_str_append(str, "\\t");
+ break;
+ default:
+ if (isprint(*((char*)vp))) {
+ h5dump_str_append(str, "%c", *((char*)vp));
+ } else {
+ h5dump_str_append(str, "\\%03o", *((unsigned char*)vp));
+ }
+ break;
+ }
+
+ } else if (H5T_STRING==H5Tget_class(type)) {
+ size = H5Tget_size(type);
+ quote = '\0';
+ if (str->s == '"') {
+ quote = 'a';
+ }
+ for (i=0; i<size && ((char*)vp)[i] != '\0'; i++) {
- } else if (H5Tequal(type, H5T_NATIVE_FLOAT)) {
- h5dump_str_append(str, OPT(info->fmt_double, "%g"), *((float*)vp));
+ /* Count how many times the next character repeats */
+ j=1;
+ while (i+j<size && ((char*)vp)[i]==((char*)vp)[i+j]) j++;
- } else if (info->ascii &&
- (H5Tequal(type, H5T_NATIVE_SCHAR) ||
- H5Tequal(type, H5T_NATIVE_UCHAR))) {
- switch (*((char*)vp)) {
+ /*
+ * Print the opening quote. If the repeat count is high enough
+ * to warrant printing the number of repeats instead of
+ * enumerating the characters, then make sure the character to be
+ * repeated is in it's own quote.
+ */
+ if (j>repeat_threshold) {
+ if (quote) h5dump_str_append(str, "%c", quote);
+ quote = '\'';
+ h5dump_str_append(str, "%s%c", i?" ":"", quote);
+ } else if (!quote) {
+ quote = '"';
+ h5dump_str_append(str, "%s%c", i?" ":"", quote);
+ }
+
+ /* Print the character */
+ switch (((char*)vp)[i]) {
case '"':
h5dump_str_append(str, "\\\"");
break;
@@ -498,201 +557,134 @@ h5dump_sprint(h5dump_str_t *str/*in,out*/, const h5dump_t *info,
h5dump_str_append(str, "\\t");
break;
default:
- if (isprint(*((char*)vp))) {
- h5dump_str_append(str, "%c", *((char*)vp));
+ if (isprint(((char*)vp)[i])) {
+ h5dump_str_append(str, "%c", ((char*)vp)[i]);
} else {
- h5dump_str_append(str, "\\%03o", *((unsigned char*)vp));
+ h5dump_str_append(str, "\\%03o", ((unsigned char*)vp)[i]);
}
break;
}
- } else if (H5T_STRING==H5Tget_class(type)) {
- size = H5Tget_size(type);
- quote = '\0';
- if (str->s == '"') {
- quote = 'a';
- }
- for (i=0; i<size && ((char*)vp)[i] != '\0'; i++) {
-
- /* Count how many times the next character repeats */
- j=1;
- while (i+j<size && ((char*)vp)[i]==((char*)vp)[i+j]) j++;
-
- /*
- * Print the opening quote. If the repeat count is high enough
- * to warrant printing the number of repeats instead of
- * enumerating the characters, then make sure the character to be
- * repeated is in it's own quote.
- */
- if (j>repeat_threshold) {
- if (quote) h5dump_str_append(str, "%c", quote);
- quote = '\'';
- h5dump_str_append(str, "%s%c", i?" ":"", quote);
- } else if (!quote) {
- quote = '"';
- h5dump_str_append(str, "%s%c", i?" ":"", quote);
- }
-
- /* Print the character */
- switch (((char*)vp)[i]) {
- case '"':
- h5dump_str_append(str, "\\\"");
- break;
- case '\\':
- h5dump_str_append(str, "\\\\");
- break;
- case '\b':
- h5dump_str_append(str, "\\b");
- break;
- case '\f':
- h5dump_str_append(str, "\\f");
- break;
- case '\n':
- h5dump_str_append(str, "\\n");
- break;
- case '\r':
- h5dump_str_append(str, "\\r");
- break;
- case '\t':
- h5dump_str_append(str, "\\t");
- break;
- default:
- if (isprint(((char*)vp)[i])) {
- h5dump_str_append(str, "%c", ((char*)vp)[i]);
- } else {
- h5dump_str_append(str, "\\%03o", ((unsigned char*)vp)[i]);
- }
- break;
- }
-
- /* Print the repeat count */
- if (j>repeat_threshold) {
+ /* Print the repeat count */
+ if (j>repeat_threshold) {
#ifdef REPEAT_VERBOSE
- h5dump_str_append(str, "%c repeats %d times", quote, j-1);
+ h5dump_str_append(str, "%c repeats %d times", quote, j-1);
#else
- h5dump_str_append(str, "%c*%d", quote, j-1);
+ h5dump_str_append(str, "%c*%d", quote, j-1);
#endif
- quote = '\0';
- i += j-1;
- }
+ quote = '\0';
+ i += j-1;
}
- if (quote) h5dump_str_append(str, "%c", quote);
-
- } else if (H5Tequal(type, H5T_NATIVE_INT)) {
+ }
+ if (quote) h5dump_str_append(str, "%c", quote);
+
+ } else if (H5Tequal(type, H5T_NATIVE_INT)) {
+ h5dump_str_append(str, OPT(info->fmt_int, "%d"),
+ *((int*)vp));
+
+ } else if (H5Tequal(type, H5T_NATIVE_UINT)) {
+ h5dump_str_append(str, OPT(info->fmt_uint, "%u"),
+ *((unsigned*)vp));
+
+ } else if (H5Tequal(type, H5T_NATIVE_SCHAR)) {
+ h5dump_str_append(str, OPT(info->fmt_schar, "%d"),
+ *((signed char*)vp));
+
+ } else if (H5Tequal(type, H5T_NATIVE_UCHAR)) {
+ h5dump_str_append(str, OPT(info->fmt_uchar, "%u"),
+ *((unsigned char*)vp));
+
+ } else if (H5Tequal(type, H5T_NATIVE_SHORT)) {
+ h5dump_str_append(str, OPT(info->fmt_short, "%d"),
+ *((short*)vp));
+
+ } else if (H5Tequal(type, H5T_NATIVE_USHORT)) {
+ h5dump_str_append(str, OPT(info->fmt_ushort, "%u"),
+ *((unsigned short*)vp));
+
+ } else if (H5Tequal(type, H5T_NATIVE_LONG)) {
+ h5dump_str_append(str, OPT(info->fmt_long, "%ld"),
+ *((long*)vp));
+
+ } else if (H5Tequal(type, H5T_NATIVE_ULONG)) {
+ h5dump_str_append(str, OPT(info->fmt_ulong, "%lu"),
+ *((unsigned long*)vp));
+
+ } else if (H5Tequal(type, H5T_NATIVE_LLONG)) {
+ h5dump_str_append(str, OPT(info->fmt_llong, fmt_llong),
+ *((long_long*)vp));
+
+ } else if (H5Tequal(type, H5T_NATIVE_ULLONG)) {
+ h5dump_str_append(str, OPT(info->fmt_ullong, fmt_ullong),
+ *((unsigned long_long*)vp));
+
+ } else if (H5Tequal(type, H5T_NATIVE_HSSIZE)) {
+ if (sizeof(hssize_t)==sizeof(int)) {
h5dump_str_append(str, OPT(info->fmt_int, "%d"),
*((int*)vp));
-
- } else if (H5Tequal(type, H5T_NATIVE_UINT)) {
- h5dump_str_append(str, OPT(info->fmt_uint, "%u"),
- *((unsigned*)vp));
-
- } else if (H5Tequal(type, H5T_NATIVE_SCHAR)) {
- h5dump_str_append(str, OPT(info->fmt_schar, "%d"),
- *((signed char*)vp));
-
- } else if (H5Tequal(type, H5T_NATIVE_UCHAR)) {
- h5dump_str_append(str, OPT(info->fmt_uchar, "%u"),
- *((unsigned char*)vp));
-
- } else if (H5Tequal(type, H5T_NATIVE_SHORT)) {
- h5dump_str_append(str, OPT(info->fmt_short, "%d"),
- *((short*)vp));
-
- } else if (H5Tequal(type, H5T_NATIVE_USHORT)) {
- h5dump_str_append(str, OPT(info->fmt_ushort, "%u"),
- *((unsigned short*)vp));
-
- } else if (H5Tequal(type, H5T_NATIVE_LONG)) {
+ } else if (sizeof(hssize_t)==sizeof(long)) {
h5dump_str_append(str, OPT(info->fmt_long, "%ld"),
*((long*)vp));
-
- } else if (H5Tequal(type, H5T_NATIVE_ULONG)) {
+ } else {
+ h5dump_str_append(str, OPT(info->fmt_llong, fmt_llong),
+ *((int64_t*)vp));
+ }
+
+ } else if (H5Tequal(type, H5T_NATIVE_HSIZE)) {
+ if (sizeof(hsize_t)==sizeof(int)) {
+ h5dump_str_append(str, OPT(info->fmt_uint, "%u"),
+ *((unsigned*)vp));
+ } else if (sizeof(hsize_t)==sizeof(long)) {
h5dump_str_append(str, OPT(info->fmt_ulong, "%lu"),
*((unsigned long*)vp));
-
- } else if (H5Tequal(type, H5T_NATIVE_LLONG)) {
- h5dump_str_append(str, OPT(info->fmt_llong, fmt_llong),
- *((long_long*)vp));
-
- } else if (H5Tequal(type, H5T_NATIVE_ULLONG)) {
+ } else {
h5dump_str_append(str, OPT(info->fmt_ullong, fmt_ullong),
- *((unsigned long_long*)vp));
+ *((uint64_t*)vp));
+ }
+
+ } else if (H5T_COMPOUND==H5Tget_class(type)) {
+ nmembs = H5Tget_nmembers(type);
+ h5dump_str_append(str, "%s", OPT(info->cmpd_pre, "{"));
+ for (j=0; j<nmembs; j++) {
+ if (j) h5dump_str_append(str, "%s",
+ OPT(info->cmpd_sep,
+ ", " OPTIONAL_LINE_BREAK));
- } else if (H5Tequal(type, H5T_NATIVE_HSSIZE)) {
- if (sizeof(hssize_t)==sizeof(int)) {
- h5dump_str_append(str, OPT(info->fmt_int, "%d"),
- *((int*)vp));
- } else if (sizeof(hssize_t)==sizeof(long)) {
- h5dump_str_append(str, OPT(info->fmt_long, "%ld"),
- *((long*)vp));
- } else {
- h5dump_str_append(str, OPT(info->fmt_llong, fmt_llong),
- *((int64_t*)vp));
- }
+ /* The name */
+ name = H5Tget_member_name(type, j);
+ h5dump_str_append(str, OPT(info->cmpd_name, ""), name);
+ free(name);
- } else if (H5Tequal(type, H5T_NATIVE_HSIZE)) {
- if (sizeof(hsize_t)==sizeof(int)) {
- h5dump_str_append(str, OPT(info->fmt_uint, "%u"),
- *((unsigned*)vp));
- } else if (sizeof(hsize_t)==sizeof(long)) {
- h5dump_str_append(str, OPT(info->fmt_ulong, "%lu"),
- *((unsigned long*)vp));
- } else {
- h5dump_str_append(str, OPT(info->fmt_ullong, fmt_ullong),
- *((uint64_t*)vp));
- }
+ /* The value */
+ offset = H5Tget_member_offset(type, j);
+ memb = H5Tget_member_type(type, j);
+ size = H5Tget_size(memb);
+ ndims = H5Tget_member_dims(type, j, dims, NULL);
+ assert(ndims>=0 && ndims<=H5S_MAX_RANK);
+ for (k=0, nelmts=1; k<ndims; k++) nelmts *= dims[k];
- } else if (H5T_COMPOUND==H5Tget_class(type)) {
- nmembs = H5Tget_nmembers(type);
- h5dump_str_append(str, "%s", OPT(info->cmpd_pre, "{"));
- for (j=0; j<nmembs; j++) {
- if (j) h5dump_str_append(str, "%s",
- OPT(info->cmpd_sep,
- ", " OPTIONAL_LINE_BREAK));
-
- /* The name */
- name = H5Tget_member_name(type, j);
- h5dump_str_append(str, OPT(info->cmpd_name, ""), name);
- free(name);
-
- /* The value */
- offset = H5Tget_member_offset(type, j);
- memb = H5Tget_member_type(type, j);
- size = H5Tget_size(memb);
- ndims = H5Tget_member_dims(type, j, dims, NULL);
- assert(ndims>=0 && ndims<=H5S_MAX_RANK);
- for (k=0, nelmts=1; k<ndims; k++) nelmts *= dims[k];
-
- if (nelmts>1) {
- h5dump_str_append(str, "%s", OPT(info->arr_pre, "["));
- }
- for (i=0; i<nelmts; i++) {
- if (i) {
- h5dump_str_append(str, "%s",
- OPT(info->arr_sep,
- "," OPTIONAL_LINE_BREAK));
- }
- h5dump_sprint(str, info, memb, (char*)vp+offset+i*size);
- }
- if (nelmts>1) {
- h5dump_str_append(str, "%s", OPT(info->arr_suf, "]"));
- }
- H5Tclose(memb);
+ if (nelmts>1) {
+ h5dump_str_append(str, "%s", OPT(info->arr_pre, "["));
}
- h5dump_str_append(str, "%s", OPT(info->cmpd_suf, "}"));
-
- } else if (H5T_ENUM==H5Tget_class(type)) {
- char enum_name[1024];
- if (H5Tenum_nameof(type, vp, enum_name, sizeof enum_name)>=0) {
- h5dump_escape(enum_name, sizeof enum_name, TRUE);
- } else {
- h5dump_str_append(str, "0x");
- n = H5Tget_size(type);
- for (i=0; i<n; i++) {
- h5dump_str_append(str, "%02x", ((unsigned char*)vp)[i]);
+ for (i=0; i<nelmts; i++) {
+ if (i) {
+ h5dump_str_append(str, "%s",
+ OPT(info->arr_sep,
+ "," OPTIONAL_LINE_BREAK));
}
+ h5dump_sprint(str, info, memb, (char*)vp+offset+i*size);
}
-
+ if (nelmts>1) {
+ h5dump_str_append(str, "%s", OPT(info->arr_suf, "]"));
+ }
+ H5Tclose(memb);
+ }
+ h5dump_str_append(str, "%s", OPT(info->cmpd_suf, "}"));
+
+ } else if (H5T_ENUM==H5Tget_class(type)) {
+ char enum_name[1024];
+ if (H5Tenum_nameof(type, vp, enum_name, sizeof enum_name)>=0) {
+ h5dump_escape(enum_name, sizeof enum_name, TRUE);
} else {
h5dump_str_append(str, "0x");
n = H5Tget_size(type);
@@ -701,10 +693,18 @@ h5dump_sprint(h5dump_str_t *str/*in,out*/, const h5dump_t *info,
}
}
- return h5dump_str_fmt(str, start, OPT(info->elmt_fmt, "%s"));
-
+ } else {
+ h5dump_str_append(str, "0x");
+ n = H5Tget_size(type);
+ for (i=0; i<n; i++) {
+ h5dump_str_append(str, "%02x", ((unsigned char*)vp)[i]);
+ }
}
- else {}
+
+ return h5dump_str_fmt(str, start, OPT(info->elmt_fmt, "%s"));
+
+
+
}