diff options
Diffstat (limited to 'test/cmpd_dset.c')
-rw-r--r-- | test/cmpd_dset.c | 2178 |
1 files changed, 1117 insertions, 1061 deletions
diff --git a/test/cmpd_dset.c b/test/cmpd_dset.c index 4087f28..b9583a7 100644 --- a/test/cmpd_dset.c +++ b/test/cmpd_dset.c @@ -6,7 +6,7 @@ * This file is part of HDF5. The full HDF5 copyright notice, including * * terms governing use, modification, and redistribution, is contained in * * the COPYING file, which can be found at the root of the source code * - * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. * + * distribution tree, or in https://www.hdfgroup.org/licenses. * * If you do not have access to either file, you may request a copy from * * help@hdfgroup.org. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ @@ -19,26 +19,16 @@ /* See H5private.h for how to include headers */ #undef NDEBUG -#define H5T_PACKAGE -#include "H5Tpkg.h" /*to turn off hardware conversions*/ +#define H5T_PACKAGE /*suppress error about including H5Tpkg */ +#include "H5Tpkg.h" /*to turn off hardware conversions*/ #include "H5Iprivate.h" #include "h5test.h" -const char *FILENAME[] = { - "cmpd_dset", - "src_subset", - "dst_subset", - NULL -}; - -const char *DSET_NAME[] = { - "contig_src_subset", - "chunk_src_subset", - "contig_dst_subset", - "chunk_dst_subset", - NULL -}; +const char *FILENAME[] = {"cmpd_dset", "src_subset", "dst_subset", NULL}; + +const char *DSET_NAME[] = {"contig_src_subset", "chunk_src_subset", "contig_dst_subset", "chunk_dst_subset", + NULL}; /* The first dataset */ typedef struct s1_t { @@ -96,130 +86,149 @@ typedef struct s6_t { /* Structures for testing the optimization for the Chicago company. */ typedef struct { - int a, b, c[8], d, e; - float f, g, h[16], i, j; + int a, b, c[8], d, e; + float f, g, h[16], i, j; double k, l, m, n; } stype1; + typedef struct { - int a, b, c[8], d, e; - float f, g, h[16], i, j; + int a, b, c[8], d, e; + float f, g, h[16], i, j; double k, l, m, n; - long o, p, q; + long o, p, q; } stype2; + typedef struct { int a, b, c[8], d, e; } stype3; + typedef struct { - int a, b, c[8], d, e; - float f, g, h[16], i, j; - double k, l, m, n; - long o, p, q; + int a, b, c[8], d, e; + float f, g, h[16], i, j; + double k, l, m, n; + long o, p, q; long long r, s, t; } stype4; -#define NX 100u -#define NY 2000u -#define PACK_NMEMBS 100 +#define NX 100u +#define NY 2000u +#define PACK_NMEMBS 100 - /*------------------------------------------------------------------------- - * Function: test_compound + * Function: test_compound * - * Purpose: Creates a simple dataset of a compound type and then reads - * it back. The dataset is read back in various ways to - * exercise the I/O pipeline and compound type conversion. + * Purpose: Creates a simple dataset of a compound type and then reads + * it back. The dataset is read back in various ways to + * exercise the I/O pipeline and compound type conversion. * - * Return: Success: 0 + * Return: Success: 0 * - * Failure: 1 + * Failure: 1 * - * Programmer: Robb Matzke + * Programmer: Robb Matzke * Friday, January 23, 1998 * * Modifications: - * Robb Matzke, 1999-06-23 - * If the command line switch `--noopt' is present then the fast - * compound datatype conversion is turned off. + * Robb Matzke, 1999-06-23 + * If the command line switch `--noopt' is present then the fast + * compound datatype conversion is turned off. * * Raymond Lu, 15 June 2007 * Moved this part of code from MAIN to TEST_COMPOUND function. *------------------------------------------------------------------------- */ -static int -test_compound (char *filename, hid_t fapl) +static unsigned +test_compound(char *filename, hid_t fapl) { /* First dataset */ - static s1_t s1[NX*NY]; - hid_t s1_tid; + s1_t *s1 = NULL; + hid_t s1_tid; /* Second dataset */ - static s2_t s2[NX*NY]; - hid_t s2_tid; + s2_t *s2 = NULL; + hid_t s2_tid; /* Third dataset */ - static s3_t s3[NX*NY]; - hid_t s3_tid; + s3_t *s3 = NULL; + hid_t s3_tid; /* Fourth dataset */ - static s4_t s4[NX*NY]; - hid_t s4_tid; + s4_t *s4 = NULL; + hid_t s4_tid; /* Fifth dataset */ - static s5_t s5[NX*NY]; - hid_t s5_tid; - - static s6_t s6[NX*NY]; - hid_t s6_tid; - + s5_t *s5 = NULL; + hid_t s5_tid; /* Sixth dataset */ + s6_t *s6 = NULL; + hid_t s6_tid; /* Seventh dataset */ - hid_t s7_sid; + hid_t s7_sid; /* Eighth dataset */ - s1_t *s8 = NULL; - hid_t s8_f_sid; /*file data space */ - hid_t s8_m_sid; /*memory data space */ + s1_t *s8 = NULL; + hid_t s8_f_sid; /*file data space */ + hid_t s8_m_sid; /*memory data space */ /* Ninth dataset */ /* Tenth dataset */ /* Eleventh dataset */ - s4_t *s11 = NULL; + s4_t *s11 = NULL; /* Other variables */ - unsigned int i, j; - hid_t file, dataset, space, PRESERVE; - hid_t array_dt; - static hsize_t dim[] = {NX, NY}; - hsize_t f_offset[2]; /*offset of hyperslab in file */ - hsize_t h_size[2]; /*size of hyperslab */ - hsize_t memb_size[1] = {4}; - int ret_code; + unsigned int i, j; + hid_t file, dataset, space, PRESERVE; + hid_t array_dt; + static hsize_t dim[] = {NX, NY}; + hsize_t f_offset[2]; /*offset of hyperslab in file */ + hsize_t h_size[2]; /*size of hyperslab */ + hsize_t memb_size[1] = {4}; + int ret_code; + + /* Allocate buffers for datasets */ + if (NULL == (s1 = (s1_t *)HDmalloc(sizeof(s1_t) * NX * NY))) + goto error; + if (NULL == (s2 = (s2_t *)HDmalloc(sizeof(s2_t) * NX * NY))) + goto error; + if (NULL == (s3 = (s3_t *)HDmalloc(sizeof(s3_t) * NX * NY))) + goto error; + if (NULL == (s4 = (s4_t *)HDmalloc(sizeof(s4_t) * NX * NY))) + goto error; + if (NULL == (s5 = (s5_t *)HDmalloc(sizeof(s5_t) * NX * NY))) + goto error; + if (NULL == (s6 = (s6_t *)HDmalloc(sizeof(s6_t) * NX * NY))) + goto error; /* Create the file */ - if ((file = H5Fcreate (filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) { - goto error; + if ((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) { + goto error; } /* Create the data space */ - if ((space = H5Screate_simple (2, dim, NULL)) < 0) goto error; + if ((space = H5Screate_simple(2, dim, NULL)) < 0) + goto error; /* Create xfer properties to preserve initialized data */ /* Also verify H5Pset_preserve is initially 0 and then is set to 1. */ - if ((PRESERVE = H5Pcreate (H5P_DATASET_XFER))<0) goto error; - if ((ret_code=H5Pget_preserve (PRESERVE)) != 0){ - printf("Preserve status of dataset transfer property list should be" - " 0 (FALSE), got %d\n", ret_code); - goto error; + if ((PRESERVE = H5Pcreate(H5P_DATASET_XFER)) < 0) + goto error; + if ((ret_code = H5Pget_preserve(PRESERVE)) != 0) { + HDprintf("Preserve status of dataset transfer property list should be" + " 0 (FALSE), got %d\n", + ret_code); + goto error; } - if (H5Pset_preserve (PRESERVE, 1)<0) goto error; - if ((ret_code=H5Pget_preserve (PRESERVE)) != 1){ - printf("Preserve status of dataset transfer property list should be" - " 1 (TRUE), got %d\n", ret_code); - goto error; + if (H5Pset_preserve(PRESERVE, 1) < 0) + goto error; + if ((ret_code = H5Pget_preserve(PRESERVE)) != 1) { + HDprintf("Preserve status of dataset transfer property list should be" + " 1 (TRUE), got %d\n", + ret_code); + goto error; } /* @@ -229,120 +238,110 @@ test_compound (char *filename, hid_t fapl) TESTING("basic compound write"); /* Initialize the dataset */ - for (i=0; i<NX*NY; i++) { - s1[i].a = 8*i+0; - s1[i].b = 2000+2*i; - s1[i].c[0] = 8*i+2; - s1[i].c[1] = 8*i+3; - s1[i].c[2] = 8*i+4; - s1[i].c[3] = 8*i+5; - s1[i].d = 2001+2*i; - s1[i].e = 8*i+7; + for (i = 0; i < NX * NY; i++) { + s1[i].a = 8 * i + 0; + s1[i].b = 2000 + 2 * i; + s1[i].c[0] = 8 * i + 2; + s1[i].c[1] = 8 * i + 3; + s1[i].c[2] = 8 * i + 4; + s1[i].c[3] = 8 * i + 5; + s1[i].d = 2001 + 2 * i; + s1[i].e = 8 * i + 7; } /* Create the memory data type */ - if((s1_tid = H5Tcreate(H5T_COMPOUND, sizeof(s1_t))) < 0) + if ((s1_tid = H5Tcreate(H5T_COMPOUND, sizeof(s1_t))) < 0) goto error; array_dt = H5Tarray_create2(H5T_NATIVE_INT, 1, memb_size); - if(H5Tinsert(s1_tid, "a", HOFFSET(s1_t, a), H5T_NATIVE_INT) < 0 || - H5Tinsert(s1_tid, "b", HOFFSET(s1_t, b), H5T_NATIVE_INT) < 0 || - H5Tinsert(s1_tid, "c", HOFFSET(s1_t, c), array_dt) < 0 || - H5Tinsert(s1_tid, "d", HOFFSET(s1_t, d), H5T_NATIVE_INT) < 0 || - H5Tinsert(s1_tid, "e", HOFFSET(s1_t, e), H5T_NATIVE_INT) < 0) + if (H5Tinsert(s1_tid, "a", HOFFSET(s1_t, a), H5T_NATIVE_INT) < 0 || + H5Tinsert(s1_tid, "b", HOFFSET(s1_t, b), H5T_NATIVE_INT) < 0 || + H5Tinsert(s1_tid, "c", HOFFSET(s1_t, c), array_dt) < 0 || + H5Tinsert(s1_tid, "d", HOFFSET(s1_t, d), H5T_NATIVE_INT) < 0 || + H5Tinsert(s1_tid, "e", HOFFSET(s1_t, e), H5T_NATIVE_INT) < 0) goto error; H5Tclose(array_dt); /* Create the dataset */ - if((dataset = H5Dcreate2(file, "s1", s1_tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) - goto error; + if ((dataset = H5Dcreate2(file, "s1", s1_tid, space, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT)) < 0) + goto error; /* Write the data */ - if(H5Dwrite(dataset, s1_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, s1) < 0) - goto error; + if (H5Dwrite(dataset, s1_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, s1) < 0) + goto error; PASSED(); /* *###################################################################### * STEP 2: We create a new type ID for the second dataset even though - * it's the same as the first just to test things better, but - * in fact, we could have used s1_tid. + * it's the same as the first just to test things better, but + * in fact, we could have used s1_tid. */ TESTING("basic compound read"); /* Create a data type for s2 */ - if ((s2_tid = H5Tcreate (H5T_COMPOUND, sizeof(s2_t))) < 0) + if ((s2_tid = H5Tcreate(H5T_COMPOUND, sizeof(s2_t))) < 0) goto error; array_dt = H5Tarray_create2(H5T_NATIVE_INT, 1, memb_size); - if (H5Tinsert (s2_tid, "a", HOFFSET(s2_t,a), H5T_NATIVE_INT) < 0 || - H5Tinsert (s2_tid, "b", HOFFSET(s2_t,b), H5T_NATIVE_INT) < 0 || - H5Tinsert (s2_tid, "c", HOFFSET(s2_t,c), array_dt) < 0 || - H5Tinsert (s2_tid, "d", HOFFSET(s2_t,d), H5T_NATIVE_INT) < 0 || - H5Tinsert (s2_tid, "e", HOFFSET(s2_t,e), H5T_NATIVE_INT) < 0) + if (H5Tinsert(s2_tid, "a", HOFFSET(s2_t, a), H5T_NATIVE_INT) < 0 || + H5Tinsert(s2_tid, "b", HOFFSET(s2_t, b), H5T_NATIVE_INT) < 0 || + H5Tinsert(s2_tid, "c", HOFFSET(s2_t, c), array_dt) < 0 || + H5Tinsert(s2_tid, "d", HOFFSET(s2_t, d), H5T_NATIVE_INT) < 0 || + H5Tinsert(s2_tid, "e", HOFFSET(s2_t, e), H5T_NATIVE_INT) < 0) goto error; H5Tclose(array_dt); /* Read the data */ - if (H5Dread (dataset, s2_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, s2) < 0) { - goto error; + if (H5Dread(dataset, s2_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, s2) < 0) { + goto error; } /* Compare s2 with s1. They should be the same */ - for (i=0; i<NX*NY; i++) { - if (s1[i].a!=s2[i].a || - s1[i].b!=s2[i].b || - s1[i].c[0]!=s2[i].c[0] || - s1[i].c[1]!=s2[i].c[1] || - s1[i].c[2]!=s2[i].c[2] || - s1[i].c[3]!=s2[i].c[3] || - s1[i].d!=s2[i].d || - s1[i].e!=s2[i].e) { - H5_FAILED(); - puts(" Incorrect values read from the file"); - goto error; - } + for (i = 0; i < NX * NY; i++) { + if (s1[i].a != s2[i].a || s1[i].b != s2[i].b || s1[i].c[0] != s2[i].c[0] || + s1[i].c[1] != s2[i].c[1] || s1[i].c[2] != s2[i].c[2] || s1[i].c[3] != s2[i].c[3] || + s1[i].d != s2[i].d || s1[i].e != s2[i].e) { + H5_FAILED(); + puts(" Incorrect values read from the file"); + goto error; + } } PASSED(); /* *###################################################################### * STEP 3: Read the dataset back into a third memory buffer. This buffer - * has the same data space but the data type is different: the - * data type is a struct whose members are in the opposite order. + * has the same data space but the data type is different: the + * data type is a struct whose members are in the opposite order. */ TESTING("reversal of struct members"); /* Create a data type for s3 */ - if ((s3_tid = H5Tcreate (H5T_COMPOUND, sizeof(s3_t))) < 0) + if ((s3_tid = H5Tcreate(H5T_COMPOUND, sizeof(s3_t))) < 0) goto error; array_dt = H5Tarray_create2(H5T_NATIVE_INT, 1, memb_size); - if (H5Tinsert (s3_tid, "a", HOFFSET(s3_t,a), H5T_NATIVE_INT) < 0 || - H5Tinsert (s3_tid, "b", HOFFSET(s3_t,b), H5T_NATIVE_INT) < 0 || - H5Tinsert (s3_tid, "c", HOFFSET(s3_t,c), array_dt) < 0 || - H5Tinsert (s3_tid, "d", HOFFSET(s3_t,d), H5T_NATIVE_INT) < 0 || - H5Tinsert (s3_tid, "e", HOFFSET(s3_t,e), H5T_NATIVE_INT) < 0) + if (H5Tinsert(s3_tid, "a", HOFFSET(s3_t, a), H5T_NATIVE_INT) < 0 || + H5Tinsert(s3_tid, "b", HOFFSET(s3_t, b), H5T_NATIVE_INT) < 0 || + H5Tinsert(s3_tid, "c", HOFFSET(s3_t, c), array_dt) < 0 || + H5Tinsert(s3_tid, "d", HOFFSET(s3_t, d), H5T_NATIVE_INT) < 0 || + H5Tinsert(s3_tid, "e", HOFFSET(s3_t, e), H5T_NATIVE_INT) < 0) goto error; H5Tclose(array_dt); /* Read the data */ - if (H5Dread (dataset, s3_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, s3) < 0) { - goto error; + if (H5Dread(dataset, s3_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, s3) < 0) { + goto error; } /* Compare s3 with s1. They should be the same */ - for (i=0; i<NX*NY; i++) { - if (s1[i].a!=s3[i].a || - s1[i].b!=s3[i].b || - s1[i].c[0]!=s3[i].c[0] || - s1[i].c[1]!=s3[i].c[1] || - s1[i].c[2]!=s3[i].c[2] || - s1[i].c[3]!=s3[i].c[3] || - s1[i].d!=s3[i].d || - s1[i].e!=s3[i].e) { - H5_FAILED(); - puts(" Incorrect values read from the file"); - goto error; - } + for (i = 0; i < NX * NY; i++) { + if (s1[i].a != s3[i].a || s1[i].b != s3[i].b || s1[i].c[0] != s3[i].c[0] || + s1[i].c[1] != s3[i].c[1] || s1[i].c[2] != s3[i].c[2] || s1[i].c[3] != s3[i].c[3] || + s1[i].d != s3[i].d || s1[i].e != s3[i].e) { + H5_FAILED(); + puts(" Incorrect values read from the file"); + goto error; + } } PASSED(); @@ -354,91 +353,86 @@ test_compound (char *filename, hid_t fapl) TESTING("subset struct read"); /* Create a datatype for s4 */ - if ((s4_tid = H5Tcreate (H5T_COMPOUND, sizeof(s4_t))) < 0) goto error; - if (H5Tinsert (s4_tid, "b", HOFFSET(s4_t,b), H5T_NATIVE_INT) < 0) goto error; - if (H5Tinsert (s4_tid, "d", HOFFSET(s4_t,d), H5T_NATIVE_INT) < 0) goto error; + if ((s4_tid = H5Tcreate(H5T_COMPOUND, sizeof(s4_t))) < 0) + goto error; + if (H5Tinsert(s4_tid, "b", HOFFSET(s4_t, b), H5T_NATIVE_INT) < 0) + goto error; + if (H5Tinsert(s4_tid, "d", HOFFSET(s4_t, d), H5T_NATIVE_INT) < 0) + goto error; /* Read the data */ - if (H5Dread (dataset, s4_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, s4) < 0) { - goto error; + if (H5Dread(dataset, s4_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, s4) < 0) { + goto error; } /* Compare s4 with s1 */ - for (i=0; i<NX*NY; i++) { - if (s1[i].b!=s4[i].b || - s1[i].d!=s4[i].d) { - H5_FAILED(); - puts(" Incorrect values read from the file"); - goto error; - } + for (i = 0; i < NX * NY; i++) { + if (s1[i].b != s4[i].b || s1[i].d != s4[i].d) { + H5_FAILED(); + puts(" Incorrect values read from the file"); + goto error; + } } PASSED(); /* *###################################################################### * STEP 5: Read all the members into a struct which has other members - * which have already been initialized. + * which have already been initialized. */ TESTING("partially initialized superset read"); /* Initialize some members */ - for (i=0; i<NX*NY; i++) { - s5[i].pre = 1000+4*i; - s5[i].mid1 = 1001+4*i; - s5[i].mid2 = 1002+4*i; - s5[i].post = 1003+4*i; + for (i = 0; i < NX * NY; i++) { + s5[i].pre = 1000 + 4 * i; + s5[i].mid1 = 1001 + 4 * i; + s5[i].mid2 = 1002 + 4 * i; + s5[i].post = 1003 + 4 * i; } /* Create a data type for s5 */ - if ((s5_tid = H5Tcreate (H5T_COMPOUND, sizeof(s5_t))) < 0) + if ((s5_tid = H5Tcreate(H5T_COMPOUND, sizeof(s5_t))) < 0) goto error; array_dt = H5Tarray_create2(H5T_NATIVE_INT, 1, memb_size); - if (H5Tinsert (s5_tid, "a", HOFFSET(s5_t,a), H5T_NATIVE_INT) < 0 || - H5Tinsert (s5_tid, "b", HOFFSET(s5_t,b), H5T_NATIVE_INT) < 0 || - H5Tinsert (s5_tid, "c", HOFFSET(s5_t,c), array_dt) < 0 || - H5Tinsert (s5_tid, "d", HOFFSET(s5_t,d), H5T_NATIVE_INT) < 0 || - H5Tinsert (s5_tid, "e", HOFFSET(s5_t,e), H5T_NATIVE_INT)) + if (H5Tinsert(s5_tid, "a", HOFFSET(s5_t, a), H5T_NATIVE_INT) < 0 || + H5Tinsert(s5_tid, "b", HOFFSET(s5_t, b), H5T_NATIVE_INT) < 0 || + H5Tinsert(s5_tid, "c", HOFFSET(s5_t, c), array_dt) < 0 || + H5Tinsert(s5_tid, "d", HOFFSET(s5_t, d), H5T_NATIVE_INT) < 0 || + H5Tinsert(s5_tid, "e", HOFFSET(s5_t, e), H5T_NATIVE_INT)) goto error; H5Tclose(array_dt); /* Read the data */ - if (H5Dread (dataset, s5_tid, H5S_ALL, H5S_ALL, PRESERVE, s5) < 0) { - goto error; + if (H5Dread(dataset, s5_tid, H5S_ALL, H5S_ALL, PRESERVE, s5) < 0) { + goto error; } /* Check that the data was read properly */ - for (i=0; i<NX*NY; i++) { - if (s1[i].a!=s5[i].a || - s1[i].b!=s5[i].b || - s1[i].c[0]!=s5[i].c[0] || - s1[i].c[1]!=s5[i].c[1] || - s1[i].c[2]!=s5[i].c[2] || - s1[i].c[3]!=s5[i].c[3] || - s1[i].d!=s5[i].d || - s1[i].e!=s5[i].e) { - H5_FAILED(); - puts(" Incorrect values read from the file"); - goto error; - } + for (i = 0; i < NX * NY; i++) { + if (s1[i].a != s5[i].a || s1[i].b != s5[i].b || s1[i].c[0] != s5[i].c[0] || + s1[i].c[1] != s5[i].c[1] || s1[i].c[2] != s5[i].c[2] || s1[i].c[3] != s5[i].c[3] || + s1[i].d != s5[i].d || s1[i].e != s5[i].e) { + H5_FAILED(); + puts(" Incorrect values read from the file"); + goto error; + } } /* Check that no previous values were clobbered */ - for (i=0; i<NX*NY; i++) { - if (s5[i].pre != 1000+4*i || - s5[i].mid1 != 1001+4*i || - s5[i].mid2 != 1002+4*i || - s5[i].post != 1003+4*i) { - H5_FAILED(); - puts(" Memory values were clobbered"); - goto error; - } + for (i = 0; i < NX * NY; i++) { + if (s5[i].pre != 1000 + 4 * i || s5[i].mid1 != 1001 + 4 * i || s5[i].mid2 != 1002 + 4 * i || + s5[i].post != 1003 + 4 * i) { + H5_FAILED(); + puts(" Memory values were clobbered"); + goto error; + } } PASSED(); /* *###################################################################### * STEP 6: Read all the members into a struct which has other members - * which have already been initialized. This is to test the + * which have already been initialized. This is to test the * optimization for the Chicago company. The optimization is * for the special case when the source members are a subset of * destination, and the order is the same, and no conversion @@ -454,107 +448,93 @@ test_compound (char *filename, hid_t fapl) TESTING("partially initialized superset optimized read"); /* Initialize some members */ - for (i=0; i<NX*NY; i++) { - s6[i].pre = 1000+4*i; - s6[i].mid1 = 1001+4*i; - s6[i].mid2 = 1002+4*i; - s6[i].post = 1003+4*i; + for (i = 0; i < NX * NY; i++) { + s6[i].pre = 1000 + 4 * i; + s6[i].mid1 = 1001 + 4 * i; + s6[i].mid2 = 1002 + 4 * i; + s6[i].post = 1003 + 4 * i; } /* Create a data type for s6 */ - if ((s6_tid = H5Tcreate (H5T_COMPOUND, sizeof(s6_t))) < 0) + if ((s6_tid = H5Tcreate(H5T_COMPOUND, sizeof(s6_t))) < 0) goto error; array_dt = H5Tarray_create2(H5T_NATIVE_INT, 1, memb_size); - if (H5Tinsert (s6_tid, "a", HOFFSET(s6_t,a), H5T_NATIVE_INT) < 0 || - H5Tinsert (s6_tid, "b", HOFFSET(s6_t,b), H5T_NATIVE_INT) < 0 || - H5Tinsert (s6_tid, "c", HOFFSET(s6_t,c), array_dt) < 0 || - H5Tinsert (s6_tid, "d", HOFFSET(s6_t,d), H5T_NATIVE_INT) < 0 || - H5Tinsert (s6_tid, "e", HOFFSET(s6_t,e), H5T_NATIVE_INT) < 0 || - H5Tinsert (s6_tid, "pre", HOFFSET(s6_t,pre), H5T_NATIVE_INT) < 0 || - H5Tinsert (s6_tid, "mid1", HOFFSET(s6_t,mid1), H5T_NATIVE_INT) < 0 || - H5Tinsert (s6_tid, "mid2", HOFFSET(s6_t,mid2), H5T_NATIVE_INT) < 0 || - H5Tinsert (s6_tid, "post", HOFFSET(s6_t,post), H5T_NATIVE_INT) < 0) + if (H5Tinsert(s6_tid, "a", HOFFSET(s6_t, a), H5T_NATIVE_INT) < 0 || + H5Tinsert(s6_tid, "b", HOFFSET(s6_t, b), H5T_NATIVE_INT) < 0 || + H5Tinsert(s6_tid, "c", HOFFSET(s6_t, c), array_dt) < 0 || + H5Tinsert(s6_tid, "d", HOFFSET(s6_t, d), H5T_NATIVE_INT) < 0 || + H5Tinsert(s6_tid, "e", HOFFSET(s6_t, e), H5T_NATIVE_INT) < 0 || + H5Tinsert(s6_tid, "pre", HOFFSET(s6_t, pre), H5T_NATIVE_INT) < 0 || + H5Tinsert(s6_tid, "mid1", HOFFSET(s6_t, mid1), H5T_NATIVE_INT) < 0 || + H5Tinsert(s6_tid, "mid2", HOFFSET(s6_t, mid2), H5T_NATIVE_INT) < 0 || + H5Tinsert(s6_tid, "post", HOFFSET(s6_t, post), H5T_NATIVE_INT) < 0) goto error; H5Tclose(array_dt); /* Read the data */ - if (H5Dread (dataset, s6_tid, H5S_ALL, H5S_ALL, PRESERVE, s6) < 0) { - goto error; + if (H5Dread(dataset, s6_tid, H5S_ALL, H5S_ALL, PRESERVE, s6) < 0) { + goto error; } /* Check that the data was read properly */ - for (i=0; i<NX*NY; i++) { - if (s1[i].a!=s6[i].a || - s1[i].b!=s6[i].b || - s1[i].c[0]!=s6[i].c[0] || - s1[i].c[1]!=s6[i].c[1] || - s1[i].c[2]!=s6[i].c[2] || - s1[i].c[3]!=s6[i].c[3] || - s1[i].d!=s6[i].d || - s1[i].e!=s6[i].e) { - H5_FAILED(); - puts(" Incorrect values read from the file"); - goto error; - } + for (i = 0; i < NX * NY; i++) { + if (s1[i].a != s6[i].a || s1[i].b != s6[i].b || s1[i].c[0] != s6[i].c[0] || + s1[i].c[1] != s6[i].c[1] || s1[i].c[2] != s6[i].c[2] || s1[i].c[3] != s6[i].c[3] || + s1[i].d != s6[i].d || s1[i].e != s6[i].e) { + H5_FAILED(); + puts(" Incorrect values read from the file"); + goto error; + } } /* Check that no previous values were clobbered */ - for (i=0; i<NX*NY; i++) { - if (s6[i].pre != 1000+4*i || - s6[i].mid1 != 1001+4*i || - s6[i].mid2 != 1002+4*i || - s6[i].post != 1003+4*i) { - H5_FAILED(); - puts(" Memory values were clobbered"); - goto error; - } + for (i = 0; i < NX * NY; i++) { + if (s6[i].pre != 1000 + 4 * i || s6[i].mid1 != 1001 + 4 * i || s6[i].mid2 != 1002 + 4 * i || + s6[i].post != 1003 + 4 * i) { + H5_FAILED(); + puts(" Memory values were clobbered"); + goto error; + } } PASSED(); - /* *###################################################################### * STEP 7: Update fields `b' and `d' on the file leaving the other * fields unchanged. This tests member alignment and background - * buffers. + * buffers. */ TESTING("partially initialized superset write"); /* Initialize `s4' with new values */ - for (i=0; i<NX*NY; i++) { - s4[i].b = 8*i+1; - s4[i].d = 8*i+6; + for (i = 0; i < NX * NY; i++) { + s4[i].b = 8 * i + 1; + s4[i].d = 8 * i + 6; } /* Write the data to file */ - if (H5Dwrite (dataset, s4_tid, H5S_ALL, H5S_ALL, PRESERVE, s4) < 0) { - goto error; + if (H5Dwrite(dataset, s4_tid, H5S_ALL, H5S_ALL, PRESERVE, s4) < 0) { + goto error; } /* Read the data back */ - if (H5Dread (dataset, s1_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, s1) < 0) { - goto error; + if (H5Dread(dataset, s1_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, s1) < 0) { + goto error; } /* Compare */ - for (i=0; i<NX*NY; i++) { - if (s1[i].a != 8*i+0 || - s1[i].b != 8*i+1 || - s1[i].c[0] != 8*i+2 || - s1[i].c[1] != 8*i+3 || - s1[i].c[2] != 8*i+4 || - s1[i].c[3] != 8*i+5 || - s1[i].d != 8*i+6 || - s1[i].e != 8*i+7) { - H5_FAILED(); - printf(" i==%u, row=%u, col=%u\n", i, i/NY, i%NY); - printf(" got: {%7d,%7d,[%7d,%7d,%7d,%7d],%7d,%7d}\n", - s1[i].a, s1[i].b, s1[i].c[0], s1[i].c[1], s1[i].c[2], - s1[i].c[3], s1[i].d, s1[i].e); - printf(" ans: {%7d,%7d,[%7d,%7d,%7d,%7d],%7d,%7d}\n", - 8*i+0, 8*i+1, 8*i+2, 8*i+3, 8*i+4, 8*i+5, 8*i+6, 8*i+7); - goto error; - } + for (i = 0; i < NX * NY; i++) { + if (s1[i].a != 8 * i + 0 || s1[i].b != 8 * i + 1 || s1[i].c[0] != 8 * i + 2 || + s1[i].c[1] != 8 * i + 3 || s1[i].c[2] != 8 * i + 4 || s1[i].c[3] != 8 * i + 5 || + s1[i].d != 8 * i + 6 || s1[i].e != 8 * i + 7) { + H5_FAILED(); + HDprintf(" i==%u, row=%u, col=%u\n", i, i / NY, i % NY); + HDprintf(" got: {%7d,%7d,[%7d,%7d,%7d,%7d],%7d,%7d}\n", s1[i].a, s1[i].b, s1[i].c[0], + s1[i].c[1], s1[i].c[2], s1[i].c[3], s1[i].d, s1[i].e); + HDprintf(" ans: {%7d,%7d,[%7d,%7d,%7d,%7d],%7d,%7d}\n", 8 * i + 0, 8 * i + 1, 8 * i + 2, + 8 * i + 3, 8 * i + 4, 8 * i + 5, 8 * i + 6, 8 * i + 7); + goto error; + } } PASSED(); @@ -567,31 +547,26 @@ test_compound (char *filename, hid_t fapl) TESTING("explicit data space"); /* Create the data space */ - if ((s7_sid = H5Screate_simple (2, dim, NULL)) < 0) goto error; + if ((s7_sid = H5Screate_simple(2, dim, NULL)) < 0) + goto error; /* Read the dataset */ - if (H5Dread (dataset, s2_tid, s7_sid, H5S_ALL, H5P_DEFAULT, s2) < 0) { - goto error; + if (H5Dread(dataset, s2_tid, s7_sid, H5S_ALL, H5P_DEFAULT, s2) < 0) { + goto error; } /* Compare */ - for (i=0; i<NX*NY; i++) { - if (s2[i].a != s1[i].a || - s2[i].b != s1[i].b || - s2[i].c[0] != s1[i].c[0] || - s2[i].c[1] != s1[i].c[1] || - s2[i].c[2] != s1[i].c[2] || - s2[i].c[3] != s1[i].c[3] || - s2[i].d != s1[i].d || - s2[i].e != s1[i].e) { - H5_FAILED(); - puts(" Incorrect values read from file"); - goto error; - } + for (i = 0; i < NX * NY; i++) { + if (s2[i].a != s1[i].a || s2[i].b != s1[i].b || s2[i].c[0] != s1[i].c[0] || + s2[i].c[1] != s1[i].c[1] || s2[i].c[2] != s1[i].c[2] || s2[i].c[3] != s1[i].c[3] || + s2[i].d != s1[i].d || s2[i].e != s1[i].e) { + H5_FAILED(); + puts(" Incorrect values read from file"); + goto error; + } } PASSED(); - /* *###################################################################### * STEP 9. Read a hyperslab of the file into a complete array in memory. @@ -600,50 +575,45 @@ test_compound (char *filename, hid_t fapl) TESTING("hyperslab partial read to array"); /* Create the file data space */ - if ((s8_f_sid = H5Dget_space (dataset)) < 0) goto error; - f_offset[0] = NX/3; - f_offset[1] = NY/3; - h_size[0] = 2*NX/3 - f_offset[0]; - h_size[1] = 2*NY/3 - f_offset[1]; - if (H5Sselect_hyperslab (s8_f_sid, H5S_SELECT_SET, f_offset, NULL, - h_size, NULL) < 0) goto error; + if ((s8_f_sid = H5Dget_space(dataset)) < 0) + goto error; + f_offset[0] = NX / 3; + f_offset[1] = NY / 3; + h_size[0] = 2 * NX / 3 - f_offset[0]; + h_size[1] = 2 * NY / 3 - f_offset[1]; + if (H5Sselect_hyperslab(s8_f_sid, H5S_SELECT_SET, f_offset, NULL, h_size, NULL) < 0) + goto error; /* Create memory data space */ - if ((s8_m_sid = H5Screate_simple (2, h_size, NULL)) < 0) goto error; + if ((s8_m_sid = H5Screate_simple(2, h_size, NULL)) < 0) + goto error; /* Read the dataset */ - s8 = (s1_t *) HDcalloc ((size_t)(h_size[0]*h_size[1]), sizeof(s1_t)); - assert (s8); - if (H5Dread (dataset, s1_tid, s8_m_sid, s8_f_sid, H5P_DEFAULT, s8) < 0) { - goto error; + s8 = (s1_t *)HDcalloc((size_t)(h_size[0] * h_size[1]), sizeof(s1_t)); + assert(s8); + if (H5Dread(dataset, s1_tid, s8_m_sid, s8_f_sid, H5P_DEFAULT, s8) < 0) { + goto error; } /* Compare */ - for (i=0; i<h_size[0]; i++) { - for (j=0; j<h_size[1]; j++) { - s1_t *ps1 = s1 + (f_offset[0]+i)*NY + f_offset[1] + j; - s1_t *ps8 = s8 + i*h_size[1] + j; - - if (ps8->a != ps1->a || - ps8->b != ps1->b || - ps8->c[0] != ps1->c[0] || - ps8->c[1] != ps1->c[1] || - ps8->c[2] != ps1->c[2] || - ps8->c[3] != ps1->c[3] || - ps8->d != ps1->d || - ps8->e != ps1->e) { - H5_FAILED(); - puts(" Incorrect values read from file"); - goto error; - } - } + for (i = 0; i < h_size[0]; i++) { + for (j = 0; j < h_size[1]; j++) { + s1_t *ps1 = s1 + (f_offset[0] + i) * NY + f_offset[1] + j; + s1_t *ps8 = s8 + i * h_size[1] + j; + + if (ps8->a != ps1->a || ps8->b != ps1->b || ps8->c[0] != ps1->c[0] || ps8->c[1] != ps1->c[1] || + ps8->c[2] != ps1->c[2] || ps8->c[3] != ps1->c[3] || ps8->d != ps1->d || ps8->e != ps1->e) { + H5_FAILED(); + puts(" Incorrect values read from file"); + goto error; + } + } } - HDfree (s8); + HDfree(s8); s8 = NULL; PASSED(); - /* *###################################################################### * STEP 10. Read a hyperslab of the file into a hyperslab of memory. The @@ -652,52 +622,41 @@ test_compound (char *filename, hid_t fapl) TESTING("hyperslab partial read to another hyperslab"); /* Initialize */ - for (i=0; i<NX*NY; i++) { - s2[i].a = s2[i].b = s2[i].d = s2[i].e = (unsigned)(-1); - s2[i].c[0] = s2[i].c[1] = s2[i].c[2] = s2[i].c[3] = (unsigned)(-1); + for (i = 0; i < NX * NY; i++) { + s2[i].a = s2[i].b = s2[i].d = s2[i].e = (unsigned)(-1); + s2[i].c[0] = s2[i].c[1] = s2[i].c[2] = s2[i].c[3] = (unsigned)(-1); } /* Read the hyperslab */ - if (H5Dread (dataset, s2_tid, s8_f_sid, s8_f_sid, H5P_DEFAULT, s2) < 0) { - goto error; + if (H5Dread(dataset, s2_tid, s8_f_sid, s8_f_sid, H5P_DEFAULT, s2) < 0) { + goto error; } /* Compare */ - for (i=0; i<NX; i++) { - for (j=0; j<NY; j++) { - s1_t *ps1 = s1 + i*NY + j; - s2_t *ps2 = s2 + i*NY + j; - if (i>=f_offset[0] && - i<f_offset[0]+h_size[0] && - j>=f_offset[1] && - j<f_offset[1]+h_size[1]) { - if (ps2->a != ps1->a || - ps2->b != ps1->b || - ps2->c[0] != ps1->c[0] || - ps2->c[1] != ps1->c[1] || - ps2->c[2] != ps1->c[2] || - ps2->c[3] != ps1->c[3] || - ps2->d != ps1->d || - ps2->e != ps1->e) { - H5_FAILED(); - puts(" Memory values clobbered"); - goto error; - } - } else { - if (ps2->a != (unsigned)(-1) || - ps2->b != (unsigned)(-1) || - ps2->c[0] != (unsigned)(-1) || - ps2->c[1] != (unsigned)(-1) || - ps2->c[2] != (unsigned)(-1) || - ps2->c[3] != (unsigned)(-1) || - ps2->d != (unsigned)(-1) || - ps2->e != (unsigned)(-1)) { - H5_FAILED(); - puts(" Incorrect values read from file"); - goto error; - } - } - } + for (i = 0; i < NX; i++) { + for (j = 0; j < NY; j++) { + s1_t *ps1 = s1 + i * NY + j; + s2_t *ps2 = s2 + i * NY + j; + if (i >= f_offset[0] && i < f_offset[0] + h_size[0] && j >= f_offset[1] && + j < f_offset[1] + h_size[1]) { + if (ps2->a != ps1->a || ps2->b != ps1->b || ps2->c[0] != ps1->c[0] || + ps2->c[1] != ps1->c[1] || ps2->c[2] != ps1->c[2] || ps2->c[3] != ps1->c[3] || + ps2->d != ps1->d || ps2->e != ps1->e) { + H5_FAILED(); + puts(" Memory values clobbered"); + goto error; + } + } + else { + if (ps2->a != (unsigned)(-1) || ps2->b != (unsigned)(-1) || ps2->c[0] != (unsigned)(-1) || + ps2->c[1] != (unsigned)(-1) || ps2->c[2] != (unsigned)(-1) || + ps2->c[3] != (unsigned)(-1) || ps2->d != (unsigned)(-1) || ps2->e != (unsigned)(-1)) { + H5_FAILED(); + puts(" Incorrect values read from file"); + goto error; + } + } + } } PASSED(); @@ -709,61 +668,45 @@ test_compound (char *filename, hid_t fapl) TESTING("hyperslab to hyperslab part initialized read"); /* Initialize */ - for (i=0; i<NX*NY; i++) { - s5[i].a = s5[i].b = s5[i].d = s5[i].e = (unsigned)(-1); - s5[i].c[0] = s5[i].c[1] = s5[i].c[2] = s5[i].c[3] = (unsigned)(-1); - s5[i].pre = s5[i].mid1 = s5[i].mid2 = s5[i].post = (unsigned)(-1); + for (i = 0; i < NX * NY; i++) { + s5[i].a = s5[i].b = s5[i].d = s5[i].e = (unsigned)(-1); + s5[i].c[0] = s5[i].c[1] = s5[i].c[2] = s5[i].c[3] = (unsigned)(-1); + s5[i].pre = s5[i].mid1 = s5[i].mid2 = s5[i].post = (unsigned)(-1); } /* Read the hyperslab */ - if (H5Dread (dataset, s5_tid, s8_f_sid, s8_f_sid, PRESERVE, s5) < 0) { - goto error; + if (H5Dread(dataset, s5_tid, s8_f_sid, s8_f_sid, PRESERVE, s5) < 0) { + goto error; } /* Compare */ - for (i=0; i<NX; i++) { - for (j=0; j<NY; j++) { - s1_t *ps1 = s1 + i*NY + j; - s5_t *ps5 = s5 + i*NY + j; - if (i>=f_offset[0] && - i<f_offset[0]+h_size[0] && - j>=f_offset[1] && - j<f_offset[1]+h_size[1]) { - if (ps5->pre != (unsigned)(-1) || - ps5->a != ps1->a || - ps5->b != ps1->b || - ps5->mid1 != (unsigned)(-1) || - ps5->c[0] != ps1->c[0] || - ps5->c[1] != ps1->c[1] || - ps5->c[2] != ps1->c[2] || - ps5->c[3] != ps1->c[3] || - ps5->mid2 != (unsigned)(-1) || - ps5->d != ps1->d || - ps5->e != ps1->e || - ps5->post != (unsigned)(-1)) { - H5_FAILED(); - puts(" Memory values clobbered"); - goto error; - } - } else { - if (ps5->pre != (unsigned)(-1) || - ps5->a != (unsigned)(-1) || - ps5->b != (unsigned)(-1) || - ps5->mid1 != (unsigned)(-1) || - ps5->c[0] != (unsigned)(-1) || - ps5->c[1] != (unsigned)(-1) || - ps5->c[2] != (unsigned)(-1) || - ps5->c[3] != (unsigned)(-1) || - ps5->mid2 != (unsigned)(-1) || - ps5->d != (unsigned)(-1) || - ps5->e != (unsigned)(-1) || - ps5->post != (unsigned)(-1)) { - H5_FAILED(); - puts(" Incorrect values read from file"); - goto error; - } - } - } + for (i = 0; i < NX; i++) { + for (j = 0; j < NY; j++) { + s1_t *ps1 = s1 + i * NY + j; + s5_t *ps5 = s5 + i * NY + j; + if (i >= f_offset[0] && i < f_offset[0] + h_size[0] && j >= f_offset[1] && + j < f_offset[1] + h_size[1]) { + if (ps5->pre != (unsigned)(-1) || ps5->a != ps1->a || ps5->b != ps1->b || + ps5->mid1 != (unsigned)(-1) || ps5->c[0] != ps1->c[0] || ps5->c[1] != ps1->c[1] || + ps5->c[2] != ps1->c[2] || ps5->c[3] != ps1->c[3] || ps5->mid2 != (unsigned)(-1) || + ps5->d != ps1->d || ps5->e != ps1->e || ps5->post != (unsigned)(-1)) { + H5_FAILED(); + puts(" Memory values clobbered"); + goto error; + } + } + else { + if (ps5->pre != (unsigned)(-1) || ps5->a != (unsigned)(-1) || ps5->b != (unsigned)(-1) || + ps5->mid1 != (unsigned)(-1) || ps5->c[0] != (unsigned)(-1) || + ps5->c[1] != (unsigned)(-1) || ps5->c[2] != (unsigned)(-1) || + ps5->c[3] != (unsigned)(-1) || ps5->mid2 != (unsigned)(-1) || ps5->d != (unsigned)(-1) || + ps5->e != (unsigned)(-1) || ps5->post != (unsigned)(-1)) { + H5_FAILED(); + puts(" Incorrect values read from file"); + goto error; + } + } + } } PASSED(); @@ -775,89 +718,105 @@ test_compound (char *filename, hid_t fapl) TESTING("hyperslab part initialized write"); /* Create the memory array and initialize all fields to zero */ - f_offset[0] = NX/3; - f_offset[1] = NY/3; - h_size[0] = 2*NX/3 - f_offset[0]; - h_size[1] = 2*NY/3 - f_offset[1]; - s11 = (s4_t *) HDmalloc ((size_t)h_size[0]*(size_t)h_size[1]*sizeof(s4_t)); - assert (s11); + f_offset[0] = NX / 3; + f_offset[1] = NY / 3; + h_size[0] = 2 * NX / 3 - f_offset[0]; + h_size[1] = 2 * NY / 3 - f_offset[1]; + s11 = (s4_t *)HDmalloc((size_t)h_size[0] * (size_t)h_size[1] * sizeof(s4_t)); + assert(s11); /* Initialize */ - for (i=0; i<h_size[0]*h_size[1]; i++) { - s11[i].b = s11[i].d = (unsigned)(-1); + for (i = 0; i < h_size[0] * h_size[1]; i++) { + s11[i].b = s11[i].d = (unsigned)(-1); } /* Write to disk */ - if (H5Dwrite (dataset, s4_tid, s8_m_sid, s8_f_sid, PRESERVE, s11) < 0) { - goto error; + if (H5Dwrite(dataset, s4_tid, s8_m_sid, s8_f_sid, PRESERVE, s11) < 0) { + goto error; } - HDfree (s11); - s11=NULL; + HDfree(s11); + s11 = NULL; /* Read the whole thing */ - if (H5Dread (dataset, s1_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, s1) < 0) { - goto error; + if (H5Dread(dataset, s1_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, s1) < 0) { + goto error; } /* Compare */ - for (i=0; i<NX; i++) { - for (j=0; j<NY; j++) { - s1_t *ps1 = s1 + i*NY + j; - - if (ps1->a != 8*(i*NY+j)+0 || - ps1->c[0] != 8*(i*NY+j)+2 || - ps1->c[1] != 8*(i*NY+j)+3 || - ps1->c[2] != 8*(i*NY+j)+4 || - ps1->c[3] != 8*(i*NY+j)+5 || - ps1->e != 8*(i*NY+j)+7) { - H5_FAILED(); - puts(" Write clobbered values"); - goto error; - } - - if (i>=f_offset[0] && - i<f_offset[0]+h_size[0] && - j>=f_offset[1] && - j<f_offset[1]+h_size[1]) { - if (ps1->b != (unsigned)(-1) || - ps1->d != (unsigned)(-1)) { - H5_FAILED(); - puts(" Wrong values written or read"); - goto error; - } - } else { - if (ps1->b != 8*(i*NY+j)+1 || - ps1->d != 8*(i*NY+j)+6) { - H5_FAILED(); - puts(" Write clobbered values"); - goto error; - } - } - } + for (i = 0; i < NX; i++) { + for (j = 0; j < NY; j++) { + s1_t *ps1 = s1 + i * NY + j; + + if (ps1->a != 8 * (i * NY + j) + 0 || ps1->c[0] != 8 * (i * NY + j) + 2 || + ps1->c[1] != 8 * (i * NY + j) + 3 || ps1->c[2] != 8 * (i * NY + j) + 4 || + ps1->c[3] != 8 * (i * NY + j) + 5 || ps1->e != 8 * (i * NY + j) + 7) { + H5_FAILED(); + puts(" Write clobbered values"); + goto error; + } + + if (i >= f_offset[0] && i < f_offset[0] + h_size[0] && j >= f_offset[1] && + j < f_offset[1] + h_size[1]) { + if (ps1->b != (unsigned)(-1) || ps1->d != (unsigned)(-1)) { + H5_FAILED(); + puts(" Wrong values written or read"); + goto error; + } + } + else { + if (ps1->b != 8 * (i * NY + j) + 1 || ps1->d != 8 * (i * NY + j) + 6) { + H5_FAILED(); + puts(" Write clobbered values"); + goto error; + } + } + } } /* * Release resources. */ - H5Pclose (PRESERVE); - H5Dclose (dataset); - H5Fclose (file); + H5Pclose(PRESERVE); + H5Dclose(dataset); + H5Fclose(file); + + /* Release buffers */ + HDfree(s1); + HDfree(s2); + HDfree(s3); + HDfree(s4); + HDfree(s5); + HDfree(s6); PASSED(); return 0; error: puts("*** DATASET TESTS FAILED ***"); + + /* Release resources */ + if (s1) + HDfree(s1); + if (s2) + HDfree(s2); + if (s3) + HDfree(s3); + if (s4) + HDfree(s4); + if (s5) + HDfree(s5); + if (s6) + HDfree(s6); + return 1; } - /*------------------------------------------------------------------------- - * Function: initialize_stype1 + * Function: initialize_stype1 * - * Purpose: Initialize data buffer. + * Purpose: Initialize data buffer. * - * Return: void + * Return: void * * Programmer: Raymond Lu * Friday, 15 June 2007 @@ -866,41 +825,40 @@ error: *------------------------------------------------------------------------- */ static void -initialize_stype1(unsigned char *buf, const size_t num) +initialize_stype1(unsigned char *buf, size_t num) { - int i, j; + int i, j; stype1 *s_ptr; - for (i=0; i<(int)num; i++) { - s_ptr = (stype1*)buf + i; - s_ptr->a = i*8+0; - s_ptr->b = i*8+1; - for(j=0; j<8; j++) - s_ptr->c[j] = i*8+j; - s_ptr->d = i*8+6; - s_ptr->e = i*8+7; - - s_ptr->f = i*2/3; - s_ptr->g = i*2/3+1; - for(j=0; j<16; j++) - s_ptr->h[j] = i*j/5+j; - s_ptr->i = i*2/3+2; - s_ptr->j = i*2/3+3; - - s_ptr->k = i/7+1; - s_ptr->l = i/7+2; - s_ptr->m = i/7+3; - s_ptr->n = i/7+4; + for (i = 0; i < (int)num; i++) { + s_ptr = (stype1 *)((void *)buf) + i; + s_ptr->a = i * 8 + 0; + s_ptr->b = i * 8 + 1; + for (j = 0; j < 8; j++) + s_ptr->c[j] = i * 8 + j; + s_ptr->d = i * 8 + 6; + s_ptr->e = i * 8 + 7; + + s_ptr->f = (float)(i * 2 / 3); + s_ptr->g = (float)(i * 2 / 3 + 1); + for (j = 0; j < 16; j++) + s_ptr->h[j] = (float)(i * j / 5 + j); + s_ptr->i = (float)(i * 2 / 3 + 2); + s_ptr->j = (float)(i * 2 / 3 + 3); + + s_ptr->k = i / 7 + 1; + s_ptr->l = i / 7 + 2; + s_ptr->m = i / 7 + 3; + s_ptr->n = i / 7 + 4; } } - /*------------------------------------------------------------------------- - * Function: initialize_stype2 + * Function: initialize_stype2 * - * Purpose: Initialize data buffer. + * Purpose: Initialize data buffer. * - * Return: void + * Return: void * * Programmer: Raymond Lu * Friday, 15 June 2007 @@ -909,45 +867,44 @@ initialize_stype1(unsigned char *buf, const size_t num) *------------------------------------------------------------------------- */ static void -initialize_stype2(unsigned char *buf, const size_t num) +initialize_stype2(unsigned char *buf, size_t num) { - size_t i, j; + size_t i, j; stype2 *s_ptr; - for (i=0; i<num; i++) { - s_ptr = (stype2*)buf + i; - s_ptr->a = i*8+0; - s_ptr->b = i*8+1; - for(j=0; j<8; j++) - s_ptr->c[j] = i*8+j; - s_ptr->d = i*8+6; - s_ptr->e = i*8+7; - - s_ptr->f = i*2/3; - s_ptr->g = i*2/3+1; - for(j=0; j<16; j++) - s_ptr->h[j] = i*j/5+j; - s_ptr->i = i*2/3+2; - s_ptr->j = i*2/3+3; - - s_ptr->k = i/7+1; - s_ptr->l = i/7+2; - s_ptr->m = i/7+3; - s_ptr->n = i/7+4; - - s_ptr->o = i*3+0; - s_ptr->p = i*3+1; - s_ptr->q = i*3+2; + for (i = 0; i < num; i++) { + s_ptr = (stype2 *)((void *)buf) + i; + s_ptr->a = (int)(i * 8 + 0); + s_ptr->b = (int)(i * 8 + 1); + for (j = 0; j < 8; j++) + s_ptr->c[j] = (int)(i * 8 + j); + s_ptr->d = (int)(i * 8 + 6); + s_ptr->e = (int)(i * 8 + 7); + + s_ptr->f = (float)(i * 2 / 3); + s_ptr->g = (float)(i * 2 / 3 + 1); + for (j = 0; j < 16; j++) + s_ptr->h[j] = (float)(i * j / 5 + j); + s_ptr->i = (float)(i * 2 / 3 + 2); + s_ptr->j = (float)(i * 2 / 3 + 3); + + s_ptr->k = (double)(i / 7 + 1); + s_ptr->l = (double)(i / 7 + 2); + s_ptr->m = (double)(i / 7 + 3); + s_ptr->n = (double)(i / 7 + 4); + + s_ptr->o = (long)(i * 3 + 0); + s_ptr->p = (long)(i * 3 + 1); + s_ptr->q = (long)(i * 3 + 2); } } - /*------------------------------------------------------------------------- - * Function: initialize_stype3 + * Function: initialize_stype3 * - * Purpose: Initialize data buffer. + * Purpose: Initialize data buffer. * - * Return: Success: + * Return: Success: * * Programmer: Raymond Lu * Friday, 15 June 2007 @@ -956,29 +913,28 @@ initialize_stype2(unsigned char *buf, const size_t num) *------------------------------------------------------------------------- */ static void -initialize_stype3(unsigned char *buf, const size_t num) +initialize_stype3(unsigned char *buf, size_t num) { - int i, j; + int i, j; stype3 *s_ptr; - for (i=0; i<(int)num; i++) { - s_ptr = (stype3*)buf + i; - s_ptr->a = i*8+0; - s_ptr->b = i*8+1; - for(j=0; j<8; j++) - s_ptr->c[j] = i*8+j; - s_ptr->d = i*8+6; - s_ptr->e = i*8+7; + for (i = 0; i < (int)num; i++) { + s_ptr = (stype3 *)((void *)buf) + i; + s_ptr->a = i * 8 + 0; + s_ptr->b = i * 8 + 1; + for (j = 0; j < 8; j++) + s_ptr->c[j] = i * 8 + j; + s_ptr->d = i * 8 + 6; + s_ptr->e = i * 8 + 7; } } - /*------------------------------------------------------------------------- - * Function: initialize_stype4 + * Function: initialize_stype4 * - * Purpose: Initialize data buffer. + * Purpose: Initialize data buffer. * - * Return: void + * Return: void * * Programmer: Raymond Lu * Friday, 15 June 2007 @@ -987,49 +943,48 @@ initialize_stype3(unsigned char *buf, const size_t num) *------------------------------------------------------------------------- */ static void -initialize_stype4(unsigned char *buf, const size_t num) +initialize_stype4(unsigned char *buf, size_t num) { - size_t i, j; + size_t i, j; stype4 *s_ptr; - for (i=0; i<num; i++) { - s_ptr = (stype4*)buf + i; - s_ptr->a = i*8+0; - s_ptr->b = i*8+1; - for(j=0; j<8; j++) - s_ptr->c[j] = i*8+j; - s_ptr->d = i*8+6; - s_ptr->e = i*8+7; - - s_ptr->f = i*2/3; - s_ptr->g = i*2/3+1; - for(j=0; j<16; j++) - s_ptr->h[j] = i*j/5+j; - s_ptr->i = i*2/3+2; - s_ptr->j = i*2/3+3; - - s_ptr->k = i/7+1; - s_ptr->l = i/7+2; - s_ptr->m = i/7+3; - s_ptr->n = i/7+4; - - s_ptr->o = i*3+0; - s_ptr->p = i*3+1; - s_ptr->q = i*3+2; - - s_ptr->r = i*5+1; - s_ptr->s = i*5+2; - s_ptr->t = i*5+3; + for (i = 0; i < num; i++) { + s_ptr = (stype4 *)((void *)buf) + i; + s_ptr->a = (int)(i * 8 + 0); + s_ptr->b = (int)(i * 8 + 1); + for (j = 0; j < 8; j++) + s_ptr->c[j] = (int)(i * 8 + j); + s_ptr->d = (int)(i * 8 + 6); + s_ptr->e = (int)(i * 8 + 7); + + s_ptr->f = (float)(i * 2 / 3); + s_ptr->g = (float)(i * 2 / 3 + 1); + for (j = 0; j < 16; j++) + s_ptr->h[j] = (float)(i * j / 5 + j); + s_ptr->i = (float)(i * 2 / 3 + 2); + s_ptr->j = (float)(i * 2 / 3 + 3); + + s_ptr->k = (double)(i / 7 + 1); + s_ptr->l = (double)(i / 7 + 2); + s_ptr->m = (double)(i / 7 + 3); + s_ptr->n = (double)(i / 7 + 4); + + s_ptr->o = (long)(i * 3 + 0); + s_ptr->p = (long)(i * 3 + 1); + s_ptr->q = (long)(i * 3 + 2); + + s_ptr->r = (long long)(i * 5 + 1); + s_ptr->s = (long long)(i * 5 + 2); + s_ptr->t = (long long)(i * 5 + 3); } } - /*------------------------------------------------------------------------- - * Function: create_stype1 + * Function: create_stype1 * - * Purpose: Create HDF5 compound datatype for stype1. + * Purpose: Create HDF5 compound datatype for stype1. * - * Return: Success: datatype ID + * Return: Success: datatype ID * * Failure: negative * @@ -1042,35 +997,35 @@ initialize_stype4(unsigned char *buf, const size_t num) static hid_t create_stype1(void) { - hid_t array_dt1, array_dt2, tid; - const hsize_t eight = 8, sixteen = 16; + hid_t array_dt1, array_dt2, tid; + const hsize_t eight = 8, sixteen = 16; /* Build hdf5 datatypes */ - if((array_dt1 = H5Tarray_create2(H5T_NATIVE_INT,1, &eight)) < 0) + if ((array_dt1 = H5Tarray_create2(H5T_NATIVE_INT, 1, &eight)) < 0) goto error; - if((array_dt2 = H5Tarray_create2(H5T_NATIVE_FLOAT,1, &sixteen)) < 0) + if ((array_dt2 = H5Tarray_create2(H5T_NATIVE_FLOAT, 1, &sixteen)) < 0) goto error; - if((tid = H5Tcreate(H5T_COMPOUND, sizeof(stype1))) < 0 || - H5Tinsert(tid, "a", HOFFSET(stype1, a), H5T_NATIVE_INT) < 0 || - H5Tinsert(tid, "b", HOFFSET(stype1, b), H5T_NATIVE_INT) < 0 || - H5Tinsert(tid, "c", HOFFSET(stype1, c), array_dt1) < 0 || - H5Tinsert(tid, "d", HOFFSET(stype1, d), H5T_NATIVE_INT) < 0 || - H5Tinsert(tid, "e", HOFFSET(stype1, e), H5T_NATIVE_INT) < 0 || - H5Tinsert(tid, "f", HOFFSET(stype1, f), H5T_NATIVE_FLOAT) < 0 || - H5Tinsert(tid, "g", HOFFSET(stype1, g), H5T_NATIVE_FLOAT) < 0 || - H5Tinsert(tid, "h", HOFFSET(stype1, h), array_dt2) < 0 || - H5Tinsert(tid, "i", HOFFSET(stype1, i), H5T_NATIVE_FLOAT) < 0 || - H5Tinsert(tid, "j", HOFFSET(stype1, j), H5T_NATIVE_FLOAT) < 0 || - H5Tinsert(tid, "k", HOFFSET(stype1, k), H5T_NATIVE_DOUBLE) < 0 || - H5Tinsert(tid, "l", HOFFSET(stype1, l), H5T_NATIVE_DOUBLE) < 0 || - H5Tinsert(tid, "m", HOFFSET(stype1, m), H5T_NATIVE_DOUBLE) < 0 || - H5Tinsert(tid, "n", HOFFSET(stype1, n), H5T_NATIVE_DOUBLE) < 0) + if ((tid = H5Tcreate(H5T_COMPOUND, sizeof(stype1))) < 0 || + H5Tinsert(tid, "a", HOFFSET(stype1, a), H5T_NATIVE_INT) < 0 || + H5Tinsert(tid, "b", HOFFSET(stype1, b), H5T_NATIVE_INT) < 0 || + H5Tinsert(tid, "c", HOFFSET(stype1, c), array_dt1) < 0 || + H5Tinsert(tid, "d", HOFFSET(stype1, d), H5T_NATIVE_INT) < 0 || + H5Tinsert(tid, "e", HOFFSET(stype1, e), H5T_NATIVE_INT) < 0 || + H5Tinsert(tid, "f", HOFFSET(stype1, f), H5T_NATIVE_FLOAT) < 0 || + H5Tinsert(tid, "g", HOFFSET(stype1, g), H5T_NATIVE_FLOAT) < 0 || + H5Tinsert(tid, "h", HOFFSET(stype1, h), array_dt2) < 0 || + H5Tinsert(tid, "i", HOFFSET(stype1, i), H5T_NATIVE_FLOAT) < 0 || + H5Tinsert(tid, "j", HOFFSET(stype1, j), H5T_NATIVE_FLOAT) < 0 || + H5Tinsert(tid, "k", HOFFSET(stype1, k), H5T_NATIVE_DOUBLE) < 0 || + H5Tinsert(tid, "l", HOFFSET(stype1, l), H5T_NATIVE_DOUBLE) < 0 || + H5Tinsert(tid, "m", HOFFSET(stype1, m), H5T_NATIVE_DOUBLE) < 0 || + H5Tinsert(tid, "n", HOFFSET(stype1, n), H5T_NATIVE_DOUBLE) < 0) goto error; - if(H5Tclose(array_dt1) < 0) + if (H5Tclose(array_dt1) < 0) goto error; - if(H5Tclose(array_dt2) < 0) + if (H5Tclose(array_dt2) < 0) goto error; return tid; @@ -1079,13 +1034,12 @@ error: return FAIL; } - /*------------------------------------------------------------------------- - * Function: create_stype2 + * Function: create_stype2 * - * Purpose: Create HDF5 compound datatype for stype2. + * Purpose: Create HDF5 compound datatype for stype2. * - * Return: Success: datatype ID + * Return: Success: datatype ID * * Failure: negative * @@ -1098,38 +1052,38 @@ error: static hid_t create_stype2(void) { - hid_t array_dt1, array_dt2, tid; - const hsize_t eight = 8, sixteen = 16; + hid_t array_dt1, array_dt2, tid; + const hsize_t eight = 8, sixteen = 16; /* Build hdf5 datatypes */ - if((array_dt1 = H5Tarray_create2(H5T_NATIVE_INT,1, &eight)) < 0) + if ((array_dt1 = H5Tarray_create2(H5T_NATIVE_INT, 1, &eight)) < 0) goto error; - if((array_dt2 = H5Tarray_create2(H5T_NATIVE_FLOAT,1, &sixteen)) < 0) + if ((array_dt2 = H5Tarray_create2(H5T_NATIVE_FLOAT, 1, &sixteen)) < 0) goto error; - if((tid = H5Tcreate(H5T_COMPOUND, sizeof(stype2))) < 0 || - H5Tinsert(tid, "a", HOFFSET(stype2, a), H5T_NATIVE_INT) < 0 || - H5Tinsert(tid, "b", HOFFSET(stype2, b), H5T_NATIVE_INT) < 0 || - H5Tinsert(tid, "c", HOFFSET(stype2, c), array_dt1) < 0 || - H5Tinsert(tid, "d", HOFFSET(stype2, d), H5T_NATIVE_INT) < 0 || - H5Tinsert(tid, "e", HOFFSET(stype2, e), H5T_NATIVE_INT) < 0 || - H5Tinsert(tid, "f", HOFFSET(stype2, f), H5T_NATIVE_FLOAT) < 0 || - H5Tinsert(tid, "g", HOFFSET(stype2, g), H5T_NATIVE_FLOAT) < 0 || - H5Tinsert(tid, "h", HOFFSET(stype2, h), array_dt2) < 0 || - H5Tinsert(tid, "i", HOFFSET(stype2, i), H5T_NATIVE_FLOAT) < 0 || - H5Tinsert(tid, "j", HOFFSET(stype2, j), H5T_NATIVE_FLOAT) < 0 || - H5Tinsert(tid, "k", HOFFSET(stype2, k), H5T_NATIVE_DOUBLE) < 0 || - H5Tinsert(tid, "l", HOFFSET(stype2, l), H5T_NATIVE_DOUBLE) < 0 || - H5Tinsert(tid, "m", HOFFSET(stype2, m), H5T_NATIVE_DOUBLE) < 0 || - H5Tinsert(tid, "n", HOFFSET(stype2, n), H5T_NATIVE_DOUBLE) < 0 || - H5Tinsert(tid, "o", HOFFSET(stype2, o), H5T_NATIVE_LONG) < 0 || - H5Tinsert(tid, "p", HOFFSET(stype2, p), H5T_NATIVE_LONG) < 0 || - H5Tinsert(tid, "q", HOFFSET(stype2, q), H5T_NATIVE_LONG) < 0) + if ((tid = H5Tcreate(H5T_COMPOUND, sizeof(stype2))) < 0 || + H5Tinsert(tid, "a", HOFFSET(stype2, a), H5T_NATIVE_INT) < 0 || + H5Tinsert(tid, "b", HOFFSET(stype2, b), H5T_NATIVE_INT) < 0 || + H5Tinsert(tid, "c", HOFFSET(stype2, c), array_dt1) < 0 || + H5Tinsert(tid, "d", HOFFSET(stype2, d), H5T_NATIVE_INT) < 0 || + H5Tinsert(tid, "e", HOFFSET(stype2, e), H5T_NATIVE_INT) < 0 || + H5Tinsert(tid, "f", HOFFSET(stype2, f), H5T_NATIVE_FLOAT) < 0 || + H5Tinsert(tid, "g", HOFFSET(stype2, g), H5T_NATIVE_FLOAT) < 0 || + H5Tinsert(tid, "h", HOFFSET(stype2, h), array_dt2) < 0 || + H5Tinsert(tid, "i", HOFFSET(stype2, i), H5T_NATIVE_FLOAT) < 0 || + H5Tinsert(tid, "j", HOFFSET(stype2, j), H5T_NATIVE_FLOAT) < 0 || + H5Tinsert(tid, "k", HOFFSET(stype2, k), H5T_NATIVE_DOUBLE) < 0 || + H5Tinsert(tid, "l", HOFFSET(stype2, l), H5T_NATIVE_DOUBLE) < 0 || + H5Tinsert(tid, "m", HOFFSET(stype2, m), H5T_NATIVE_DOUBLE) < 0 || + H5Tinsert(tid, "n", HOFFSET(stype2, n), H5T_NATIVE_DOUBLE) < 0 || + H5Tinsert(tid, "o", HOFFSET(stype2, o), H5T_NATIVE_LONG) < 0 || + H5Tinsert(tid, "p", HOFFSET(stype2, p), H5T_NATIVE_LONG) < 0 || + H5Tinsert(tid, "q", HOFFSET(stype2, q), H5T_NATIVE_LONG) < 0) goto error; - if(H5Tclose(array_dt1) < 0) + if (H5Tclose(array_dt1) < 0) goto error; - if(H5Tclose(array_dt2) < 0) + if (H5Tclose(array_dt2) < 0) goto error; return tid; @@ -1138,13 +1092,12 @@ error: return FAIL; } - /*------------------------------------------------------------------------- - * Function: create_stype3 + * Function: create_stype3 * - * Purpose: Create HDF5 compound datatype for stype3. + * Purpose: Create HDF5 compound datatype for stype3. * - * Return: Success: datatype ID + * Return: Success: datatype ID * * Failure: negative * @@ -1157,22 +1110,22 @@ error: static hid_t create_stype3(void) { - hid_t array_dt1, tid; - const hsize_t eight = 8; + hid_t array_dt1, tid; + const hsize_t eight = 8; /* Build hdf5 datatypes */ - if((array_dt1 = H5Tarray_create2(H5T_NATIVE_INT,1, &eight)) < 0) + if ((array_dt1 = H5Tarray_create2(H5T_NATIVE_INT, 1, &eight)) < 0) goto error; - if((tid = H5Tcreate(H5T_COMPOUND, sizeof(stype3))) < 0 || - H5Tinsert(tid, "a", HOFFSET(stype3, a), H5T_NATIVE_INT) < 0 || - H5Tinsert(tid, "b", HOFFSET(stype3, b), H5T_NATIVE_INT) < 0 || - H5Tinsert(tid, "c", HOFFSET(stype3, c), array_dt1) < 0 || - H5Tinsert(tid, "d", HOFFSET(stype3, d), H5T_NATIVE_INT) < 0 || - H5Tinsert(tid, "e", HOFFSET(stype3, e), H5T_NATIVE_INT) < 0) + if ((tid = H5Tcreate(H5T_COMPOUND, sizeof(stype3))) < 0 || + H5Tinsert(tid, "a", HOFFSET(stype3, a), H5T_NATIVE_INT) < 0 || + H5Tinsert(tid, "b", HOFFSET(stype3, b), H5T_NATIVE_INT) < 0 || + H5Tinsert(tid, "c", HOFFSET(stype3, c), array_dt1) < 0 || + H5Tinsert(tid, "d", HOFFSET(stype3, d), H5T_NATIVE_INT) < 0 || + H5Tinsert(tid, "e", HOFFSET(stype3, e), H5T_NATIVE_INT) < 0) goto error; - if(H5Tclose(array_dt1) < 0) + if (H5Tclose(array_dt1) < 0) goto error; return tid; @@ -1181,13 +1134,12 @@ error: return FAIL; } - /*------------------------------------------------------------------------- - * Function: create_stype4 + * Function: create_stype4 * - * Purpose: Create HDF5 compound datatype for stype4. + * Purpose: Create HDF5 compound datatype for stype4. * - * Return: Success: datatype ID + * Return: Success: datatype ID * * Failure: negative * @@ -1200,41 +1152,41 @@ error: static hid_t create_stype4(void) { - hid_t array_dt1, array_dt2, tid; - const hsize_t eight = 8, sixteen = 16; + hid_t array_dt1, array_dt2, tid; + const hsize_t eight = 8, sixteen = 16; /* Build hdf5 datatypes */ - if((array_dt1 = H5Tarray_create2(H5T_NATIVE_INT,1, &eight)) < 0) + if ((array_dt1 = H5Tarray_create2(H5T_NATIVE_INT, 1, &eight)) < 0) goto error; - if((array_dt2 = H5Tarray_create2(H5T_NATIVE_FLOAT,1, &sixteen)) < 0) + if ((array_dt2 = H5Tarray_create2(H5T_NATIVE_FLOAT, 1, &sixteen)) < 0) goto error; - if((tid = H5Tcreate(H5T_COMPOUND, sizeof(stype4))) < 0 || - H5Tinsert(tid, "a", HOFFSET(stype4, a), H5T_NATIVE_INT) < 0 || - H5Tinsert(tid, "b", HOFFSET(stype4, b), H5T_NATIVE_INT) < 0 || - H5Tinsert(tid, "c", HOFFSET(stype4, c), array_dt1) < 0 || - H5Tinsert(tid, "d", HOFFSET(stype4, d), H5T_NATIVE_INT) < 0 || - H5Tinsert(tid, "e", HOFFSET(stype4, e), H5T_NATIVE_INT) < 0 || - H5Tinsert(tid, "f", HOFFSET(stype4, f), H5T_NATIVE_FLOAT) < 0 || - H5Tinsert(tid, "g", HOFFSET(stype4, g), H5T_NATIVE_FLOAT) < 0 || - H5Tinsert(tid, "h", HOFFSET(stype4, h), array_dt2) < 0 || - H5Tinsert(tid, "i", HOFFSET(stype4, i), H5T_NATIVE_FLOAT) < 0 || - H5Tinsert(tid, "j", HOFFSET(stype4, j), H5T_NATIVE_FLOAT) < 0 || - H5Tinsert(tid, "k", HOFFSET(stype4, k), H5T_NATIVE_DOUBLE) < 0 || - H5Tinsert(tid, "l", HOFFSET(stype4, l), H5T_NATIVE_DOUBLE) < 0 || - H5Tinsert(tid, "m", HOFFSET(stype4, m), H5T_NATIVE_DOUBLE) < 0 || - H5Tinsert(tid, "n", HOFFSET(stype4, n), H5T_NATIVE_DOUBLE) < 0 || - H5Tinsert(tid, "o", HOFFSET(stype4, o), H5T_NATIVE_LONG) < 0 || - H5Tinsert(tid, "p", HOFFSET(stype4, p), H5T_NATIVE_LONG) < 0 || - H5Tinsert(tid, "q", HOFFSET(stype4, q), H5T_NATIVE_LONG) < 0 || - H5Tinsert(tid, "r", HOFFSET(stype4, r), H5T_NATIVE_LLONG) < 0 || - H5Tinsert(tid, "s", HOFFSET(stype4, s), H5T_NATIVE_LLONG) < 0 || - H5Tinsert(tid, "t", HOFFSET(stype4, t), H5T_NATIVE_LLONG) < 0) + if ((tid = H5Tcreate(H5T_COMPOUND, sizeof(stype4))) < 0 || + H5Tinsert(tid, "a", HOFFSET(stype4, a), H5T_NATIVE_INT) < 0 || + H5Tinsert(tid, "b", HOFFSET(stype4, b), H5T_NATIVE_INT) < 0 || + H5Tinsert(tid, "c", HOFFSET(stype4, c), array_dt1) < 0 || + H5Tinsert(tid, "d", HOFFSET(stype4, d), H5T_NATIVE_INT) < 0 || + H5Tinsert(tid, "e", HOFFSET(stype4, e), H5T_NATIVE_INT) < 0 || + H5Tinsert(tid, "f", HOFFSET(stype4, f), H5T_NATIVE_FLOAT) < 0 || + H5Tinsert(tid, "g", HOFFSET(stype4, g), H5T_NATIVE_FLOAT) < 0 || + H5Tinsert(tid, "h", HOFFSET(stype4, h), array_dt2) < 0 || + H5Tinsert(tid, "i", HOFFSET(stype4, i), H5T_NATIVE_FLOAT) < 0 || + H5Tinsert(tid, "j", HOFFSET(stype4, j), H5T_NATIVE_FLOAT) < 0 || + H5Tinsert(tid, "k", HOFFSET(stype4, k), H5T_NATIVE_DOUBLE) < 0 || + H5Tinsert(tid, "l", HOFFSET(stype4, l), H5T_NATIVE_DOUBLE) < 0 || + H5Tinsert(tid, "m", HOFFSET(stype4, m), H5T_NATIVE_DOUBLE) < 0 || + H5Tinsert(tid, "n", HOFFSET(stype4, n), H5T_NATIVE_DOUBLE) < 0 || + H5Tinsert(tid, "o", HOFFSET(stype4, o), H5T_NATIVE_LONG) < 0 || + H5Tinsert(tid, "p", HOFFSET(stype4, p), H5T_NATIVE_LONG) < 0 || + H5Tinsert(tid, "q", HOFFSET(stype4, q), H5T_NATIVE_LONG) < 0 || + H5Tinsert(tid, "r", HOFFSET(stype4, r), H5T_NATIVE_LLONG) < 0 || + H5Tinsert(tid, "s", HOFFSET(stype4, s), H5T_NATIVE_LLONG) < 0 || + H5Tinsert(tid, "t", HOFFSET(stype4, t), H5T_NATIVE_LLONG) < 0) goto error; - if(H5Tclose(array_dt1) < 0) + if (H5Tclose(array_dt1) < 0) goto error; - if(H5Tclose(array_dt2) < 0) + if (H5Tclose(array_dt2) < 0) goto error; return tid; @@ -1243,13 +1195,12 @@ error: return FAIL; } - /*------------------------------------------------------------------------- - * Function: compare_data + * Function: compare_data * - * Purpose: Compare data of stype1 and stype2. + * Purpose: Compare data of stype1 and stype2. * - * Return: Success: 0 + * Return: Success: 0 * * Failure: negative * @@ -1262,57 +1213,53 @@ error: static int compare_data(void *src_data, void *dst_data, hbool_t src_subset) { - stype1 *s_ptr; - stype2 *d_ptr; + stype1 *s_ptr; + stype2 *d_ptr; int i; - for(i = 0; i < (int)(NX * NY); i++) { - if(src_subset) { - s_ptr = ((stype1 *)src_data) + i; - d_ptr = ((stype2 *)dst_data) + i; - } else { - s_ptr = (stype1 *)(((stype2 *)src_data) + i); - d_ptr = (stype2 *)(((stype1 *)dst_data) + i); + for (i = 0; i < (int)(NX * NY); i++) { + if (src_subset) { + s_ptr = ((stype1 *)src_data) + i; + d_ptr = ((stype2 *)dst_data) + i; + } + else { + s_ptr = (stype1 *)(((stype2 *)src_data) + i); + d_ptr = (stype2 *)(((stype1 *)dst_data) + i); } - if (s_ptr->a != d_ptr->a || - s_ptr->b != d_ptr->b || - s_ptr->c[0] != d_ptr->c[0] || - s_ptr->c[1] != d_ptr->c[1] || - s_ptr->c[2] != d_ptr->c[2] || - s_ptr->c[3] != d_ptr->c[3] || - s_ptr->d != d_ptr->d || - s_ptr->e != d_ptr->e || - !FLT_ABS_EQUAL(s_ptr->f, d_ptr->f) || - !FLT_ABS_EQUAL(s_ptr->g, d_ptr->g) || - !FLT_ABS_EQUAL(s_ptr->h[0], d_ptr->h[0]) || - !FLT_ABS_EQUAL(s_ptr->h[1], d_ptr->h[1]) || - !FLT_ABS_EQUAL(s_ptr->i, d_ptr->i) || - !FLT_ABS_EQUAL(s_ptr->j, d_ptr->j) || - !DBL_ABS_EQUAL(s_ptr->k, d_ptr->k) || - !DBL_ABS_EQUAL(s_ptr->l, d_ptr->l) || - !DBL_ABS_EQUAL(s_ptr->m, d_ptr->m) || - !DBL_ABS_EQUAL(s_ptr->n, d_ptr->n) ) { - - H5_FAILED(); - printf(" i=%d\n", i); - printf(" src={a=%d, b=%d, c=[%d,%d,%d,%d,%d,%d,%d,%d], d=%d, e=%d, f=%f, g=%f, h=[%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f], i=%f, j=%f, k=%f, l=%f, m=%f, n=%f}\n", - s_ptr->a, s_ptr->b, s_ptr->c[0], s_ptr->c[1], s_ptr->c[2], - s_ptr->c[3], s_ptr->c[4], s_ptr->c[5], s_ptr->c[6], s_ptr->c[7], - s_ptr->d, s_ptr->e, s_ptr->f, s_ptr->g,s_ptr->h[0],s_ptr->h[1],s_ptr->h[2], - s_ptr->h[3],s_ptr->h[4],s_ptr->h[5],s_ptr->h[6],s_ptr->h[7],s_ptr->h[8], - s_ptr->h[9],s_ptr->h[10],s_ptr->h[11],s_ptr->h[12],s_ptr->h[13],s_ptr->h[14], - s_ptr->h[15], s_ptr->i,s_ptr->j,s_ptr->k,s_ptr->l,s_ptr->m,s_ptr->n); - printf(" dst={a=%d, b=%d, c=[%d,%d,%d,%d,%d,%d,%d,%d], d=%d, e=%d, f=%f, g=%f, h=[%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f], i=%f, j=%f, k=%f, l=%f, m=%f, n=%f}\n", - d_ptr->a, d_ptr->b, d_ptr->c[0], d_ptr->c[1], d_ptr->c[2], - d_ptr->c[3], d_ptr->c[4], d_ptr->c[5], d_ptr->c[6], d_ptr->c[7], - d_ptr->d, d_ptr->e, d_ptr->f, d_ptr->g,d_ptr->h[0],d_ptr->h[1],d_ptr->h[2], - d_ptr->h[3],d_ptr->h[4],d_ptr->h[5],d_ptr->h[6],d_ptr->h[7],d_ptr->h[8], - d_ptr->h[9],d_ptr->h[10],d_ptr->h[11],d_ptr->h[12],d_ptr->h[13], - d_ptr->h[14], d_ptr->h[15], d_ptr->i,d_ptr->j,d_ptr->k,d_ptr->l, - d_ptr->m,d_ptr->n); - goto error; - } + if (s_ptr->a != d_ptr->a || s_ptr->b != d_ptr->b || s_ptr->c[0] != d_ptr->c[0] || + s_ptr->c[1] != d_ptr->c[1] || s_ptr->c[2] != d_ptr->c[2] || s_ptr->c[3] != d_ptr->c[3] || + s_ptr->d != d_ptr->d || s_ptr->e != d_ptr->e || !H5_FLT_ABS_EQUAL(s_ptr->f, d_ptr->f) || + !H5_FLT_ABS_EQUAL(s_ptr->g, d_ptr->g) || !H5_FLT_ABS_EQUAL(s_ptr->h[0], d_ptr->h[0]) || + !H5_FLT_ABS_EQUAL(s_ptr->h[1], d_ptr->h[1]) || !H5_FLT_ABS_EQUAL(s_ptr->i, d_ptr->i) || + !H5_FLT_ABS_EQUAL(s_ptr->j, d_ptr->j) || !H5_DBL_ABS_EQUAL(s_ptr->k, d_ptr->k) || + !H5_DBL_ABS_EQUAL(s_ptr->l, d_ptr->l) || !H5_DBL_ABS_EQUAL(s_ptr->m, d_ptr->m) || + !H5_DBL_ABS_EQUAL(s_ptr->n, d_ptr->n)) { + + H5_FAILED(); + HDprintf(" i=%d\n", i); + HDprintf( + " src={a=%d, b=%d, c=[%d,%d,%d,%d,%d,%d,%d,%d], d=%d, e=%d, f=%f, g=%f, " + "h=[%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f], i=%f, j=%f, k=%f, l=%f, m=%f, n=%f}\n", + s_ptr->a, s_ptr->b, s_ptr->c[0], s_ptr->c[1], s_ptr->c[2], s_ptr->c[3], s_ptr->c[4], + s_ptr->c[5], s_ptr->c[6], s_ptr->c[7], s_ptr->d, s_ptr->e, (double)s_ptr->f, (double)s_ptr->g, + (double)s_ptr->h[0], (double)s_ptr->h[1], (double)s_ptr->h[2], (double)s_ptr->h[3], + (double)s_ptr->h[4], (double)s_ptr->h[5], (double)s_ptr->h[6], (double)s_ptr->h[7], + (double)s_ptr->h[8], (double)s_ptr->h[9], (double)s_ptr->h[10], (double)s_ptr->h[11], + (double)s_ptr->h[12], (double)s_ptr->h[13], (double)s_ptr->h[14], (double)s_ptr->h[15], + (double)s_ptr->i, (double)s_ptr->j, s_ptr->k, s_ptr->l, s_ptr->m, s_ptr->n); + HDprintf( + " dst={a=%d, b=%d, c=[%d,%d,%d,%d,%d,%d,%d,%d], d=%d, e=%d, f=%f, g=%f, " + "h=[%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f], i=%f, j=%f, k=%f, l=%f, m=%f, n=%f}\n", + d_ptr->a, d_ptr->b, d_ptr->c[0], d_ptr->c[1], d_ptr->c[2], d_ptr->c[3], d_ptr->c[4], + d_ptr->c[5], d_ptr->c[6], d_ptr->c[7], d_ptr->d, d_ptr->e, (double)d_ptr->f, (double)d_ptr->g, + (double)d_ptr->h[0], (double)d_ptr->h[1], (double)d_ptr->h[2], (double)d_ptr->h[3], + (double)d_ptr->h[4], (double)d_ptr->h[5], (double)d_ptr->h[6], (double)d_ptr->h[7], + (double)d_ptr->h[8], (double)d_ptr->h[9], (double)d_ptr->h[10], (double)d_ptr->h[11], + (double)d_ptr->h[12], (double)d_ptr->h[13], (double)d_ptr->h[14], (double)d_ptr->h[15], + (double)d_ptr->i, (double)d_ptr->j, d_ptr->k, d_ptr->l, d_ptr->m, d_ptr->n); + goto error; + } } return SUCCEED; @@ -1321,11 +1268,10 @@ error: return FAIL; } - /*------------------------------------------------------------------------- - * Function: test_hdf5_src_subset + * Function: test_hdf5_src_subset * - * Purpose: Test the optimization of compound data writing, rewriting, + * Purpose: Test the optimization of compound data writing, rewriting, * and reading when the source type is a subset of destination * type. For example: * struct source { struct destination { @@ -1337,58 +1283,57 @@ error: * }; * This optimization is for the Chicago company. * - * Return: Success: 0 + * Return: Success: 0 * - * Failure: 1 + * Failure: 1 * - * Programmer: Raymond Lu + * Programmer: Raymond Lu * Friday, 15 June 2007 * * Modifications: *------------------------------------------------------------------------- */ -static int +static unsigned test_hdf5_src_subset(char *filename, hid_t fapl) { - hid_t file; - hid_t rew_tid, src_tid, dst_tid; - hid_t dataset; - hid_t space; - hid_t dcpl, dxpl; - hsize_t dims[2] = {NX, NY}; - hsize_t chunk_dims[2] = {NX/10, NY/10}; - unsigned char *orig=NULL, *rew_buf=NULL, *rbuf=NULL; + hid_t file; + hid_t rew_tid, src_tid, dst_tid; + hid_t dataset; + hid_t space; + hid_t dcpl, dxpl; + hsize_t dims[2] = {NX, NY}; + hsize_t chunk_dims[2] = {NX / 10, NY / 10}; + unsigned char *orig = NULL, *rew_buf = NULL, *rbuf = NULL; /* Create the file for this test */ - if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) - goto error; + if ((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) + goto error; /* Build hdf5 datatypes */ - if ((src_tid=create_stype1()) < 0) + if ((src_tid = create_stype1()) < 0) goto error; - if ((dst_tid=create_stype2()) < 0) + if ((dst_tid = create_stype2()) < 0) goto error; - if ((rew_tid=create_stype3()) < 0) + if ((rew_tid = create_stype3()) < 0) goto error; /* Create the data space */ - if((space = H5Screate_simple(2, dims, NULL)) < 0) - goto error; + if ((space = H5Screate_simple(2, dims, NULL)) < 0) + goto error; /* Allocate space and initialize data */ - orig = (unsigned char*)HDmalloc(NX * NY * sizeof(stype1)); - initialize_stype1(orig, (size_t)NX*NY); - - rbuf = (unsigned char*)HDmalloc(NX * NY * sizeof(stype2)); + orig = (unsigned char *)HDmalloc(NX * NY * sizeof(stype1)); + initialize_stype1(orig, (size_t)NX * NY); - rew_buf = (unsigned char*)HDmalloc(NX * NY * sizeof(stype3)); - initialize_stype3(rew_buf, (size_t)NX*NY); + rbuf = (unsigned char *)HDmalloc(NX * NY * sizeof(stype2)); + rew_buf = (unsigned char *)HDmalloc(NX * NY * sizeof(stype3)); + initialize_stype3(rew_buf, (size_t)NX * NY); /* Create dataset creation property list */ - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) + if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) goto error; /* @@ -1398,29 +1343,29 @@ test_hdf5_src_subset(char *filename, hid_t fapl) TESTING("writing data to contiguous and chunked datasets"); /* Create contiguous data set */ - if((dataset = H5Dcreate2(file, DSET_NAME[0], src_tid, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) + if ((dataset = H5Dcreate2(file, DSET_NAME[0], src_tid, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) goto error; /* Write the data to the dataset */ - if(H5Dwrite(dataset, src_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, orig) < 0) - goto error; + if (H5Dwrite(dataset, src_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, orig) < 0) + goto error; - if(H5Dclose(dataset) < 0) + if (H5Dclose(dataset) < 0) goto error; /* Set chunking */ - if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) + if (H5Pset_chunk(dcpl, 2, chunk_dims) < 0) goto error; /* Create chunked data set */ - if((dataset = H5Dcreate2(file, DSET_NAME[1], src_tid, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) + if ((dataset = H5Dcreate2(file, DSET_NAME[1], src_tid, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) goto error; /* Write the data to the dataset */ - if(H5Dwrite(dataset, src_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, orig) < 0) - goto error; + if (H5Dwrite(dataset, src_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, orig) < 0) + goto error; - if(H5Dclose(dataset) < 0) + if (H5Dclose(dataset) < 0) goto error; PASSED(); @@ -1432,32 +1377,32 @@ test_hdf5_src_subset(char *filename, hid_t fapl) TESTING("rewriting data with a subset of original data type"); /* Create xfer properties to preserve initialized data */ - if((dxpl = H5Pcreate(H5P_DATASET_XFER)) < 0) - FAIL_STACK_ERROR + if ((dxpl = H5Pcreate(H5P_DATASET_XFER)) < 0) + FAIL_STACK_ERROR - if(H5Pset_preserve(dxpl, TRUE) < 0) - FAIL_STACK_ERROR + if (H5Pset_preserve(dxpl, TRUE) < 0) + FAIL_STACK_ERROR /* Rewrite contiguous data set */ - if((dataset = H5Dopen2(file, DSET_NAME[0], H5P_DEFAULT)) < 0) + if ((dataset = H5Dopen2(file, DSET_NAME[0], H5P_DEFAULT)) < 0) FAIL_STACK_ERROR /* Write the data to the dataset */ - if(H5Dwrite(dataset, rew_tid, H5S_ALL, H5S_ALL, dxpl, rew_buf) < 0) - FAIL_STACK_ERROR + if (H5Dwrite(dataset, rew_tid, H5S_ALL, H5S_ALL, dxpl, rew_buf) < 0) + FAIL_STACK_ERROR - if(H5Dclose(dataset) < 0) + if (H5Dclose(dataset) < 0) FAIL_STACK_ERROR /* Rewrite chunked data set */ - if((dataset = H5Dopen2(file, DSET_NAME[1], H5P_DEFAULT)) < 0) + if ((dataset = H5Dopen2(file, DSET_NAME[1], H5P_DEFAULT)) < 0) FAIL_STACK_ERROR /* Write the data to the dataset */ - if(H5Dwrite(dataset, rew_tid, H5S_ALL, H5S_ALL, dxpl, rew_buf) < 0) - FAIL_STACK_ERROR + if (H5Dwrite(dataset, rew_tid, H5S_ALL, H5S_ALL, dxpl, rew_buf) < 0) + FAIL_STACK_ERROR - if(H5Dclose(dataset) < 0) + if (H5Dclose(dataset) < 0) FAIL_STACK_ERROR PASSED(); @@ -1469,48 +1414,48 @@ test_hdf5_src_subset(char *filename, hid_t fapl) TESTING("reading data with a subset of original data type"); /* Check contiguous data set */ - if((dataset = H5Dopen2(file, DSET_NAME[0], H5P_DEFAULT)) < 0) + if ((dataset = H5Dopen2(file, DSET_NAME[0], H5P_DEFAULT)) < 0) FAIL_STACK_ERROR - if(H5Dread(dataset, dst_tid, H5S_ALL, H5S_ALL, dxpl, rbuf) < 0) + if (H5Dread(dataset, dst_tid, H5S_ALL, H5S_ALL, dxpl, rbuf) < 0) FAIL_STACK_ERROR - if(compare_data(orig, rbuf, TRUE) < 0) + if (compare_data(orig, rbuf, TRUE) < 0) TEST_ERROR - if(H5Dclose(dataset) < 0) + if (H5Dclose(dataset) < 0) FAIL_STACK_ERROR /* Check chunked data set */ - if((dataset = H5Dopen2(file, DSET_NAME[1], H5P_DEFAULT)) < 0) + if ((dataset = H5Dopen2(file, DSET_NAME[1], H5P_DEFAULT)) < 0) FAIL_STACK_ERROR - if(H5Dread(dataset, dst_tid, H5S_ALL, H5S_ALL, dxpl, rbuf) < 0) + if (H5Dread(dataset, dst_tid, H5S_ALL, H5S_ALL, dxpl, rbuf) < 0) FAIL_STACK_ERROR - if(compare_data(orig, rbuf, TRUE) < 0) + if (compare_data(orig, rbuf, TRUE) < 0) TEST_ERROR - if(H5Dclose(dataset) < 0) + if (H5Dclose(dataset) < 0) FAIL_STACK_ERROR /* Finishing test and release resources */ - if(H5Sclose(space) < 0) + if (H5Sclose(space) < 0) FAIL_STACK_ERROR - if(H5Pclose(dcpl) < 0) + if (H5Pclose(dcpl) < 0) FAIL_STACK_ERROR - if(H5Pclose(dxpl) < 0) + if (H5Pclose(dxpl) < 0) FAIL_STACK_ERROR - if(H5Tclose(src_tid) < 0) + if (H5Tclose(src_tid) < 0) FAIL_STACK_ERROR - if(H5Tclose(dst_tid) < 0) + if (H5Tclose(dst_tid) < 0) FAIL_STACK_ERROR - if(H5Tclose(rew_tid) < 0) + if (H5Tclose(rew_tid) < 0) FAIL_STACK_ERROR - if(H5Fclose(file) < 0) + if (H5Fclose(file) < 0) FAIL_STACK_ERROR HDfree(orig); @@ -1521,15 +1466,14 @@ test_hdf5_src_subset(char *filename, hid_t fapl) return 0; error: - puts("*** DATASET TESTS FAILED ***"); + HDputs("*** DATASET TESTS FAILED ***"); return 1; } - /*------------------------------------------------------------------------- - * Function: test_hdf5_dst_subset + * Function: test_hdf5_dst_subset * - * Purpose: Test the optimization of compound data writing, rewriting, + * Purpose: Test the optimization of compound data writing, rewriting, * and reading when the destination type is a subset of the * source type. For example: * struct source { struct destination { @@ -1542,57 +1486,57 @@ error: * This optimization is for the Chicago company. This test * is in opposite of test_hdf5_src_subset. * - * Return: Success: 0 + * Return: Success: 0 * - * Failure: 1 + * Failure: 1 * - * Programmer: Raymond Lu + * Programmer: Raymond Lu * Friday, 15 June 2007 * * Modifications: *------------------------------------------------------------------------- */ -static int +static unsigned test_hdf5_dst_subset(char *filename, hid_t fapl) { - hid_t file; - hid_t rew_tid, src_tid, dst_tid; - hid_t dataset; - hid_t space; - hid_t dcpl, dxpl; - hsize_t dims[2] = {NX, NY}; - hsize_t chunk_dims[2] = {NX/10, NY/10}; - unsigned char *orig=NULL, *rew_buf=NULL, *rbuf=NULL; + hid_t file; + hid_t rew_tid, src_tid, dst_tid; + hid_t dataset; + hid_t space; + hid_t dcpl, dxpl; + hsize_t dims[2] = {NX, NY}; + hsize_t chunk_dims[2] = {NX / 10, NY / 10}; + unsigned char *orig = NULL, *rew_buf = NULL, *rbuf = NULL; /* Create the file for this test */ - if((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) - goto error; + if ((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0) + goto error; /* Build hdf5 datatypes */ - if ((src_tid=create_stype2()) < 0) + if ((src_tid = create_stype2()) < 0) goto error; - if ((dst_tid=create_stype1()) < 0) + if ((dst_tid = create_stype1()) < 0) goto error; - if ((rew_tid=create_stype4()) < 0) + if ((rew_tid = create_stype4()) < 0) goto error; /* Create the data space */ - if((space = H5Screate_simple(2, dims, NULL)) < 0) - goto error; + if ((space = H5Screate_simple(2, dims, NULL)) < 0) + goto error; /* Allocate space and initialize data */ - orig = (unsigned char*)HDmalloc(NX * NY * sizeof(stype2)); - initialize_stype2(orig, (size_t)NX*NY); + orig = (unsigned char *)HDmalloc(NX * NY * sizeof(stype2)); + initialize_stype2(orig, (size_t)NX * NY); - rbuf = (unsigned char*)HDmalloc(NX * NY * sizeof(stype1)); + rbuf = (unsigned char *)HDmalloc(NX * NY * sizeof(stype1)); - rew_buf = (unsigned char*)HDmalloc(NX * NY * sizeof(stype4)); - initialize_stype4(rew_buf, (size_t)NX*NY); + rew_buf = (unsigned char *)HDmalloc(NX * NY * sizeof(stype4)); + initialize_stype4(rew_buf, (size_t)NX * NY); /* Create dataset creation property list */ - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) + if ((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) goto error; /* @@ -1602,29 +1546,29 @@ test_hdf5_dst_subset(char *filename, hid_t fapl) TESTING("writing data to contiguous and chunked datasets"); /* Create contiguous data set */ - if((dataset = H5Dcreate2(file, DSET_NAME[2], src_tid, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) + if ((dataset = H5Dcreate2(file, DSET_NAME[2], src_tid, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) goto error; /* Write the data to the dataset */ - if(H5Dwrite(dataset, src_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, orig) < 0) - goto error; + if (H5Dwrite(dataset, src_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, orig) < 0) + goto error; - if(H5Dclose(dataset) < 0) + if (H5Dclose(dataset) < 0) goto error; /* Set chunking */ - if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) + if (H5Pset_chunk(dcpl, 2, chunk_dims) < 0) goto error; /* Create chunked data set */ - if((dataset = H5Dcreate2(file, DSET_NAME[3], src_tid, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) + if ((dataset = H5Dcreate2(file, DSET_NAME[3], src_tid, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) goto error; /* Write the data to the dataset */ - if(H5Dwrite(dataset, src_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, orig) < 0) - goto error; + if (H5Dwrite(dataset, src_tid, H5S_ALL, H5S_ALL, H5P_DEFAULT, orig) < 0) + goto error; - if(H5Dclose(dataset) < 0) + if (H5Dclose(dataset) < 0) goto error; PASSED(); @@ -1636,32 +1580,32 @@ test_hdf5_dst_subset(char *filename, hid_t fapl) TESTING("rewriting data with a subset of original data type"); /* Create xfer properties to preserve initialized data */ - if((dxpl = H5Pcreate (H5P_DATASET_XFER)) < 0) - goto error; + if ((dxpl = H5Pcreate(H5P_DATASET_XFER)) < 0) + goto error; - if(H5Pset_preserve(dxpl, TRUE) < 0) - goto error; + if (H5Pset_preserve(dxpl, TRUE) < 0) + goto error; /* Rewrite contiguous data set */ - if((dataset = H5Dopen2(file, DSET_NAME[2], H5P_DEFAULT)) < 0) + if ((dataset = H5Dopen2(file, DSET_NAME[2], H5P_DEFAULT)) < 0) goto error; /* Write the data to the dataset */ - if(H5Dwrite(dataset, rew_tid, H5S_ALL, H5S_ALL, dxpl, rew_buf) < 0) - goto error; + if (H5Dwrite(dataset, rew_tid, H5S_ALL, H5S_ALL, dxpl, rew_buf) < 0) + goto error; - if(H5Dclose(dataset) < 0) + if (H5Dclose(dataset) < 0) goto error; /* Rewrite chunked data set */ - if((dataset = H5Dopen2(file, DSET_NAME[3], H5P_DEFAULT)) < 0) + if ((dataset = H5Dopen2(file, DSET_NAME[3], H5P_DEFAULT)) < 0) goto error; /* Write the data to the dataset */ - if(H5Dwrite(dataset, rew_tid, H5S_ALL, H5S_ALL, dxpl, rew_buf) < 0) - goto error; + if (H5Dwrite(dataset, rew_tid, H5S_ALL, H5S_ALL, dxpl, rew_buf) < 0) + goto error; - if(H5Dclose(dataset) < 0) + if (H5Dclose(dataset) < 0) goto error; PASSED(); @@ -1673,48 +1617,48 @@ test_hdf5_dst_subset(char *filename, hid_t fapl) TESTING("reading data with a subset of original data type"); /* Check contiguous data set */ - if((dataset = H5Dopen2(file, DSET_NAME[2], H5P_DEFAULT)) < 0) + if ((dataset = H5Dopen2(file, DSET_NAME[2], H5P_DEFAULT)) < 0) goto error; - if(H5Dread(dataset, dst_tid, H5S_ALL, H5S_ALL, dxpl, rbuf) < 0) + if (H5Dread(dataset, dst_tid, H5S_ALL, H5S_ALL, dxpl, rbuf) < 0) goto error; - if(compare_data(orig, rbuf, FALSE) < 0) + if (compare_data(orig, rbuf, FALSE) < 0) goto error; - if(H5Dclose(dataset) < 0) + if (H5Dclose(dataset) < 0) goto error; /* Check chunked data set */ - if((dataset = H5Dopen2(file, DSET_NAME[3], H5P_DEFAULT)) < 0) + if ((dataset = H5Dopen2(file, DSET_NAME[3], H5P_DEFAULT)) < 0) goto error; - if(H5Dread(dataset, dst_tid, H5S_ALL, H5S_ALL, dxpl, rbuf) < 0) + if (H5Dread(dataset, dst_tid, H5S_ALL, H5S_ALL, dxpl, rbuf) < 0) goto error; - if(compare_data(orig, rbuf, FALSE) < 0) + if (compare_data(orig, rbuf, FALSE) < 0) goto error; - if(H5Dclose(dataset) < 0) + if (H5Dclose(dataset) < 0) goto error; /* Finishing test and release resources */ - if(H5Sclose(space) < 0) + if (H5Sclose(space) < 0) goto error; - if(H5Pclose(dcpl) < 0) + if (H5Pclose(dcpl) < 0) goto error; - if(H5Pclose(dxpl) < 0) + if (H5Pclose(dxpl) < 0) goto error; - if(H5Tclose(src_tid) < 0) + if (H5Tclose(src_tid) < 0) goto error; - if(H5Tclose(dst_tid) < 0) + if (H5Tclose(dst_tid) < 0) goto error; - if(H5Tclose(rew_tid) < 0) + if (H5Tclose(rew_tid) < 0) goto error; - if(H5Fclose(file) < 0) + if (H5Fclose(file) < 0) goto error; HDfree(orig); @@ -1731,237 +1675,282 @@ error: /* Error macro that outputs the state of the randomly generated variables so the * failure can be reproduced */ -#define PACK_OOO_ERROR \ -{ \ - int _i; \ - H5_FAILED(); AT(); \ - printf(" Insertion order ="); \ - for(_i=0; _i<PACK_NMEMBS; _i++) \ - printf(" %d", order[_i]); \ - printf("\n Inner compound order = %d, location = %d\n", sub_cmpd_order, order[sub_cmpd_order]); \ - fflush(stdout); \ - goto error; \ -} +#define PACK_OOO_ERROR \ + { \ + int _i; \ + H5_FAILED(); \ + AT(); \ + HDprintf(" Insertion order ="); \ + for (_i = 0; _i < PACK_NMEMBS; _i++) \ + HDprintf(" %d", order[_i]); \ + HDprintf("\n Inner compound order = %d, location = %d\n", sub_cmpd_order, order[sub_cmpd_order]); \ + fflush(stdout); \ + goto error; \ + } - /*------------------------------------------------------------------------- - * Function: test_pack_ooo + * Function: test_pack_ooo * - * Purpose: Test inserting fields into a compound out of offset order. + * Purpose: Test inserting fields into a compound out of offset order. * Verifies that the compound is correctly marked as packed * or non-packed. * - * Return: Success: 0 + * Return: Success: 0 * - * Failure: 1 + * Failure: 1 * - * Programmer: Neil Fortner + * Programmer: Neil Fortner * Thursday, 22 January 2009 * * Modifications: *------------------------------------------------------------------------- */ -static int +static unsigned test_pack_ooo(void) { - hid_t cmpd, sub_cmpd; /* Datatype IDs */ - H5T_t *dt; /* Datatype pointer */ - unsigned order[PACK_NMEMBS]; /* Order of insertion */ - unsigned free_order[PACK_NMEMBS]; /* Index of remaining free slots in order */ - unsigned num_free; /* Number of free slots in order */ - unsigned sub_cmpd_order; /* Order to insert the inner compound */ - char name[6]; /* Member name */ - unsigned extra_space; /* Whether to add extra space to the end of - * the compound */ - unsigned i, j; /* Indices */ - - HDsrand((unsigned) time(NULL)); + hid_t cmpd, sub_cmpd; /* Datatype IDs */ + H5T_t * dt; /* Datatype pointer */ + unsigned order[PACK_NMEMBS]; /* Order of insertion */ + unsigned free_order[PACK_NMEMBS]; /* Index of remaining free slots in order */ + unsigned num_free; /* Number of free slots in order */ + unsigned sub_cmpd_order; /* Order to insert the inner compound */ + char name[16]; /* Member name */ + unsigned extra_space; /* Whether to add extra space to the end of + * the compound */ + unsigned i, j; /* Indices */ + + HDsrand((unsigned)time(NULL)); /* Initialize "free_order" array to indicate that all slots in order are * free */ - for(i=0; i<PACK_NMEMBS; i++) + for (i = 0; i < PACK_NMEMBS; i++) free_order[i] = i; /* Create "order" array */ - for(i=0; i<PACK_NMEMBS; i++) { + for (i = 0; i < PACK_NMEMBS; i++) { /* Generate index into free_order array */ num_free = PACK_NMEMBS - i; - j = HDrand() % num_free; + j = (unsigned)HDrandom() % num_free; /* Update order array at the randomly generated (but guaranteed to be * free) location */ order[free_order[j]] = i; /* Reshape free_order to remove j (which is no longer free) */ - if(j < (num_free - 1)) - HDmemmove(&free_order[j], &free_order[j+1], (num_free - j - 1) * sizeof(free_order[0])); + if (j < (num_free - 1)) + HDmemmove(&free_order[j], &free_order[j + 1], (num_free - j - 1) * sizeof(free_order[0])); } /* end for */ /* Generate order to insert inner compound type */ - sub_cmpd_order = HDrand() % PACK_NMEMBS; + sub_cmpd_order = (unsigned)HDrandom() % PACK_NMEMBS; - for(extra_space=0; extra_space<2; extra_space ++) { - if(extra_space) - puts("With extra space at the end of compound..."); + for (extra_space = 0; extra_space < 2; extra_space++) { + if (extra_space) + HDputs("With extra space at the end of compound..."); else - puts("Without extra space at the end of compound..."); + HDputs("Without extra space at the end of compound..."); TESTING("random member insertion with empty compound subtype"); /* Create inner compound type. It will be empty for the first run */ - if((sub_cmpd = H5Tcreate(H5T_COMPOUND, (size_t)4)) < 0) PACK_OOO_ERROR + if ((sub_cmpd = H5Tcreate(H5T_COMPOUND, (size_t)4)) < 0) + PACK_OOO_ERROR /* Create main compound type, with extra space at the end */ - if((cmpd = H5Tcreate(H5T_COMPOUND, (size_t)((4 * PACK_NMEMBS) + extra_space))) < 0) PACK_OOO_ERROR + if ((cmpd = H5Tcreate(H5T_COMPOUND, (size_t)((4 * PACK_NMEMBS) + extra_space))) < 0) + PACK_OOO_ERROR /* Insert the compound members in the random order previously generated */ - for(i=0; i<PACK_NMEMBS; i++) { - sprintf(name, "%05d", i); - if(i == sub_cmpd_order) { - if(H5Tinsert(cmpd, name, (size_t)(4 * order[i]), sub_cmpd) < 0) PACK_OOO_ERROR - } else - if(H5Tinsert(cmpd, name, (size_t)(4 * order[i]), H5T_STD_I32BE) < 0) PACK_OOO_ERROR + for (i = 0; i < PACK_NMEMBS; i++) { + HDsprintf(name, "%05d", i); + if (i == sub_cmpd_order) { + if (H5Tinsert(cmpd, name, (size_t)(4 * order[i]), sub_cmpd) < 0) + PACK_OOO_ERROR + } + else if (H5Tinsert(cmpd, name, (size_t)(4 * order[i]), H5T_STD_I32BE) < 0) + PACK_OOO_ERROR } /* end for */ /* Verify that the compound is not packed */ - if(NULL == (dt = (H5T_t *) H5I_object_verify(cmpd, H5I_DATATYPE))) PACK_OOO_ERROR - if(dt->shared->u.compnd.packed) PACK_OOO_ERROR + if (NULL == (dt = (H5T_t *)H5I_object_verify(cmpd, H5I_DATATYPE))) + PACK_OOO_ERROR + if (dt->shared->u.compnd.packed) + PACK_OOO_ERROR /* Close the main compound */ - if(H5Tclose(cmpd) < 0) PACK_OOO_ERROR + if (H5Tclose(cmpd) < 0) + PACK_OOO_ERROR PASSED(); TESTING("random member insertion with full compound subtype"); /* Complete the inner compound type */ - if(H5Tinsert(sub_cmpd, "int", (size_t)0, H5T_STD_I32LE) < 0) PACK_OOO_ERROR + if (H5Tinsert(sub_cmpd, "int", (size_t)0, H5T_STD_I32LE) < 0) + PACK_OOO_ERROR /* Recreate main compound type */ - if((cmpd = H5Tcreate(H5T_COMPOUND, (size_t)((4 * PACK_NMEMBS) + extra_space))) < 0) PACK_OOO_ERROR + if ((cmpd = H5Tcreate(H5T_COMPOUND, (size_t)((4 * PACK_NMEMBS) + extra_space))) < 0) + PACK_OOO_ERROR /* Insert the compound members in the random order previously generated */ - for(i=0; i<PACK_NMEMBS; i++) { - sprintf(name, "%05d", i); - if(i == sub_cmpd_order) { - if(H5Tinsert(cmpd, name, (size_t)(4 * order[i]), sub_cmpd) < 0) PACK_OOO_ERROR - } else - if(H5Tinsert(cmpd, name, (size_t)(4 * order[i]), H5T_STD_I32BE) < 0) PACK_OOO_ERROR + for (i = 0; i < PACK_NMEMBS; i++) { + HDsprintf(name, "%05d", i); + if (i == sub_cmpd_order) { + if (H5Tinsert(cmpd, name, (size_t)(4 * order[i]), sub_cmpd) < 0) + PACK_OOO_ERROR + } + else if (H5Tinsert(cmpd, name, (size_t)(4 * order[i]), H5T_STD_I32BE) < 0) + PACK_OOO_ERROR } /* end for */ /* Verify that the compound is not packed */ - if(NULL == (dt = (H5T_t *) H5I_object_verify(cmpd, H5I_DATATYPE))) PACK_OOO_ERROR - if(dt->shared->u.compnd.packed != !extra_space) PACK_OOO_ERROR + if (NULL == (dt = (H5T_t *)H5I_object_verify(cmpd, H5I_DATATYPE))) + PACK_OOO_ERROR + if (dt->shared->u.compnd.packed != !extra_space) + PACK_OOO_ERROR /* Close */ - if(H5Tclose(cmpd) < 0) PACK_OOO_ERROR - if(H5Tclose(sub_cmpd) < 0) PACK_OOO_ERROR + if (H5Tclose(cmpd) < 0) + PACK_OOO_ERROR + if (H5Tclose(sub_cmpd) < 0) + PACK_OOO_ERROR PASSED(); TESTING("reverse member insertion with empty compound subtype"); /* Create inner compound type. It will be empty for the first run */ - if((sub_cmpd = H5Tcreate(H5T_COMPOUND, (size_t)4)) < 0) PACK_OOO_ERROR + if ((sub_cmpd = H5Tcreate(H5T_COMPOUND, (size_t)4)) < 0) + PACK_OOO_ERROR /* Create main compound type, with extra space at the end */ - if((cmpd = H5Tcreate(H5T_COMPOUND, (size_t)((4 * PACK_NMEMBS) + extra_space))) < 0) PACK_OOO_ERROR + if ((cmpd = H5Tcreate(H5T_COMPOUND, (size_t)((4 * PACK_NMEMBS) + extra_space))) < 0) + PACK_OOO_ERROR /* Insert the compound members in reverse order, with compound last */ - for(i=0; i<PACK_NMEMBS; i++) { - sprintf(name, "%05d", i); - if(i == PACK_NMEMBS - 1) { - if(H5Tinsert(cmpd, name, (size_t)(4 * (PACK_NMEMBS - i - 1)), sub_cmpd) < 0) PACK_OOO_ERROR - } else - if(H5Tinsert(cmpd, name, (size_t)(4 * (PACK_NMEMBS - i - 1)), H5T_STD_I32BE) < 0) PACK_OOO_ERROR + for (i = 0; i < PACK_NMEMBS; i++) { + HDsprintf(name, "%05d", i); + if (i == PACK_NMEMBS - 1) { + if (H5Tinsert(cmpd, name, (size_t)(4 * (PACK_NMEMBS - i - 1)), sub_cmpd) < 0) + PACK_OOO_ERROR + } + else if (H5Tinsert(cmpd, name, (size_t)(4 * (PACK_NMEMBS - i - 1)), H5T_STD_I32BE) < 0) + PACK_OOO_ERROR } /* end for */ /* Verify that the compound is not packed */ - if(NULL == (dt = (H5T_t *) H5I_object_verify(cmpd, H5I_DATATYPE))) PACK_OOO_ERROR - if(dt->shared->u.compnd.packed) PACK_OOO_ERROR + if (NULL == (dt = (H5T_t *)H5I_object_verify(cmpd, H5I_DATATYPE))) + PACK_OOO_ERROR + if (dt->shared->u.compnd.packed) + PACK_OOO_ERROR /* Close the main compound */ - if(H5Tclose(cmpd) < 0) PACK_OOO_ERROR + if (H5Tclose(cmpd) < 0) + PACK_OOO_ERROR PASSED(); TESTING("reverse member insertion with full compound subtype"); /* Complete the inner compound type */ - if(H5Tinsert(sub_cmpd, "int", (size_t)0, H5T_STD_I32LE) < 0) PACK_OOO_ERROR + if (H5Tinsert(sub_cmpd, "int", (size_t)0, H5T_STD_I32LE) < 0) + PACK_OOO_ERROR /* Recreate main compound type */ - if((cmpd = H5Tcreate(H5T_COMPOUND, (size_t)((4 * PACK_NMEMBS) + extra_space))) < 0) PACK_OOO_ERROR + if ((cmpd = H5Tcreate(H5T_COMPOUND, (size_t)((4 * PACK_NMEMBS) + extra_space))) < 0) + PACK_OOO_ERROR /* Insert the compound members in reverse order, with compound last */ - for(i=0; i<PACK_NMEMBS; i++) { - sprintf(name, "%05d", i); - if(i == PACK_NMEMBS - 1) { - if(H5Tinsert(cmpd, name, (size_t)(4 * (PACK_NMEMBS - i - 1)), sub_cmpd) < 0) PACK_OOO_ERROR - } else - if(H5Tinsert(cmpd, name, (size_t)(4 * (PACK_NMEMBS - i - 1)), H5T_STD_I32BE) < 0) PACK_OOO_ERROR + for (i = 0; i < PACK_NMEMBS; i++) { + HDsprintf(name, "%05d", i); + if (i == PACK_NMEMBS - 1) { + if (H5Tinsert(cmpd, name, (size_t)(4 * (PACK_NMEMBS - i - 1)), sub_cmpd) < 0) + PACK_OOO_ERROR + } + else if (H5Tinsert(cmpd, name, (size_t)(4 * (PACK_NMEMBS - i - 1)), H5T_STD_I32BE) < 0) + PACK_OOO_ERROR } /* end for */ /* Verify that the compound is packed */ - if(NULL == (dt = (H5T_t *) H5I_object_verify(cmpd, H5I_DATATYPE))) PACK_OOO_ERROR - if(dt->shared->u.compnd.packed != !extra_space) PACK_OOO_ERROR + if (NULL == (dt = (H5T_t *)H5I_object_verify(cmpd, H5I_DATATYPE))) + PACK_OOO_ERROR + if (dt->shared->u.compnd.packed != !extra_space) + PACK_OOO_ERROR /* Close */ - if(H5Tclose(cmpd) < 0) PACK_OOO_ERROR - if(H5Tclose(sub_cmpd) < 0) PACK_OOO_ERROR + if (H5Tclose(cmpd) < 0) + PACK_OOO_ERROR + if (H5Tclose(sub_cmpd) < 0) + PACK_OOO_ERROR PASSED(); TESTING("forward member insertion with empty compound subtype"); /* Create inner compound type. It will be empty for the first run */ - if((sub_cmpd = H5Tcreate(H5T_COMPOUND, (size_t)4)) < 0) PACK_OOO_ERROR + if ((sub_cmpd = H5Tcreate(H5T_COMPOUND, (size_t)4)) < 0) + PACK_OOO_ERROR /* Create main compound type, with extra space at the end */ - if((cmpd = H5Tcreate(H5T_COMPOUND, (size_t)((4 * PACK_NMEMBS) + extra_space))) < 0) PACK_OOO_ERROR + if ((cmpd = H5Tcreate(H5T_COMPOUND, (size_t)((4 * PACK_NMEMBS) + extra_space))) < 0) + PACK_OOO_ERROR /* Insert the compound members in forward order, with compound first */ - for(i=0; i<PACK_NMEMBS; i++) { - sprintf(name, "%05d", i); - if(i == 0) { - if(H5Tinsert(cmpd, name, (size_t)(4 * i), sub_cmpd) < 0) PACK_OOO_ERROR - } else - if(H5Tinsert(cmpd, name, (size_t)(4 * i), H5T_STD_I32BE) < 0) PACK_OOO_ERROR + for (i = 0; i < PACK_NMEMBS; i++) { + HDsprintf(name, "%05d", i); + if (i == 0) { + if (H5Tinsert(cmpd, name, (size_t)(4 * i), sub_cmpd) < 0) + PACK_OOO_ERROR + } + else if (H5Tinsert(cmpd, name, (size_t)(4 * i), H5T_STD_I32BE) < 0) + PACK_OOO_ERROR } /* end for */ /* Verify that the compound is not packed */ - if(NULL == (dt = (H5T_t *) H5I_object_verify(cmpd, H5I_DATATYPE))) PACK_OOO_ERROR - if(dt->shared->u.compnd.packed) PACK_OOO_ERROR + if (NULL == (dt = (H5T_t *)H5I_object_verify(cmpd, H5I_DATATYPE))) + PACK_OOO_ERROR + if (dt->shared->u.compnd.packed) + PACK_OOO_ERROR /* Close the main compound */ - if(H5Tclose(cmpd) < 0) PACK_OOO_ERROR + if (H5Tclose(cmpd) < 0) + PACK_OOO_ERROR PASSED(); TESTING("forward member insertion with full compound subtype"); /* Complete the inner compound type */ - if(H5Tinsert(sub_cmpd, "int", (size_t)0, H5T_STD_I32LE) < 0) PACK_OOO_ERROR + if (H5Tinsert(sub_cmpd, "int", (size_t)0, H5T_STD_I32LE) < 0) + PACK_OOO_ERROR /* Recreate main compound type */ - if((cmpd = H5Tcreate(H5T_COMPOUND, (size_t)((4 * PACK_NMEMBS) + extra_space))) < 0) PACK_OOO_ERROR + if ((cmpd = H5Tcreate(H5T_COMPOUND, (size_t)((4 * PACK_NMEMBS) + extra_space))) < 0) + PACK_OOO_ERROR /* Insert the compound members in forward order */ - for(i=0; i<PACK_NMEMBS; i++) { - sprintf(name, "%05d", i); - if(i == 0) { - if(H5Tinsert(cmpd, name, (size_t)(4 * i), sub_cmpd) < 0) PACK_OOO_ERROR - } else - if(H5Tinsert(cmpd, name, (size_t)(4 * i), H5T_STD_I32BE) < 0) PACK_OOO_ERROR + for (i = 0; i < PACK_NMEMBS; i++) { + HDsprintf(name, "%05d", i); + if (i == 0) { + if (H5Tinsert(cmpd, name, (size_t)(4 * i), sub_cmpd) < 0) + PACK_OOO_ERROR + } + else if (H5Tinsert(cmpd, name, (size_t)(4 * i), H5T_STD_I32BE) < 0) + PACK_OOO_ERROR } /* end for */ /* Verify that the compound is packed */ - if(NULL == (dt = (H5T_t *) H5I_object_verify(cmpd, H5I_DATATYPE))) PACK_OOO_ERROR - if(dt->shared->u.compnd.packed != !extra_space) PACK_OOO_ERROR + if (NULL == (dt = (H5T_t *)H5I_object_verify(cmpd, H5I_DATATYPE))) + PACK_OOO_ERROR + if (dt->shared->u.compnd.packed != !extra_space) + PACK_OOO_ERROR /* Close */ - if(H5Tclose(cmpd) < 0) PACK_OOO_ERROR - if(H5Tclose(sub_cmpd) < 0) PACK_OOO_ERROR + if (H5Tclose(cmpd) < 0) + PACK_OOO_ERROR + if (H5Tclose(sub_cmpd) < 0) + PACK_OOO_ERROR PASSED(); } /* end for */ @@ -1969,194 +1958,261 @@ test_pack_ooo(void) return 0; error: - puts("*** DATASET TESTS FAILED ***"); + HDputs("*** DATASET TESTS FAILED ***"); return 1; } - /*------------------------------------------------------------------------- - * Function: test_ooo_order + * Function: test_ooo_order * - * Purpose: Test inserting fields into a compound out of offset order. + * Purpose: Test inserting fields into a compound out of offset order. * Verifies that the order of compound members is the same as * the order in which they were inserted. While this is * explicitly not guaranteed by the documentation, the H5TB * API currently makes this assumption. * - * Return: Success: 0 + * Return: Success: 0 * - * Failure: 1 + * Failure: 1 * - * Programmer: Neil Fortner + * Programmer: Neil Fortner * Monday, 19 October 2009 * * Modifications: *------------------------------------------------------------------------- */ -static int -test_ooo_order(char *filename) +static unsigned +test_ooo_order(char *filename, hid_t fapl_id) { - hid_t file = -1; /* File ID */ - hid_t dtype = -1; /* Datatype IDs */ - hid_t dtype_tmp = -1; /* Temp Datatype ID */ - H5T_t *dt = NULL; /* Datatype pointer */ + hid_t file = -1; /* File ID */ + hid_t dtype = -1; /* Datatype IDs */ + hid_t dtype_tmp = -1; /* Temp Datatype ID */ + H5T_t *dt = NULL; /* Datatype pointer */ TESTING("that compound member insertion order is preserved") /* Create the file */ - if ((file = H5Fcreate (filename, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT)) < 0) + if ((file = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl_id)) < 0) TEST_ERROR /* Create the compound */ - if((dtype = H5Tcreate(H5T_COMPOUND, (size_t)20)) < 0) TEST_ERROR - if(H5Tinsert(dtype, "A", (size_t)8, H5T_STD_I32LE) < 0) TEST_ERROR - if(H5Tinsert(dtype, "B", (size_t)12, H5T_STD_I32LE) < 0) TEST_ERROR - if(H5Tinsert(dtype, "C", (size_t)0, H5T_STD_I32LE) < 0) TEST_ERROR - if(H5Tinsert(dtype, "D", (size_t)16, H5T_STD_I32LE) < 0) TEST_ERROR + if ((dtype = H5Tcreate(H5T_COMPOUND, (size_t)20)) < 0) + TEST_ERROR + if (H5Tinsert(dtype, "A", (size_t)8, H5T_STD_I32LE) < 0) + TEST_ERROR + if (H5Tinsert(dtype, "B", (size_t)12, H5T_STD_I32LE) < 0) + TEST_ERROR + if (H5Tinsert(dtype, "C", (size_t)0, H5T_STD_I32LE) < 0) + TEST_ERROR + if (H5Tinsert(dtype, "D", (size_t)16, H5T_STD_I32LE) < 0) + TEST_ERROR /* Verify that the compound is not packed */ - if(NULL == (dt = (H5T_t *) H5I_object_verify(dtype, H5I_DATATYPE))) + if (NULL == (dt = (H5T_t *)H5I_object_verify(dtype, H5I_DATATYPE))) + TEST_ERROR + if (dt->shared->u.compnd.packed) TEST_ERROR - if(dt->shared->u.compnd.packed) TEST_ERROR /* Verify that the order is the same as the insertion order */ - if(H5Tget_member_offset(dtype, 0) != 8) TEST_ERROR - if(H5Tget_member_offset(dtype, 1) != 12) TEST_ERROR - if(H5Tget_member_offset(dtype, 2) != 0) TEST_ERROR - if(H5Tget_member_offset(dtype, 3) != 16) TEST_ERROR + if (H5Tget_member_offset(dtype, 0) != 8) + TEST_ERROR + if (H5Tget_member_offset(dtype, 1) != 12) + TEST_ERROR + if (H5Tget_member_offset(dtype, 2) != 0) + TEST_ERROR + if (H5Tget_member_offset(dtype, 3) != 16) + TEST_ERROR /* Commit the datatype */ - if(H5Tcommit2(file, "dtype", dtype, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT) < 0) + if (H5Tcommit2(file, "dtype", dtype, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT) < 0) TEST_ERROR /* Close and reopen the file */ - if(H5Tclose(dtype)) TEST_ERROR - if(H5Fclose(file)) TEST_ERROR - if((file = H5Fopen(filename, H5F_ACC_RDWR, H5P_DEFAULT)) < 0) TEST_ERROR + if (H5Tclose(dtype)) + TEST_ERROR + if (H5Fclose(file)) + TEST_ERROR + if ((file = H5Fopen(filename, H5F_ACC_RDWR, fapl_id)) < 0) + TEST_ERROR /* Open the type */ - if((dtype_tmp = H5Topen2(file, "dtype", H5P_DEFAULT)) < 0) TEST_ERROR + if ((dtype_tmp = H5Topen2(file, "dtype", H5P_DEFAULT)) < 0) + TEST_ERROR /* Verify that the compound is not packed */ - if(NULL == (dt = (H5T_t *) H5I_object_verify(dtype_tmp, H5I_DATATYPE))) + if (NULL == (dt = (H5T_t *)H5I_object_verify(dtype_tmp, H5I_DATATYPE))) + TEST_ERROR + if (dt->shared->u.compnd.packed) TEST_ERROR - if(dt->shared->u.compnd.packed) TEST_ERROR /* Verify that the order is the same as the insertion order */ - if(H5Tget_member_offset(dtype_tmp, 0) != 8) TEST_ERROR - if(H5Tget_member_offset(dtype_tmp, 1) != 12) TEST_ERROR - if(H5Tget_member_offset(dtype_tmp, 2) != 0) TEST_ERROR - if(H5Tget_member_offset(dtype_tmp, 3) != 16) TEST_ERROR + if (H5Tget_member_offset(dtype_tmp, 0) != 8) + TEST_ERROR + if (H5Tget_member_offset(dtype_tmp, 1) != 12) + TEST_ERROR + if (H5Tget_member_offset(dtype_tmp, 2) != 0) + TEST_ERROR + if (H5Tget_member_offset(dtype_tmp, 3) != 16) + TEST_ERROR /* Copy the datatype */ - if((dtype = H5Tcopy(dtype_tmp)) < 0) TEST_ERROR + if ((dtype = H5Tcopy(dtype_tmp)) < 0) + TEST_ERROR /* Verify that the compound is not packed */ - if(NULL == (dt = (H5T_t *) H5I_object_verify(dtype, H5I_DATATYPE))) + if (NULL == (dt = (H5T_t *)H5I_object_verify(dtype, H5I_DATATYPE))) + TEST_ERROR + if (dt->shared->u.compnd.packed) TEST_ERROR - if(dt->shared->u.compnd.packed) TEST_ERROR /* Verify that the order is the same as the insertion order */ - if(H5Tget_member_offset(dtype, 0) != 8) TEST_ERROR - if(H5Tget_member_offset(dtype, 1) != 12) TEST_ERROR - if(H5Tget_member_offset(dtype, 2) != 0) TEST_ERROR - if(H5Tget_member_offset(dtype, 3) != 16) TEST_ERROR + if (H5Tget_member_offset(dtype, 0) != 8) + TEST_ERROR + if (H5Tget_member_offset(dtype, 1) != 12) + TEST_ERROR + if (H5Tget_member_offset(dtype, 2) != 0) + TEST_ERROR + if (H5Tget_member_offset(dtype, 3) != 16) + TEST_ERROR /* Insert the last member */ - if(H5Tinsert(dtype, "E", (size_t)4, H5T_STD_I32LE) < 0) TEST_ERROR + if (H5Tinsert(dtype, "E", (size_t)4, H5T_STD_I32LE) < 0) + TEST_ERROR /* Verify that the compound is packed */ - if(NULL == (dt = (H5T_t *) H5I_object_verify(dtype, H5I_DATATYPE))) + if (NULL == (dt = (H5T_t *)H5I_object_verify(dtype, H5I_DATATYPE))) + TEST_ERROR + if (!dt->shared->u.compnd.packed) TEST_ERROR - if(!dt->shared->u.compnd.packed) TEST_ERROR /* Verify that the order is the same as the insertion order */ - if(H5Tget_member_offset(dtype, 0) != 8) TEST_ERROR - if(H5Tget_member_offset(dtype, 1) != 12) TEST_ERROR - if(H5Tget_member_offset(dtype, 2) != 0) TEST_ERROR - if(H5Tget_member_offset(dtype, 3) != 16) TEST_ERROR - if(H5Tget_member_offset(dtype, 4) != 4) TEST_ERROR + if (H5Tget_member_offset(dtype, 0) != 8) + TEST_ERROR + if (H5Tget_member_offset(dtype, 1) != 12) + TEST_ERROR + if (H5Tget_member_offset(dtype, 2) != 0) + TEST_ERROR + if (H5Tget_member_offset(dtype, 3) != 16) + TEST_ERROR + if (H5Tget_member_offset(dtype, 4) != 4) + TEST_ERROR /* Commit the modified datatype */ - if(H5Tcommit2(file, "dtype2", dtype, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT) < 0) + if (H5Tcommit2(file, "dtype2", dtype, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT) < 0) TEST_ERROR /* Close and reopen the file */ - if(H5Tclose(dtype_tmp)) TEST_ERROR - if(H5Tclose(dtype)) TEST_ERROR - if(H5Fclose(file)) TEST_ERROR - if((file = H5Fopen(filename, H5F_ACC_RDONLY, H5P_DEFAULT)) < 0) TEST_ERROR + if (H5Tclose(dtype_tmp)) + TEST_ERROR + if (H5Tclose(dtype)) + TEST_ERROR + if (H5Fclose(file)) + TEST_ERROR + if ((file = H5Fopen(filename, H5F_ACC_RDONLY, fapl_id)) < 0) + TEST_ERROR /* Open the type, and verify status */ - if((dtype_tmp = H5Topen2(file, "dtype2", H5P_DEFAULT)) < 0) TEST_ERROR - if(NULL == (dt = (H5T_t *) H5I_object_verify(dtype_tmp, H5I_DATATYPE))) + if ((dtype_tmp = H5Topen2(file, "dtype2", H5P_DEFAULT)) < 0) + TEST_ERROR + if (NULL == (dt = (H5T_t *)H5I_object_verify(dtype_tmp, H5I_DATATYPE))) + TEST_ERROR + if (!dt->shared->u.compnd.packed) + TEST_ERROR + if (H5Tget_member_offset(dtype_tmp, 0) != 8) + TEST_ERROR + if (H5Tget_member_offset(dtype_tmp, 1) != 12) + TEST_ERROR + if (H5Tget_member_offset(dtype_tmp, 2) != 0) + TEST_ERROR + if (H5Tget_member_offset(dtype_tmp, 3) != 16) + TEST_ERROR + if (H5Tget_member_offset(dtype_tmp, 4) != 4) TEST_ERROR - if(!dt->shared->u.compnd.packed) TEST_ERROR - if(H5Tget_member_offset(dtype_tmp, 0) != 8) TEST_ERROR - if(H5Tget_member_offset(dtype_tmp, 1) != 12) TEST_ERROR - if(H5Tget_member_offset(dtype_tmp, 2) != 0) TEST_ERROR - if(H5Tget_member_offset(dtype_tmp, 3) != 16) TEST_ERROR - if(H5Tget_member_offset(dtype_tmp, 4) != 4) TEST_ERROR /* Copy the datatype, and verify status */ - if((dtype = H5Tcopy(dtype_tmp)) < 0) TEST_ERROR - if(NULL == (dt = (H5T_t *) H5I_object_verify(dtype, H5I_DATATYPE))) + if ((dtype = H5Tcopy(dtype_tmp)) < 0) + TEST_ERROR + if (NULL == (dt = (H5T_t *)H5I_object_verify(dtype, H5I_DATATYPE))) + TEST_ERROR + if (!dt->shared->u.compnd.packed) + TEST_ERROR + if (H5Tget_member_offset(dtype, 0) != 8) + TEST_ERROR + if (H5Tget_member_offset(dtype, 1) != 12) + TEST_ERROR + if (H5Tget_member_offset(dtype, 2) != 0) + TEST_ERROR + if (H5Tget_member_offset(dtype, 3) != 16) + TEST_ERROR + if (H5Tget_member_offset(dtype, 4) != 4) TEST_ERROR - if(!dt->shared->u.compnd.packed) TEST_ERROR - if(H5Tget_member_offset(dtype, 0) != 8) TEST_ERROR - if(H5Tget_member_offset(dtype, 1) != 12) TEST_ERROR - if(H5Tget_member_offset(dtype, 2) != 0) TEST_ERROR - if(H5Tget_member_offset(dtype, 3) != 16) TEST_ERROR - if(H5Tget_member_offset(dtype, 4) != 4) TEST_ERROR /* Expand the type, and verify that it became unpacked */ - if(H5Tset_size(dtype, (size_t)21) < 0) TEST_ERROR - if(NULL == (dt = (H5T_t *) H5I_object_verify(dtype, H5I_DATATYPE))) + if (H5Tset_size(dtype, (size_t)21) < 0) + TEST_ERROR + if (NULL == (dt = (H5T_t *)H5I_object_verify(dtype, H5I_DATATYPE))) + TEST_ERROR + if (dt->shared->u.compnd.packed) + TEST_ERROR + if (H5Tget_member_offset(dtype, 0) != 8) + TEST_ERROR + if (H5Tget_member_offset(dtype, 1) != 12) + TEST_ERROR + if (H5Tget_member_offset(dtype, 2) != 0) + TEST_ERROR + if (H5Tget_member_offset(dtype, 3) != 16) + TEST_ERROR + if (H5Tget_member_offset(dtype, 4) != 4) TEST_ERROR - if(dt->shared->u.compnd.packed) TEST_ERROR - if(H5Tget_member_offset(dtype, 0) != 8) TEST_ERROR - if(H5Tget_member_offset(dtype, 1) != 12) TEST_ERROR - if(H5Tget_member_offset(dtype, 2) != 0) TEST_ERROR - if(H5Tget_member_offset(dtype, 3) != 16) TEST_ERROR - if(H5Tget_member_offset(dtype, 4) != 4) TEST_ERROR /* Shrink the type, and verify that it became packed */ - if(H5Tset_size(dtype, (size_t)20) < 0) TEST_ERROR - if(NULL == (dt = (H5T_t *) H5I_object_verify(dtype, H5I_DATATYPE))) + if (H5Tset_size(dtype, (size_t)20) < 0) + TEST_ERROR + if (NULL == (dt = (H5T_t *)H5I_object_verify(dtype, H5I_DATATYPE))) + TEST_ERROR + if (!dt->shared->u.compnd.packed) + TEST_ERROR + if (H5Tget_member_offset(dtype, 0) != 8) + TEST_ERROR + if (H5Tget_member_offset(dtype, 1) != 12) + TEST_ERROR + if (H5Tget_member_offset(dtype, 2) != 0) + TEST_ERROR + if (H5Tget_member_offset(dtype, 3) != 16) + TEST_ERROR + if (H5Tget_member_offset(dtype, 4) != 4) TEST_ERROR - if(!dt->shared->u.compnd.packed) TEST_ERROR - if(H5Tget_member_offset(dtype, 0) != 8) TEST_ERROR - if(H5Tget_member_offset(dtype, 1) != 12) TEST_ERROR - if(H5Tget_member_offset(dtype, 2) != 0) TEST_ERROR - if(H5Tget_member_offset(dtype, 3) != 16) TEST_ERROR - if(H5Tget_member_offset(dtype, 4) != 4) TEST_ERROR /* Close */ - if(H5Tclose(dtype_tmp)) TEST_ERROR - if(H5Tclose(dtype)) TEST_ERROR - if(H5Fclose(file)) TEST_ERROR + if (H5Tclose(dtype_tmp)) + TEST_ERROR + if (H5Tclose(dtype)) + TEST_ERROR + if (H5Fclose(file)) + TEST_ERROR PASSED(); return 0; error: - H5E_BEGIN_TRY { + H5E_BEGIN_TRY + { H5Tclose(dtype_tmp); H5Tclose(dtype); H5Fclose(file); - } H5E_END_TRY - puts("*** DATASET TESTS FAILED ***"); + } + H5E_END_TRY + HDputs("*** DATASET TESTS FAILED ***"); return 1; } /* test_ooo_order */ - /*------------------------------------------------------------------------- - * Function: main + * Function: main * - * Purpose: Test different cases of I/O for compound data and the + * Purpose: Test different cases of I/O for compound data and the * compound optimization for the Chicago company. * - * Return: Success: 0 + * Return: Success: 0 * * Failure: 1 * @@ -2167,21 +2223,22 @@ error: *------------------------------------------------------------------------- */ int -main (int argc, char *argv[]) +main(int argc, char *argv[]) { - hid_t fapl_id; - char fname[256]; - unsigned nerrors = 0; + hid_t fapl_id; + char fname[256]; + unsigned nerrors = 0; h5_reset(); /* Turn off optimized compound converter? */ - if (argc>1) { - if (argc>2 || strcmp("--noopt", argv[1])) { - fprintf(stderr, "usage: %s [--noopt]\n", argv[0]); - exit(1); - } - H5Tunregister(H5T_PERS_DONTCARE, NULL, (hid_t)-1, (hid_t)-1, H5T__conv_struct_opt); + if (argc > 1) { + if (argc > 2 || strcmp("--noopt", argv[1])) { + HDfprintf(stderr, "usage: %s [--noopt]\n", argv[0]); + HDexit(EXIT_FAILURE); + } + H5Tunregister(H5T_PERS_DONTCARE, NULL, (hid_t)-1, (hid_t)-1, + (H5T_conv_t)((void (*)(void))H5T__conv_struct_opt)); } /* Create the file */ @@ -2189,33 +2246,32 @@ main (int argc, char *argv[]) h5_fixname(FILENAME[0], fapl_id, fname, sizeof(fname)); - puts("Testing compound dataset:"); + HDputs("Testing compound dataset:"); nerrors += test_compound(fname, fapl_id); - puts("Testing the optimization of when the source type is a subset of the dest:"); + HDputs("Testing the optimization of when the source type is a subset of the dest:"); h5_fixname(FILENAME[1], fapl_id, fname, sizeof(fname)); nerrors += test_hdf5_src_subset(fname, fapl_id); - puts("Testing the optimization of when the dest type is a subset of the source:"); + HDputs("Testing the optimization of when the dest type is a subset of the source:"); h5_fixname(FILENAME[2], fapl_id, fname, sizeof(fname)); nerrors += test_hdf5_dst_subset(fname, fapl_id); - puts("Testing that compound types can be packed out of order:"); + HDputs("Testing that compound types can be packed out of order:"); nerrors += test_pack_ooo(); - puts("Testing compound member ordering:"); - nerrors += test_ooo_order(fname); + HDputs("Testing compound member ordering:"); + nerrors += test_ooo_order(fname, fapl_id); /* Verify symbol table messages are cached */ nerrors += (h5_verify_cached_stabs(FILENAME, fapl_id) < 0 ? 1 : 0); if (nerrors) { - printf("***** %u FAILURE%s! *****\n", - nerrors, 1==nerrors?"":"S"); - HDexit(1); + HDprintf("***** %u FAILURE%s! *****\n", nerrors, 1 == nerrors ? "" : "S"); + HDexit(EXIT_FAILURE); } h5_cleanup(FILENAME, fapl_id); - puts("All compound dataset tests passed."); + HDputs("All compound dataset tests passed."); return 0; } |