diff options
Diffstat (limited to 'test/gen_bounds.c')
-rw-r--r-- | test/gen_bounds.c | 528 |
1 files changed, 262 insertions, 266 deletions
diff --git a/test/gen_bounds.c b/test/gen_bounds.c index 50b4acc..b3ef0e3 100644 --- a/test/gen_bounds.c +++ b/test/gen_bounds.c @@ -12,9 +12,7 @@ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* - * Oct 24, 2017 - * - * Purpose: This program is run to generate HDF5 data files used to test + * Purpose: This program is to generate HDF5 data files used to test * version bounds. * * Description @@ -25,10 +23,11 @@ * - bounds_latest_latest.h5 * - bounds_v18_latest.h5 * - bounds_v18_v18.h5 - * + * These files are copied to 1.6 and 1.8 libraries for verifying + * that they can or cannot read particular file format. */ -#include "hdf5.h" +#include "h5test.h" /*********************************************************************** * gen_earliest_latest() creates file "bounds_earliest_latest.h5" @@ -38,118 +37,121 @@ * - A chunked dataset with layout version 3, "DS_chunked_layout_3". (default) * - A chunked dataset with layout version 4, "DS_chunked_layout_4". (H5Pset_chunk_opts) * + * Return: SUCCEED/FAIL + * ***********************************************************************/ -#define FILENAME_E_L "bounds_earliest_latest.h5" + +/* File names for different file format */ +#define FILENAME_E_L "bounds_earliest_latest.h5" +#define FILENAME_E_18 "bounds_earliest_v18.h5" +#define FILENAME_L_L "bounds_latest_latest.h5" +#define FILENAME_18_L "bounds_v18_latest.h5" +#define FILENAME_18_18 "bounds_v18_v18.h5" /* 2-D dataset with fixed dimensions */ -#define RANK 2 -#define DIM1 100 -#define DIM2 200 -#define CHUNK_DIM1 50 -#define CHUNK_DIM2 50 +#define RANK 2 +#define DIM1 100 +#define DIM2 200 +#define CHK_DIM1 50 +#define CHK_DIM2 50 -int gen_earliest_latest() +static herr_t gen_earliest_latest(void) { - hid_t fid = -1; /* File ID */ - hid_t fapl = -1; /* File access property list ID */ - hid_t fcpl = -1; /* File creation property list ID */ - hid_t dcpl = -1; /* Dataset creation property list ID */ - hid_t space = -1; /* Dataspace ID */ - hid_t dset = -1; /* Dataset ID */ - hsize_t dims[RANK] = {DIM1, DIM2}; - hsize_t chunk_dims[RANK] = {CHUNK_DIM1, CHUNK_DIM2}; - float buf[DIM1][DIM2]; /* Buffer for writing data */ - int i, j; + hid_t fid = -1; /* File ID */ + hid_t fapl = -1; /* File access property list ID */ + hid_t fcpl = -1; /* File creation property list ID */ + hid_t dcpl = -1; /* Dataset creation property list ID */ + hid_t space = -1; /* Dataspace ID */ + hid_t dset = -1; /* Dataset ID */ + float *buf = NULL; /* Buffer for writing data */ + float *bufp = NULL; /* Pointer to data buffer */ + hsize_t dims[RANK] = {DIM1, DIM2}; /* Dimensions */ + hsize_t chunk_dims[RANK] = {CHK_DIM1, CHK_DIM2}; /* Dimensions of chunk */ + int i, j; + herr_t ret = SUCCEED; /* Generic return value */ /* Create file creation property list */ - if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) - goto error; + if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) TEST_ERROR; /* Create file access property list */ - if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) - goto error; + if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) TEST_ERROR; /* Set the "use the earliest/latest version of the format" bounds for creating objects in the file */ if(H5Pset_libver_bounds(fapl, H5F_LIBVER_EARLIEST, H5F_LIBVER_LATEST) < 0) - goto error; + TEST_ERROR; /* Create file */ if((fid = H5Fcreate(FILENAME_E_L, H5F_ACC_TRUNC, fcpl, fapl)) <0) - goto error; + TEST_ERROR; /* Close file property lists */ - if(H5Pclose(fapl) < 0) - goto error; - if(H5Pclose(fcpl) < 0) - goto error; + if(H5Pclose(fapl) < 0) TEST_ERROR; + if(H5Pclose(fcpl) < 0) TEST_ERROR; /* * Add a chunked dataset with layout version 3 (default) */ + buf = (float *)HDmalloc((size_t)DIM1 * (size_t)DIM2 * sizeof(float)); + if (buf == NULL) TEST_ERROR; /* Fill sample data */ + bufp = buf; for (i = 0; i < DIM1; i++) for (j = 0; j < DIM2; j++) - buf[i][j] = 100.0F; + *bufp = 100.0F; /* Create the dataspace */ - if((space = H5Screate_simple(RANK, dims, NULL)) < 0) - goto error; + if((space = H5Screate_simple(RANK, dims, NULL)) < 0) TEST_ERROR; /* Create the dataset creation property list */ - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) - goto error; + if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) TEST_ERROR; /* Set up for chunked data */ - if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) - goto error; + if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) TEST_ERROR; /* Create and write the dataset */ - if((dset = H5Dcreate2(fid, "DS_chunked_layout_3", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - if(H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto error; + dset = H5Dcreate2(fid, "DS_chunked_layout_3", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT); + if (dset < 0) TEST_ERROR; + + ret = H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); + if (ret < 0) TEST_ERROR; /* Close property list and dataset, will reuse dataspace */ - if(H5Pclose(dcpl) < 0) - goto error; - if(H5Dclose(dset) < 0) - goto error; + if(H5Pclose(dcpl) < 0) TEST_ERROR; + if(H5Dclose(dset) < 0) TEST_ERROR; /* * Add a chunked dataset with layout version 4 (H5Pset_chunk_opts) */ /* Create the dataset creation property list */ - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) - goto error; + if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) TEST_ERROR; /* Set up for chunked data */ - if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) - goto error; + if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) TEST_ERROR; /* Disable partial chunk filters, triggers layout version 4 */ if(H5Pset_chunk_opts(dcpl, H5D_CHUNK_DONT_FILTER_PARTIAL_CHUNKS) < 0) - goto error; + TEST_ERROR; /* Create and write the dataset */ - if((dset = H5Dcreate2(fid, "DS_chunked_layout_4", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - if(H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto error; + dset = H5Dcreate2(fid, "DS_chunked_layout_4", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT); + if (dset < 0) TEST_ERROR; + ret = H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); + if (ret < 0) TEST_ERROR; + + /* Release allocated buffer */ + HDfree(buf); + bufp = buf = NULL; /* Close everything */ - if(H5Pclose(dcpl) < 0) - goto error; - if(H5Dclose(dset) < 0) - goto error; - if(H5Sclose(space) < 0) - goto error; - if(H5Fclose(fid) < 0) - goto error; + if(H5Pclose(dcpl) < 0) TEST_ERROR; + if(H5Dclose(dset) < 0) TEST_ERROR; + if(H5Sclose(space) < 0) TEST_ERROR; + if(H5Fclose(fid) < 0) TEST_ERROR; - return 0; + return SUCCEED; error: H5E_BEGIN_TRY { @@ -159,8 +161,9 @@ error: H5Pclose(fcpl); H5Pclose(fapl); H5Fclose(fid); + HDfree(buf); } H5E_END_TRY; - return 1; + return FAIL; } /* gen_earliest_latest */ /*********************************************************************** @@ -170,83 +173,83 @@ error: * - Version 0 superblock (default) * - A chunked dataset with layout version 3, "DS_chunked_layout_3". (default) * + * Return: SUCCEED/FAIL + * ***********************************************************************/ -#define FILENAME_E_18 "bounds_earliest_v18.h5" - -int gen_earliest_v18() +static herr_t gen_earliest_v18(void) { - hid_t fid = -1; /* File ID */ - hid_t fapl = -1; /* File access property list ID */ - hid_t fcpl = -1; /* File creation property list ID */ - hid_t dcpl = -1; /* Dataset creation property list ID */ - hid_t space = -1; /* Dataspace ID */ - hid_t dset = -1; /* Dataset ID */ - hsize_t dims[RANK] = {DIM1, DIM2}; - hsize_t chunk_dims[RANK] = {CHUNK_DIM1, CHUNK_DIM2}; - float buf[DIM1][DIM2]; /* Buffer for writing data */ - int i, j; + hid_t fid = -1; /* File ID */ + hid_t fapl = -1; /* File access property list ID */ + hid_t fcpl = -1; /* File creation property list ID */ + hid_t dcpl = -1; /* Dataset creation property list ID */ + hid_t space = -1; /* Dataspace ID */ + hid_t dset = -1; /* Dataset ID */ + float *buf = NULL; /* Buffer for writing data */ + float *bufp = NULL; /* Pointer to data buffer */ + hsize_t dims[RANK] = {DIM1, DIM2}; /* Dimensions */ + hsize_t chunk_dims[RANK] = {CHK_DIM1, CHK_DIM2}; /* Dimensions of chunk */ + int i, j; + herr_t ret = SUCCEED; /* Generic return value */ /* Create file creation property list */ - if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) - goto error; + if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) TEST_ERROR; /* Create file access property list */ - if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) - goto error; + if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) TEST_ERROR; /* Set the "use the earliest/v18 version of the format" bounds for creating objects in the file */ if(H5Pset_libver_bounds(fapl, H5F_LIBVER_EARLIEST, H5F_LIBVER_V18) < 0) - goto error; + TEST_ERROR; /* Create file */ if((fid = H5Fcreate(FILENAME_E_18, H5F_ACC_TRUNC, fcpl, fapl)) <0) - goto error; + TEST_ERROR; /* Close file property lists */ - if(H5Pclose(fapl) < 0) - goto error; - if(H5Pclose(fcpl) < 0) - goto error; + if(H5Pclose(fapl) < 0) TEST_ERROR; + if(H5Pclose(fcpl) < 0) TEST_ERROR; /* * Add a chunked dataset with layout version 3 (default) */ + buf = (float *)HDmalloc((size_t)DIM1 * (size_t)DIM2 * sizeof(float)); + if (buf == NULL) TEST_ERROR; + /* Fill sample data */ + bufp = buf; for (i = 0; i < DIM1; i++) for (j = 0; j < DIM2; j++) - buf[i][j] = 100.0F; + *bufp = 100.0F; /* Create the dataspace */ - if((space = H5Screate_simple(RANK, dims, NULL)) < 0) - goto error; + if((space = H5Screate_simple(RANK, dims, NULL)) < 0) TEST_ERROR; /* Create the dataset creation property list */ - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) - goto error; + if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) TEST_ERROR; /* Set up for chunked data */ - if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) - goto error; + if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) TEST_ERROR; /* Create and write the dataset */ - if((dset = H5Dcreate2(fid, "DS_chunked_layout_3", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - if(H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto error; + dset = H5Dcreate2(fid, "DS_chunked_layout_3", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT); + if (dset < 0) TEST_ERROR; + + ret = H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); + if (ret < 0) TEST_ERROR; + + /* Release allocated buffer */ + HDfree(buf); + bufp = buf = NULL; /* Close everything */ - if(H5Pclose(dcpl) < 0) - goto error; - if(H5Dclose(dset) < 0) - goto error; - if(H5Sclose(space) < 0) - goto error; - if(H5Fclose(fid) < 0) - goto error; + if(H5Pclose(dcpl) < 0) TEST_ERROR; + if(H5Dclose(dset) < 0) TEST_ERROR; + if(H5Sclose(space) < 0) TEST_ERROR; + if(H5Fclose(fid) < 0) TEST_ERROR; - return 0; + return SUCCEED; error: H5E_BEGIN_TRY { @@ -256,8 +259,9 @@ error: H5Pclose(fcpl); H5Pclose(fapl); H5Fclose(fid); + HDfree(buf); } H5E_END_TRY; - return 1; + return FAIL; } /* gen_earliest_v18 */ /*********************************************************************** @@ -267,66 +271,69 @@ error: * - Version 3 superblock (H5Fcreate with H5F_ACC_SWMR_WRITE) * - A chunked dataset with layout version 4, "DS_chunked_layout_4". (H5Pset_chunk_opts) * + * Return: SUCCEED/FAIL + * ***********************************************************************/ -#define FILENAME_L_L "bounds_latest_latest.h5" - -int gen_latest_latest() +static herr_t gen_latest_latest(void) { - hid_t fid = -1; /* File ID */ - hid_t dcpl = -1; /* Dataset creation property list ID */ - hid_t space = -1; /* Dataspace ID */ - hid_t dset = -1; /* Dataset ID */ - hsize_t dims[RANK] = {DIM1, DIM2}; - hsize_t chunk_dims[RANK] = {CHUNK_DIM1, CHUNK_DIM2}; - float buf[DIM1][DIM2]; /* Buffer for writing data */ - int i, j; + hid_t fid = -1; /* File ID */ + hid_t dcpl = -1; /* Dataset creation property list ID */ + hid_t space = -1; /* Dataspace ID */ + hid_t dset = -1; /* Dataset ID */ + float *buf = NULL; /* Buffer for writing data */ + float *bufp = NULL; /* Pointer to data buffer */ + hsize_t dims[RANK] = {DIM1, DIM2}; /* Dimensions */ + hsize_t chunk_dims[RANK] = {CHK_DIM1, CHK_DIM2}; /* Dimensions of chunk */ + int i, j; + herr_t ret = SUCCEED; /* Generic return value */ /* Create file with H5F_ACC_SWMR_WRITE, triggers version 3 superblock */ - if((fid = H5Fcreate(FILENAME_L_L, H5F_ACC_SWMR_WRITE, H5P_DEFAULT, H5P_DEFAULT)) <0) - goto error; + fid = H5Fcreate(FILENAME_L_L, H5F_ACC_SWMR_WRITE, H5P_DEFAULT, H5P_DEFAULT); + if (fid < 0) TEST_ERROR; /* * Add a chunked dataset with layout version 4 (H5Pset_chunk_opts) */ + buf = (float *)HDmalloc((size_t)DIM1 * (size_t)DIM2 * sizeof(float)); + if (buf == NULL) TEST_ERROR; + /* Fill sample data */ + bufp = buf; for (i = 0; i < DIM1; i++) for (j = 0; j < DIM2; j++) - buf[i][j] = 100.0F; + *bufp = 100.0F; /* Create the dataspace */ - if((space = H5Screate_simple(RANK, dims, NULL)) < 0) - goto error; + if((space = H5Screate_simple(RANK, dims, NULL)) < 0) TEST_ERROR; /* Create the dataset creation property list */ - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) - goto error; + if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) TEST_ERROR; /* Set up for chunked data */ - if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) - goto error; + if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) TEST_ERROR; /* Disable partial chunk filters, triggers layout version 4 */ if(H5Pset_chunk_opts(dcpl, H5D_CHUNK_DONT_FILTER_PARTIAL_CHUNKS) < 0) - goto error; + TEST_ERROR; /* Create and write the dataset */ - if((dset = H5Dcreate2(fid, "DS_chunked_layout_4", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - if(H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto error; + dset = H5Dcreate2(fid, "DS_chunked_layout_4", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT); + if (dset < 0) TEST_ERROR; + ret = H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); + if (ret < 0) TEST_ERROR; + + /* Release allocated buffer */ + HDfree(buf); + bufp = buf = NULL; /* Close everything */ - if(H5Pclose(dcpl) < 0) - goto error; - if(H5Dclose(dset) < 0) - goto error; - if(H5Sclose(space) < 0) - goto error; - if(H5Fclose(fid) < 0) - goto error; + if(H5Pclose(dcpl) < 0) TEST_ERROR; + if(H5Dclose(dset) < 0) TEST_ERROR; + if(H5Sclose(space) < 0) TEST_ERROR; + if(H5Fclose(fid) < 0) TEST_ERROR; - return 0; + return SUCCEED; error: H5E_BEGIN_TRY { @@ -334,8 +341,9 @@ error: H5Sclose(space); H5Pclose(dcpl); H5Fclose(fid); + HDfree(buf); } H5E_END_TRY; - return 1; + return FAIL; } /* gen_latest_latest */ /*********************************************************************** @@ -345,83 +353,82 @@ error: * - Version 2 superblock * - A chunked dataset with layout version 3, "DS_chunked_layout_3". (default) * + * Return: SUCCEED/FAIL + * ***********************************************************************/ -#define FILENAME_18_L "bounds_v18_latest.h5" - -int gen_v18_latest() +static herr_t gen_v18_latest(void) { - hid_t fid = -1; /* File ID */ - hid_t fapl = -1; /* File access property list ID */ - hid_t fcpl = -1; /* File creation property list ID */ - hid_t dcpl = -1; /* Dataset creation property list ID */ - hid_t space = -1; /* Dataspace ID */ - hid_t dset = -1; /* Dataset ID */ - hsize_t dims[RANK] = {DIM1, DIM2}; - hsize_t chunk_dims[RANK] = {CHUNK_DIM1, CHUNK_DIM2}; - float buf[DIM1][DIM2]; /* Buffer for writing data */ - int i, j; + hid_t fid = -1; /* File ID */ + hid_t fapl = -1; /* File access property list ID */ + hid_t fcpl = -1; /* File creation property list ID */ + hid_t dcpl = -1; /* Dataset creation property list ID */ + hid_t space = -1; /* Dataspace ID */ + hid_t dset = -1; /* Dataset ID */ + float *buf = NULL; /* Buffer for writing data */ + float *bufp = NULL; /* Pointer to data buffer */ + hsize_t dims[RANK] = {DIM1, DIM2}; /* Dimensions */ + hsize_t chunk_dims[RANK] = {CHK_DIM1, CHK_DIM2}; /* Dimensions of chunk */ + int i, j; + herr_t ret = SUCCEED; /* Generic return value */ /* Create file creation property list */ - if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) - goto error; + if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) TEST_ERROR; /* Create file access property list */ - if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) - goto error; + if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) TEST_ERROR; /* Set the "use the v18/latest version of the format" bounds for creating objects in the file, also trigger version 2 superblock */ if(H5Pset_libver_bounds(fapl, H5F_LIBVER_V18, H5F_LIBVER_LATEST) < 0) - goto error; + TEST_ERROR; /* Create file */ if((fid = H5Fcreate(FILENAME_18_L, H5F_ACC_TRUNC, fcpl, fapl)) <0) - goto error; + TEST_ERROR; /* Close file property lists */ - if(H5Pclose(fapl) < 0) - goto error; - if(H5Pclose(fcpl) < 0) - goto error; + if(H5Pclose(fapl) < 0) TEST_ERROR; + if(H5Pclose(fcpl) < 0) TEST_ERROR; /* * Add a chunked dataset with layout version 3 (default) */ + buf = (float *)HDmalloc((size_t)DIM1 * (size_t)DIM2 * sizeof(float)); + if (buf == NULL) TEST_ERROR; + /* Fill sample data */ + bufp = buf; for (i = 0; i < DIM1; i++) for (j = 0; j < DIM2; j++) - buf[i][j] = 100.0F; + *bufp = 100.0F; /* Create the dataspace */ - if((space = H5Screate_simple(RANK, dims, NULL)) < 0) - goto error; + if((space = H5Screate_simple(RANK, dims, NULL)) < 0) TEST_ERROR; /* Create the dataset creation property list */ - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) - goto error; + if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) TEST_ERROR; /* Set up for chunked data */ - if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) - goto error; + if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) TEST_ERROR; /* Create and write the dataset */ - if((dset = H5Dcreate2(fid, "DS_chunked_layout_3", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - if(H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto error; + dset = H5Dcreate2(fid, "DS_chunked_layout_3", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT); + if (dset < 0) TEST_ERROR; + ret = H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); + if (ret < 0) TEST_ERROR; + + /* Release allocated buffer */ + HDfree(buf); + bufp = buf = NULL; /* Close property list and dataset, will reuse dataspace */ - if(H5Pclose(dcpl) < 0) - goto error; - if(H5Dclose(dset) < 0) - goto error; - if(H5Sclose(space) < 0) - goto error; - if(H5Fclose(fid) < 0) - goto error; + if(H5Pclose(dcpl) < 0) TEST_ERROR; + if(H5Dclose(dset) < 0) TEST_ERROR; + if(H5Sclose(space) < 0) TEST_ERROR; + if(H5Fclose(fid) < 0) TEST_ERROR; - return 0; + return SUCCEED; error: H5E_BEGIN_TRY { @@ -431,8 +438,9 @@ error: H5Pclose(fcpl); H5Pclose(fapl); H5Fclose(fid); + HDfree(buf); } H5E_END_TRY; - return 1; + return FAIL; } /* gen_v18_latest */ /*********************************************************************** @@ -443,128 +451,120 @@ error: * - A chunked dataset with layout version 3, "DS_chunked_layout_3". (default) * - A chunked dataset with layout version 4, "DS_chunked_layout_4". (H5Pset_chunk_opts) * + * Return: SUCCEED/FAIL + * ***********************************************************************/ -#define FILENAME_18_18 "bounds_v18_v18.h5" - -int gen_v18_v18() +static herr_t gen_v18_v18(void) { - hid_t fid = -1; /* File ID */ - hid_t fapl = -1; /* File access property list ID */ - hid_t fcpl = -1; /* File creation property list ID */ - hid_t dcpl = -1; /* Dataset creation property list ID */ - hid_t space = -1; /* Dataspace ID */ - hid_t dset = -1; /* Dataset ID */ - hsize_t dims[RANK] = {DIM1, DIM2}; - hsize_t chunk_dims[RANK] = {CHUNK_DIM1, CHUNK_DIM2}; - float buf[DIM1][DIM2]; /* Buffer for writing data */ - int i, j; + hid_t fid = -1; /* File ID */ + hid_t fapl = -1; /* File access property list ID */ + hid_t fcpl = -1; /* File creation property list ID */ + hid_t dcpl = -1; /* Dataset creation property list ID */ + hid_t space = -1; /* Dataspace ID */ + hid_t dset = -1; /* Dataset ID */ + float *buf = NULL; /* Buffer for writing data */ + float *bufp = NULL; /* Pointer to data buffer */ + hsize_t dims[RANK] = {DIM1, DIM2}; /* Dimensions */ + hsize_t chunk_dims[RANK] = {CHK_DIM1, CHK_DIM2}; /* Dimensions of chunk */ + int i, j; + herr_t ret = SUCCEED; /* Generic return value */ /* Create file creation property list */ - if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) - goto error; + if((fcpl = H5Pcreate(H5P_FILE_CREATE)) < 0) TEST_ERROR; /* Create file access property list */ - if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) - goto error; + if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) TEST_ERROR; /* Set the "use the v18 version of the format" bounds for creating objects in the file */ if(H5Pset_libver_bounds(fapl, H5F_LIBVER_V18, H5F_LIBVER_V18) < 0) - goto error; + TEST_ERROR; /* Create file */ if((fid = H5Fcreate(FILENAME_18_18, H5F_ACC_TRUNC, fcpl, fapl)) <0) - goto error; + TEST_ERROR; /* Close file property lists */ - if(H5Pclose(fapl) < 0) - goto error; - if(H5Pclose(fcpl) < 0) - goto error; + if(H5Pclose(fapl) < 0) TEST_ERROR; + if(H5Pclose(fcpl) < 0) TEST_ERROR; /* * Add a chunked dataset with layout version 3 (default) */ + buf = (float *)HDmalloc((size_t)DIM1 * (size_t)DIM2 * sizeof(float)); + if (buf == NULL) TEST_ERROR; + /* Fill sample data */ + bufp = buf; for (i = 0; i < DIM1; i++) for (j = 0; j < DIM2; j++) - buf[i][j] = 100.0F; + *bufp = 100.0F; /* Create the dataspace */ - if((space = H5Screate_simple(RANK, dims, NULL)) < 0) - goto error; + if((space = H5Screate_simple(RANK, dims, NULL)) < 0) TEST_ERROR; /* Create the dataset creation property list */ - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) - goto error; + if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) TEST_ERROR; /* Set up for chunked data */ - if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) - goto error; + if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) TEST_ERROR; /* Create and write the dataset */ - if((dset = H5Dcreate2(fid, "DS_chunked_layout_3", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - if(H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto error; + dset = H5Dcreate2(fid, "DS_chunked_layout_3", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT); + if (dset < 0) TEST_ERROR; + ret = H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); + if (ret < 0) TEST_ERROR; /* Close property list and dataset, will reuse dataspace */ - if(H5Pclose(dcpl) < 0) - goto error; - if(H5Dclose(dset) < 0) - goto error; + if(H5Pclose(dcpl) < 0) TEST_ERROR; + if(H5Dclose(dset) < 0) TEST_ERROR; /* Close the file, then reopen it with the latest version */ - if(H5Fclose(fid) < 0) - goto error; + if(H5Fclose(fid) < 0) TEST_ERROR; /* Create file access property list */ - if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) - goto error; + if((fapl = H5Pcreate(H5P_FILE_ACCESS)) < 0) TEST_ERROR; /* Set the "use the v18/latest version of the format" bounds for creating a layout version 4 object in the file */ if(H5Pset_libver_bounds(fapl, H5F_LIBVER_V18, H5F_LIBVER_LATEST) < 0) - goto error; + TEST_ERROR; if((fid = H5Fopen(FILENAME_18_18, H5F_ACC_RDWR, fapl)) < 0) - goto error; + TEST_ERROR; /* * Add a chunked dataset with layout version 4 (H5Pset_chunk_opts) */ /* Create the dataset creation property list */ - if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) - goto error; + if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0) TEST_ERROR; /* Set up for chunked data */ - if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) - goto error; + if(H5Pset_chunk(dcpl, 2, chunk_dims) < 0) TEST_ERROR; /* Disable partial chunk filters */ if(H5Pset_chunk_opts(dcpl, H5D_CHUNK_DONT_FILTER_PARTIAL_CHUNKS) < 0) - goto error; + TEST_ERROR; /* Create and write the dataset */ - if((dset = H5Dcreate2(fid, "DS_chunked_layout_4", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) - goto error; - if(H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf) < 0) - goto error; + dset = H5Dcreate2(fid, "DS_chunked_layout_4", H5T_NATIVE_FLOAT, space, H5P_DEFAULT, dcpl, H5P_DEFAULT); + if (dset < 0) TEST_ERROR; + ret = H5Dwrite(dset, H5T_NATIVE_FLOAT, H5S_ALL, H5S_ALL, H5P_DEFAULT, buf); + if (ret < 0) TEST_ERROR; + + /* Release allocated buffer */ + HDfree(buf); + bufp = buf = NULL; /* Close everything */ - if(H5Pclose(dcpl) < 0) - goto error; - if(H5Pclose(fapl) < 0) - goto error; - if(H5Dclose(dset) < 0) - goto error; - if(H5Sclose(space) < 0) - goto error; - if(H5Fclose(fid) < 0) - goto error; - return 0; + if(H5Pclose(dcpl) < 0) TEST_ERROR; + if(H5Pclose(fapl) < 0) TEST_ERROR; + if(H5Dclose(dset) < 0) TEST_ERROR; + if(H5Sclose(space) < 0) TEST_ERROR; + if(H5Fclose(fid) < 0) TEST_ERROR; + return SUCCEED; error: H5E_BEGIN_TRY { @@ -574,35 +574,31 @@ error: H5Pclose(fcpl); H5Pclose(fapl); H5Fclose(fid); + HDfree(buf); } H5E_END_TRY; - return 1; + return FAIL; } /* gen_v18_v18 */ int main(void) { /* Generate file bounds_earliest_latest.h5 */ - if (gen_earliest_latest() < 0) - goto error; + if (gen_earliest_latest() < 0) TEST_ERROR; /* Generate file bounds_earliest_v18.h5 */ - if (gen_earliest_v18() < 0) - goto error; + if (gen_earliest_v18() < 0) TEST_ERROR; /* Generate file bounds_latest_latest.h5 */ - if (gen_latest_latest() < 0) - goto error; + if (gen_latest_latest() < 0) TEST_ERROR; /* Generate file bounds_v18_latest.h5 */ - if (gen_v18_latest() < 0) - goto error; + if (gen_v18_latest() < 0) TEST_ERROR; /* Generate file bounds_v18_v18.h5 */ - if (gen_v18_v18() < 0) - goto error; + if (gen_v18_v18() < 0) TEST_ERROR; - return 0; + return EXIT_SUCCESS; error: - return 1; + return EXIT_FAILURE; } |