summaryrefslogtreecommitdiffstats
path: root/tools/h5repack/testh5repack_make.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/h5repack/testh5repack_make.c')
-rw-r--r--tools/h5repack/testh5repack_make.c1390
1 files changed, 0 insertions, 1390 deletions
diff --git a/tools/h5repack/testh5repack_make.c b/tools/h5repack/testh5repack_make.c
deleted file mode 100644
index 883244b..0000000
--- a/tools/h5repack/testh5repack_make.c
+++ /dev/null
@@ -1,1390 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#include "hdf5.h"
-#include "h5test.h"
-#include "h5repack.h"
-#include "testh5repack.h"
-
-#define DIM1 40
-#define DIM2 20
-#define CDIM1 DIM1/2
-#define CDIM2 DIM2/2
-#define RANK 2
-#define GBLL ((unsigned long_long) 1024*1024*1024)
-
-
-int make_all_objects(hid_t loc_id);
-int make_attributes(hid_t loc_id);
-int make_hlinks(hid_t loc_id);
-int make_early(void);
-int make_layout(hid_t loc_id);
-#ifdef H5_HAVE_FILTER_SZIP
-int make_szip(hid_t loc_id);
-#endif /* H5_HAVE_FILTER_SZIP */
-int make_deflate(hid_t loc_id);
-int make_shuffle(hid_t loc_id);
-int make_fletcher32(hid_t loc_id);
-int make_nbit(hid_t loc_id);
-int make_scaleoffset(hid_t loc_id);
-int make_all(hid_t loc_id);
-int make_fill(hid_t loc_id);
-int make_big(hid_t loc_id);
-
-
-
-/*-------------------------------------------------------------------------
- * Function: make_testfiles
- *
- * Purpose: make a test file with all types of HDF5 objects,
- * datatypes and filters
- *
- *-------------------------------------------------------------------------
- */
-int make_testfiles(void)
-{
- hid_t loc_id; /* file ID */
-
- TESTING(" generating datasets");
-
-/*-------------------------------------------------------------------------
- * create a file for general copy test
- *-------------------------------------------------------------------------
- */
- if((loc_id = H5Fcreate(FNAME0,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
- return -1;
- if (make_fill(loc_id)<0)
- goto out;
- if(H5Fclose(loc_id)<0)
- return -1;
-
-/*-------------------------------------------------------------------------
- * create another file for general copy test (all datatypes)
- *-------------------------------------------------------------------------
- */
- if((loc_id = H5Fcreate(FNAME1,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
- return -1;
- if (make_all_objects(loc_id)<0)
- goto out;
- if(H5Fclose(loc_id)<0)
- return -1;
-
-/*-------------------------------------------------------------------------
- * create a file for attributes copy test
- *-------------------------------------------------------------------------
- */
- if((loc_id = H5Fcreate(FNAME2,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
- return -1;
- if (make_attributes(loc_id)<0)
- goto out;
- if(H5Fclose(loc_id)<0)
- return -1;
-/*-------------------------------------------------------------------------
- * create a file for hard links test
- *-------------------------------------------------------------------------
- */
- if((loc_id = H5Fcreate(FNAME3,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
- return -1;
- if (make_hlinks(loc_id)<0)
- goto out;
- if(H5Fclose(loc_id)<0)
- return -1;
-/*-------------------------------------------------------------------------
- * create a file for layouts test
- *-------------------------------------------------------------------------
- */
- if((loc_id = H5Fcreate(FNAME4,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
- return -1;
- if (make_layout(loc_id)<0)
- goto out;
- if(H5Fclose(loc_id)<0)
- return -1;
-
-/*-------------------------------------------------------------------------
- * create a file for the H5D_ALLOC_TIME_EARLY test
- *-------------------------------------------------------------------------
- */
- if (make_early()<0)
- goto out;
-
-/*-------------------------------------------------------------------------
- * create a file with the SZIP filter
- *-------------------------------------------------------------------------
- */
-#ifdef H5_HAVE_FILTER_SZIP
- if((loc_id = H5Fcreate(FNAME7,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
- return -1;
- if (make_szip(loc_id)<0)
- goto out;
- if(H5Fclose(loc_id)<0)
- return -1;
-#endif /* H5_HAVE_FILTER_SZIP */
-
-/*-------------------------------------------------------------------------
- * create a file with the deflate filter
- *-------------------------------------------------------------------------
- */
- if((loc_id = H5Fcreate(FNAME8,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
- return -1;
- if (make_deflate(loc_id)<0)
- goto out;
- if(H5Fclose(loc_id)<0)
- return -1;
-
-/*-------------------------------------------------------------------------
- * create a file with the shuffle filter
- *-------------------------------------------------------------------------
- */
- if((loc_id = H5Fcreate(FNAME9,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
- return -1;
- if (make_shuffle(loc_id)<0)
- goto out;
- if(H5Fclose(loc_id)<0)
- return -1;
-
-/*-------------------------------------------------------------------------
- * create a file with the fletcher32 filter
- *-------------------------------------------------------------------------
- */
- if((loc_id = H5Fcreate(FNAME10,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
- return -1;
- if (make_fletcher32(loc_id)<0)
- goto out;
- if(H5Fclose(loc_id)<0)
- return -1;
-
-/*-------------------------------------------------------------------------
- * create a file with all the filters
- *-------------------------------------------------------------------------
- */
- if((loc_id = H5Fcreate(FNAME11,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
- return -1;
- if (make_all(loc_id)<0)
- goto out;
- if(H5Fclose(loc_id)<0)
- return -1;
-
-/*-------------------------------------------------------------------------
- * create a file with the nbit filter
- *-------------------------------------------------------------------------
- */
- if((loc_id = H5Fcreate(FNAME12,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
- return -1;
- if (make_nbit(loc_id)<0)
- goto out;
- if(H5Fclose(loc_id)<0)
- return -1;
-
-/*-------------------------------------------------------------------------
- * create a file with the scaleoffset filter
- *-------------------------------------------------------------------------
- */
- if((loc_id = H5Fcreate(FNAME13,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
- return -1;
- if (make_scaleoffset(loc_id)<0)
- goto out;
- if(H5Fclose(loc_id)<0)
- return -1;
-
-/*-------------------------------------------------------------------------
- * create a big file
- *-------------------------------------------------------------------------
- */
- if((loc_id = H5Fcreate(FNAME14,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
- return -1;
- if (make_big(loc_id)<0)
- goto out;
- if(H5Fclose(loc_id)<0)
- return -1;
- PASSED();
-
- return 0;
-
-out:
- H5Fclose(loc_id);
- return -1;
-}
-
-
-
-/*-------------------------------------------------------------------------
- * Function: make_all_objects
- *
- * Purpose: make a test file with all types of HDF5 objects, datatypes
- *
- *-------------------------------------------------------------------------
- */
-int make_all_objects(hid_t loc_id)
-{
- hid_t dset_id;
- hid_t group_id;
- hid_t type_id;
- hid_t root_id;
- hid_t space_id;
- hsize_t dims[1]={2};
- /* Compound datatype */
- typedef struct s_t
- {
- int a;
- float b;
- } s_t;
-
-/*-------------------------------------------------------------------------
- * H5G_DATASET
- *-------------------------------------------------------------------------
- */
- space_id = H5Screate_simple(1,dims,NULL);
- dset_id = H5Dcreate(loc_id,"dset_referenced",H5T_NATIVE_INT,space_id,H5P_DEFAULT);
- H5Sclose(space_id);
-
-/*-------------------------------------------------------------------------
- * H5G_GROUP
- *-------------------------------------------------------------------------
- */
- group_id = H5Gcreate(loc_id,"g1",0);
- root_id = H5Gopen(loc_id, "/");
-
-/*-------------------------------------------------------------------------
- * H5G_TYPE
- *-------------------------------------------------------------------------
- */
-
- /* Create a memory compound datatype */
- type_id = H5Tcreate (H5T_COMPOUND, sizeof(s_t));
- H5Tinsert(type_id, "a", HOFFSET(s_t, a), H5T_NATIVE_INT);
- H5Tinsert(type_id, "b", HOFFSET(s_t, b), H5T_NATIVE_FLOAT);
- /* Commit compound datatype and close it */
- H5Tcommit(loc_id, "type", type_id);
- H5Tclose(type_id);
-
-/*-------------------------------------------------------------------------
- * H5G_LINK
- *-------------------------------------------------------------------------
- */
-
- H5Glink(loc_id, H5L_TYPE_SOFT, "dset", "link");
-
-/*-------------------------------------------------------------------------
- * H5G_UDLINK
- *-------------------------------------------------------------------------
- */
- /* Create an external link. Other UD links are not supported by h5repack */
- H5Lcreate_external("file", "path", loc_id, "ext_link", H5P_DEFAULT, H5P_DEFAULT);
-
-/*-------------------------------------------------------------------------
- * write a series of datasetes
- *-------------------------------------------------------------------------
- */
-
- write_dset_in(root_id,"dset_referenced",loc_id,0);
-
- /* Close */
- H5Dclose(dset_id);
- H5Gclose(group_id);
- H5Gclose(root_id);
-
- return 0;
-
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: make_attributes
- *
- * Purpose: make a test file with all types of attributes
- *
- *-------------------------------------------------------------------------
- */
-int make_attributes(hid_t loc_id)
-{
- hid_t dset_id;
- hid_t group_id;
- hid_t root_id;
- hid_t space_id;
- hsize_t dims[1]={2};
-
-
-/*-------------------------------------------------------------------------
- * H5G_DATASET
- *-------------------------------------------------------------------------
- */
-
- space_id = H5Screate_simple(1,dims,NULL);
- dset_id = H5Dcreate(loc_id,"dset",H5T_NATIVE_INT,space_id,H5P_DEFAULT);
- H5Sclose(space_id);
-
-/*-------------------------------------------------------------------------
- * H5G_GROUP
- *-------------------------------------------------------------------------
- */
- group_id = H5Gcreate(loc_id,"g1",0);
- root_id = H5Gopen(loc_id, "/");
-
-/*-------------------------------------------------------------------------
- * write a series of attributes on the dataset, group, and root group
- *-------------------------------------------------------------------------
- */
-
- write_attr_in(dset_id,"dset",loc_id,0);
- write_attr_in(group_id,"dset",loc_id,0);
- write_attr_in(root_id,"dset",loc_id,0);
-
- /* Close */
- H5Dclose(dset_id);
- H5Gclose(group_id);
- H5Gclose(root_id);
-
- return 0;
-
-}
-
-/*-------------------------------------------------------------------------
- * Function: make_hlinks
- *
- * Purpose: make a test file with hard links
- *
- *-------------------------------------------------------------------------
- */
-int make_hlinks(hid_t loc_id)
-{
- hid_t group1_id;
- hid_t group2_id;
- hid_t group3_id;
- hsize_t dims[2]={3,2};
- int buf[3][2]= {{1,1},{1,2},{2,2}};
-
-/*-------------------------------------------------------------------------
- * create a dataset and some hard links to it
- *-------------------------------------------------------------------------
- */
-
- if (write_dset(loc_id,2,dims,"dset",H5T_NATIVE_INT,buf)<0)
- return -1;
- if (H5Glink(loc_id, H5L_TYPE_HARD, "dset", "link1 to dset")<0)
- return -1;
- if (H5Glink(loc_id, H5L_TYPE_HARD, "dset", "link2 to dset")<0)
- return -1;
- if (H5Glink(loc_id, H5L_TYPE_HARD, "dset", "link3 to dset")<0)
- return -1;
-
-
-/*-------------------------------------------------------------------------
- * create a group and some hard links to it
- *-------------------------------------------------------------------------
- */
-
- if ((group1_id = H5Gcreate(loc_id,"g1",0))<0)
- return -1;
- if ((group2_id = H5Gcreate(group1_id,"g2",0))<0)
- return -1;
- if ((group3_id = H5Gcreate(group2_id,"g3",0))<0)
- return -1;
-
- if (H5Glink2(loc_id, "g1", H5L_TYPE_HARD, group2_id, "link1 to g1")<0)
- return -1;
- if (H5Glink2(group1_id, "g2", H5L_TYPE_HARD, group3_id, "link1 to g2")<0)
- return -1;
-
- H5Gclose(group1_id);
- H5Gclose(group2_id);
- H5Gclose(group3_id);
-
- return 0;
-
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: make_szip
- *
- * Purpose: make a dataset with the SZIP filter
- *
- *-------------------------------------------------------------------------
- */
-#ifdef H5_HAVE_FILTER_SZIP
-int make_szip(hid_t loc_id)
-{
- hid_t dcpl; /* dataset creation property list */
- hid_t sid; /* dataspace ID */
- unsigned szip_options_mask=H5_SZIP_ALLOW_K13_OPTION_MASK|H5_SZIP_NN_OPTION_MASK;
- unsigned szip_pixels_per_block=8;
- hsize_t dims[RANK]={DIM1,DIM2};
- hsize_t chunk_dims[RANK]={CDIM1,CDIM2};
- int buf[DIM1][DIM2];
- int i, j, n;
- int szip_can_encode = 0;
-
- for (i=n=0; i<DIM1; i++){
- for (j=0; j<DIM2; j++){
- buf[i][j]=n++;
- }
- }
- /* create a space */
- if((sid = H5Screate_simple(RANK, dims, NULL))<0)
- return -1;
- /* create a dcpl */
- if ((dcpl = H5Pcreate(H5P_DATASET_CREATE))<0)
- goto out;
- /* set up chunk */
- if(H5Pset_chunk(dcpl, RANK, chunk_dims)<0)
- goto out;
-
-/*-------------------------------------------------------------------------
- * SZIP
- *-------------------------------------------------------------------------
- */
- /* Make sure encoding is enabled */
-if (h5tools_can_encode(H5Z_FILTER_SZIP) == 1) {
- szip_can_encode = 1;
-}
-if (szip_can_encode) {
- /* set szip data */
- if(H5Pset_szip (dcpl,szip_options_mask,szip_pixels_per_block)<0)
- goto out;
- if (make_dset(loc_id,"dset_szip",sid,dcpl,buf)<0)
- goto out;
-} else {
- /* WARNING? SZIP is decoder only, can't generate test files */
-}
-
- if(H5Sclose(sid)<0)
- goto out;
- if(H5Pclose(dcpl)<0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Pclose(dcpl);
- H5Sclose(sid);
- } H5E_END_TRY;
- return -1;
-}
-#endif /* H5_HAVE_FILTER_SZIP */
-
-
-
-/*-------------------------------------------------------------------------
- * Function: make_deflate
- *
- * Purpose: make a dataset with the deflate filter
- *
- *-------------------------------------------------------------------------
- */
-int make_deflate(hid_t loc_id)
-{
- hid_t dcpl; /* dataset creation property list */
- hid_t sid; /* dataspace ID */
- hsize_t dims[RANK]={DIM1,DIM2};
- hsize_t chunk_dims[RANK]={CDIM1,CDIM2};
- int buf[DIM1][DIM2];
- int i, j, n;
-
- for (i=n=0; i<DIM1; i++){
- for (j=0; j<DIM2; j++){
- buf[i][j]=n++;
- }
- }
-
- /* create a space */
- if((sid = H5Screate_simple(RANK, dims, NULL))<0)
- return -1;
- /* create a dcpl */
- if ((dcpl = H5Pcreate(H5P_DATASET_CREATE))<0)
- goto out;
- /* set up chunk */
- if(H5Pset_chunk(dcpl, RANK, chunk_dims)<0)
- goto out;
-/*-------------------------------------------------------------------------
- * GZIP
- *-------------------------------------------------------------------------
- */
-#if defined (H5_HAVE_FILTER_DEFLATE)
- /* set deflate data */
- if(H5Pset_deflate(dcpl, 9)<0)
- goto out;
- if (make_dset(loc_id,"dset_deflate",sid,dcpl,buf)<0)
- goto out;
-#endif
-
-/*-------------------------------------------------------------------------
- * close space and dcpl
- *-------------------------------------------------------------------------
- */
- if(H5Sclose(sid)<0)
- goto out;
- if(H5Pclose(dcpl)<0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Pclose(dcpl);
- H5Sclose(sid);
- } H5E_END_TRY;
- return -1;
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: make_shuffle
- *
- * Purpose: make a dataset with the shuffle filter
- *
- *-------------------------------------------------------------------------
- */
-int make_shuffle(hid_t loc_id)
-{
- hid_t dcpl; /* dataset creation property list */
- hid_t sid; /* dataspace ID */
- hsize_t dims[RANK]={DIM1,DIM2};
- hsize_t chunk_dims[RANK]={CDIM1,CDIM2};
- int buf[DIM1][DIM2];
- int i, j, n;
-
- for (i=n=0; i<DIM1; i++){
- for (j=0; j<DIM2; j++){
- buf[i][j]=n++;
- }
- }
- /* create a space */
- if((sid = H5Screate_simple(RANK, dims, NULL))<0)
- return -1;
- /* create a dcpl */
- if ((dcpl = H5Pcreate(H5P_DATASET_CREATE))<0)
- goto out;
- /* set up chunk */
- if(H5Pset_chunk(dcpl, RANK, chunk_dims)<0)
- goto out;
-
-/*-------------------------------------------------------------------------
- * shuffle
- *-------------------------------------------------------------------------
- */
-#if defined (H5_HAVE_FILTER_SHUFFLE)
- /* set the shuffle filter */
- if (H5Pset_shuffle(dcpl)<0)
- goto out;
- if (make_dset(loc_id,"dset_shuffle",sid,dcpl,buf)<0)
- goto out;
-#endif
-
-/*-------------------------------------------------------------------------
- * close space and dcpl
- *-------------------------------------------------------------------------
- */
- if(H5Sclose(sid)<0)
- goto out;
- if(H5Pclose(dcpl)<0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Pclose(dcpl);
- H5Sclose(sid);
- } H5E_END_TRY;
- return -1;
-}
-
-/*-------------------------------------------------------------------------
- * Function: make_fletcher32
- *
- * Purpose: make a dataset with the fletcher32 filter
- *
- *-------------------------------------------------------------------------
- */
-int make_fletcher32(hid_t loc_id)
-{
- hid_t dcpl; /* dataset creation property list */
- hid_t sid; /* dataspace ID */
- hsize_t dims[RANK]={DIM1,DIM2};
- hsize_t chunk_dims[RANK]={CDIM1,CDIM2};
- int buf[DIM1][DIM2];
- int i, j, n;
-
- for (i=n=0; i<DIM1; i++){
- for (j=0; j<DIM2; j++){
- buf[i][j]=n++;
- }
- }
- /* create a space */
- if((sid = H5Screate_simple(RANK, dims, NULL))<0)
- return -1;
- /* create a dataset creation property list; the same DCPL is used for all dsets */
- if ((dcpl = H5Pcreate(H5P_DATASET_CREATE))<0)
- goto out;
- /* set up chunk */
- if(H5Pset_chunk(dcpl, RANK, chunk_dims)<0)
- goto out;
-
-
-/*-------------------------------------------------------------------------
- * fletcher32
- *-------------------------------------------------------------------------
- */
-#if defined (H5_HAVE_FILTER_FLETCHER32)
- /* remove the filters from the dcpl */
- if (H5Premove_filter(dcpl,H5Z_FILTER_ALL)<0)
- goto out;
- /* set the checksum filter */
- if (H5Pset_fletcher32(dcpl)<0)
- goto out;
- if (make_dset(loc_id,"dset_fletcher32",sid,dcpl,buf)<0)
- goto out;
-#endif
-
-/*-------------------------------------------------------------------------
- * close space and dcpl
- *-------------------------------------------------------------------------
- */
- if(H5Sclose(sid)<0)
- goto out;
- if(H5Pclose(dcpl)<0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Pclose(dcpl);
- H5Sclose(sid);
- } H5E_END_TRY;
- return -1;
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: make_nbit
- *
- * Purpose: make a dataset with the nbit filter
- *
- *-------------------------------------------------------------------------
- */
-int make_nbit(hid_t loc_id)
-{
- hid_t dcpl; /* dataset creation property list */
- hid_t sid; /* dataspace ID */
- hid_t dtid;
- hid_t dsid;
- hsize_t dims[RANK]={DIM1,DIM2};
- hsize_t chunk_dims[RANK]={CDIM1,CDIM2};
- int buf[DIM1][DIM2];
- int i, j, n;
-
- for (i=n=0; i<DIM1; i++){
- for (j=0; j<DIM2; j++){
- buf[i][j]=n++;
- }
- }
- /* create a space */
- if((sid = H5Screate_simple(RANK, dims, NULL))<0)
- return -1;
- /* create a dataset creation property list; the same DCPL is used for all dsets */
- if ((dcpl = H5Pcreate(H5P_DATASET_CREATE))<0)
- goto out;
- /* set up chunk */
- if(H5Pset_chunk(dcpl, RANK, chunk_dims)<0)
- goto out;
-
- dtid = H5Tcopy(H5T_NATIVE_INT);
- if (H5Tset_precision(dtid,(H5Tget_precision(dtid) - 1)) < 0)
- {
- H5Tclose(dtid);
- goto out;
- }
-
-#if defined (H5_HAVE_FILTER_NBIT)
- /* remove the filters from the dcpl */
- if (H5Premove_filter(dcpl,H5Z_FILTER_ALL)<0)
- {
- H5Tclose(dtid);
- goto out;
- }
- if (H5Pset_nbit(dcpl)<0)
- {
- H5Tclose(dtid);
- goto out;
- }
- if((dsid = H5Dcreate (loc_id,"dset_nbit",dtid,sid,dcpl))<0)
- {
- H5Tclose(dtid);
- goto out;
- }
- if(H5Dwrite(dsid,dtid,H5S_ALL,H5S_ALL,H5P_DEFAULT,buf)<0)
- {
- H5Tclose(dtid);
- goto out;
- }
- H5Dclose(dsid);
-
- if (H5Premove_filter(dcpl,H5Z_FILTER_ALL)<0)
- {
- H5Tclose(dtid);
- goto out;
- }
- if((dsid = H5Dcreate (loc_id,"dset_int31",dtid,sid,dcpl))<0)
- {
- H5Tclose(dtid);
- goto out;
- }
- if(H5Dwrite(dsid,dtid,H5S_ALL,H5S_ALL,H5P_DEFAULT,buf)<0)
- {
- H5Tclose(dtid);
- goto out;
- }
- H5Dclose(dsid);
-#endif
-
-/*-------------------------------------------------------------------------
- * close
- *-------------------------------------------------------------------------
- */
- if(H5Sclose(sid)<0)
- goto out;
- if(H5Pclose(dcpl)<0)
- goto out;
- if (H5Tclose(dtid)<0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Pclose(dcpl);
- H5Sclose(sid);
- } H5E_END_TRY;
- return -1;
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: make_scaleoffset
- *
- * Purpose: make a dataset with the scaleoffset filter
- *
- *-------------------------------------------------------------------------
- */
-int make_scaleoffset(hid_t loc_id)
-{
- hid_t dcpl; /* dataset creation property list */
- hid_t sid; /* dataspace ID */
- hid_t dtid;
- hid_t dsid;
- hsize_t dims[RANK]={DIM1,DIM2};
- hsize_t chunk_dims[RANK]={CDIM1,CDIM2};
- int buf[DIM1][DIM2];
- int i, j, n;
-
- for (i=n=0; i<DIM1; i++){
- for (j=0; j<DIM2; j++){
- buf[i][j]=n++;
- }
- }
- /* create a space */
- if((sid = H5Screate_simple(RANK, dims, NULL))<0)
- return -1;
- /* create a dataset creation property list; the same DCPL is used for all dsets */
- if ((dcpl = H5Pcreate(H5P_DATASET_CREATE))<0)
- goto out;
- /* set up chunk */
- if(H5Pset_chunk(dcpl, RANK, chunk_dims)<0)
- goto out;
-
- dtid = H5Tcopy(H5T_NATIVE_INT);
-
-#if defined (H5_HAVE_FILTER_SCALEOFFSET)
- /* remove the filters from the dcpl */
- if (H5Premove_filter(dcpl,H5Z_FILTER_ALL)<0)
- {
- H5Tclose(dtid);
- goto out;
- }
- if (H5Pset_scaleoffset(dcpl,H5Z_SO_INT,31)<0)
- {
- H5Tclose(dtid);
- goto out;
- }
- if((dsid = H5Dcreate (loc_id,"dset_scaleoffset",dtid,sid,dcpl))<0)
- {
- H5Tclose(dtid);
- goto out;
- }
- if(H5Dwrite(dsid,dtid,H5S_ALL,H5S_ALL,H5P_DEFAULT,buf)<0)
- {
- H5Tclose(dtid);
- goto out;
- }
- H5Dclose(dsid);
- if((dsid = H5Dcreate (loc_id,"dset_none",dtid,sid,H5P_DEFAULT))<0)
- {
- H5Tclose(dtid);
- goto out;
- }
- if(H5Dwrite(dsid,dtid,H5S_ALL,H5S_ALL,H5P_DEFAULT,buf)<0)
- {
- H5Tclose(dtid);
- goto out;
- }
- H5Tclose(dtid);
- H5Dclose(dsid);
-#endif
-
-/*-------------------------------------------------------------------------
- * close space and dcpl
- *-------------------------------------------------------------------------
- */
- if(H5Sclose(sid)<0)
- goto out;
- if(H5Pclose(dcpl)<0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Pclose(dcpl);
- H5Sclose(sid);
- } H5E_END_TRY;
- return -1;
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: make_all
- *
- * Purpose: make a file with all filters
- *
- *-------------------------------------------------------------------------
- */
-int make_all(hid_t loc_id)
-{
- hid_t dcpl; /* dataset creation property list */
- hid_t sid; /* dataspace ID */
-#if defined (H5_HAVE_FILTER_NBIT)
- hid_t dtid;
- hid_t dsid;
-#endif /* H5_HAVE_FILTER_NBIT */
-#if defined (H5_HAVE_FILTER_SZIP)
- unsigned szip_options_mask=H5_SZIP_ALLOW_K13_OPTION_MASK|H5_SZIP_NN_OPTION_MASK;
- unsigned szip_pixels_per_block=8;
-#endif /* H5_HAVE_FILTER_SZIP */
- hsize_t dims[RANK]={DIM1,DIM2};
- hsize_t chunk_dims[RANK]={CDIM1,CDIM2};
- int buf[DIM1][DIM2];
- int i, j, n;
-#if defined (H5_HAVE_FILTER_SZIP)
- int szip_can_encode = 0;
-#endif
-
- for (i=n=0; i<DIM1; i++){
- for (j=0; j<DIM2; j++){
- buf[i][j]=n++;
- }
- }
- /* create a space */
- if((sid = H5Screate_simple(RANK, dims, NULL))<0)
- return -1;
- /* create a dataset creation property list; the same DCPL is used for all dsets */
- if ((dcpl = H5Pcreate(H5P_DATASET_CREATE))<0)
- goto out;
- /* set up chunk */
- if(H5Pset_chunk(dcpl, RANK, chunk_dims)<0)
- goto out;
-
-#if defined (H5_HAVE_FILTER_SHUFFLE)
- /* set the shuffle filter */
- if (H5Pset_shuffle(dcpl)<0)
- goto out;
-#endif
-
-#if defined (H5_HAVE_FILTER_FLETCHER32)
- /* set the checksum filter */
- if (H5Pset_fletcher32(dcpl)<0)
- goto out;
-#endif
-
-#if defined (H5_HAVE_FILTER_SZIP)
-if (h5tools_can_encode(H5Z_FILTER_SZIP) == 1) {
- szip_can_encode = 1;
-}
-if (szip_can_encode) {
- /* set szip data */
- if(H5Pset_szip (dcpl,szip_options_mask,szip_pixels_per_block)<0)
- goto out;
-} else {
- /* WARNING? SZIP is decoder only, can't generate test data using szip */
-}
-#endif
-
-#if defined (H5_HAVE_FILTER_DEFLATE)
- /* set deflate data */
- if(H5Pset_deflate(dcpl, 9)<0)
- goto out;
-#endif
-
- if (make_dset(loc_id,"dset_all",sid,dcpl,buf)<0)
- goto out;
-
-/*-------------------------------------------------------------------------
- * fletcher32
- *-------------------------------------------------------------------------
- */
-#if defined (H5_HAVE_FILTER_FLETCHER32)
- /* remove the filters from the dcpl */
- if (H5Premove_filter(dcpl,H5Z_FILTER_ALL)<0)
- goto out;
- /* set the checksum filter */
- if (H5Pset_fletcher32(dcpl)<0)
- goto out;
- if (make_dset(loc_id,"dset_fletcher32",sid,dcpl,buf)<0)
- goto out;
-#endif
-
-/*-------------------------------------------------------------------------
- * SZIP
- *-------------------------------------------------------------------------
- */
- /* Make sure encoding is enabled */
-#if defined (H5_HAVE_FILTER_SZIP)
-if (szip_can_encode) {
- /* remove the filters from the dcpl */
- if (H5Premove_filter(dcpl,H5Z_FILTER_ALL)<0)
- goto out;
- /* set szip data */
- if(H5Pset_szip (dcpl,szip_options_mask,szip_pixels_per_block)<0)
- goto out;
- if (make_dset(loc_id,"dset_szip",sid,dcpl,buf)<0)
- goto out;
-} else {
- /* WARNING? SZIP is decoder only, can't generate test dataset */
-}
-#endif
-
-/*-------------------------------------------------------------------------
- * shuffle
- *-------------------------------------------------------------------------
- */
-#if defined (H5_HAVE_FILTER_SHUFFLE)
- /* remove the filters from the dcpl */
- if (H5Premove_filter(dcpl,H5Z_FILTER_ALL)<0)
- goto out;
- /* set the shuffle filter */
- if (H5Pset_shuffle(dcpl)<0)
- goto out;
- if (make_dset(loc_id,"dset_shuffle",sid,dcpl,buf)<0)
- goto out;
-#endif
-
-/*-------------------------------------------------------------------------
- * GZIP
- *-------------------------------------------------------------------------
- */
-#if defined (H5_HAVE_FILTER_DEFLATE)
- /* remove the filters from the dcpl */
- if (H5Premove_filter(dcpl,H5Z_FILTER_ALL)<0)
- goto out;
- /* set deflate data */
- if(H5Pset_deflate(dcpl, 1)<0)
- goto out;
- if (make_dset(loc_id,"dset_deflate",sid,dcpl,buf)<0)
- goto out;
-#endif
-
-
-/*-------------------------------------------------------------------------
- * nbit
- *-------------------------------------------------------------------------
- */
-#if defined (H5_HAVE_FILTER_NBIT)
- /* remove the filters from the dcpl */
- if (H5Premove_filter(dcpl,H5Z_FILTER_ALL)<0)
- goto out;
- /* set the shuffle filter */
- if (H5Pset_nbit(dcpl)<0)
- goto out;
- dtid = H5Tcopy(H5T_NATIVE_INT);
- H5Tset_precision(dtid,(H5Tget_precision(dtid)-1));
- if((dsid = H5Dcreate (loc_id,"dset_nbit",dtid,sid,dcpl))<0)
- goto out;
- if(H5Dwrite(dsid,dtid,H5S_ALL,H5S_ALL,H5P_DEFAULT,buf)<0)
- goto out;
-
- /* close */
- if(H5Tclose(dtid)<0)
- return -1;
- if(H5Dclose(dsid)<0)
- return -1;
-#endif
-
-/*-------------------------------------------------------------------------
- * close space and dcpl
- *-------------------------------------------------------------------------
- */
- if(H5Sclose(sid)<0)
- goto out;
- if(H5Pclose(dcpl)<0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Pclose(dcpl);
- H5Sclose(sid);
- } H5E_END_TRY;
- return -1;
-}
-
-
-
-/*-------------------------------------------------------------------------
- * Function: make_early
- *
- * Purpose: create a file for the H5D_ALLOC_TIME_EARLY test
- *
- *-------------------------------------------------------------------------
- */
-int make_early(void)
-{
- hsize_t dims[1] ={3000};
- hsize_t cdims[1]={30};
- hid_t fid=-1;
- hid_t dset_id=-1;
- hid_t sid=-1;
- hid_t tid=-1;
- hid_t dcpl=-1;
- int i;
- char name[10];
- int iter=100;
-
- if ((fid = H5Fcreate(FNAME5,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
- return -1;
- if (H5Fclose(fid)<0)
- goto out;
-
- if ((sid = H5Screate_simple(1, dims, NULL))<0)
- goto out;
- if ((dcpl = H5Pcreate(H5P_DATASET_CREATE))<0)
- goto out;
- if (H5Pset_chunk(dcpl,1,cdims)<0)
- goto out;
- if (H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_EARLY)<0)
- goto out;
-
- for (i=0; i<iter; i++)
- {
- if ((fid = H5Fopen(FNAME5,H5F_ACC_RDWR,H5P_DEFAULT))<0)
- goto out;
- if ((dset_id = H5Dcreate(fid,"early",H5T_NATIVE_DOUBLE,sid,dcpl))<0)
- goto out;
- if ((tid = H5Tcopy(H5T_NATIVE_DOUBLE))<0)
- goto out;
- sprintf(name,"%d", i);
- if ((H5Tcommit(fid,name,tid))<0)
- goto out;
- if (H5Tclose(tid)<0)
- goto out;
- if (H5Dclose(dset_id)<0)
- goto out;
- if (H5Gunlink(fid,"early")<0)
- goto out;
- if (H5Fclose(fid)<0)
- goto out;
- }
-
-/*-------------------------------------------------------------------------
- * do the same without close/opening the file and creating the dataset
- *-------------------------------------------------------------------------
- */
-
- if ((fid = H5Fcreate(FNAME6,H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT))<0)
- return -1;
-
- for (i=0; i<iter; i++)
- {
- if ((tid = H5Tcopy(H5T_NATIVE_DOUBLE))<0)
- goto out;
- sprintf(name,"%d", i);
- if ((H5Tcommit(fid,name,tid))<0)
- goto out;
- if (H5Tclose(tid)<0)
- goto out;
- }
-
- if (H5Sclose(sid)<0)
- goto out;
- if (H5Pclose(dcpl)<0)
- goto out;
- if (H5Fclose(fid)<0)
- goto out;
-
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Tclose(tid);
- H5Pclose(dcpl);
- H5Sclose(sid);
- H5Dclose(dset_id);
- H5Fclose(fid);
- } H5E_END_TRY;
- return -1;
-}
-
-
-
-/*-------------------------------------------------------------------------
- * Function: make_layout
- *
- * Purpose: make several datasets with several layouts in location LOC_ID
- *
- *-------------------------------------------------------------------------
- */
-int make_layout(hid_t loc_id)
-{
- hid_t dcpl; /* dataset creation property list */
- hid_t sid; /* dataspace ID */
- hsize_t dims[RANK]={DIM1,DIM2};
- hsize_t chunk_dims[RANK]={CDIM1,CDIM2};
- int buf[DIM1][DIM2];
- int i, j, n;
- char name[6];
-
-
- for (i=n=0; i<DIM1; i++){
- for (j=0; j<DIM2; j++){
- buf[i][j]=n++;
- }
- }
-
-/*-------------------------------------------------------------------------
- * make several dataset with no filters
- *-------------------------------------------------------------------------
- */
- for (i=0; i<4; i++)
- {
- sprintf(name,"dset%d",i+1);
- if (write_dset(loc_id,RANK,dims,name,H5T_NATIVE_INT,buf)<0)
- return -1;
- }
-
-
-/*-------------------------------------------------------------------------
- * make several dataset with several layout options
- *-------------------------------------------------------------------------
- */
- /* create a space */
- if((sid = H5Screate_simple(RANK, dims, NULL))<0)
- return -1;
- /* create a dataset creation property list; the same DCPL is used for all dsets */
- if ((dcpl = H5Pcreate(H5P_DATASET_CREATE))<0)
- goto out;
-
-/*-------------------------------------------------------------------------
- * H5D_COMPACT
- *-------------------------------------------------------------------------
- */
- if(H5Pset_layout (dcpl,H5D_COMPACT)<0)
- goto out;
- if (make_dset(loc_id,"dset_compact",sid,dcpl,buf)<0)
- goto out;
-
-/*-------------------------------------------------------------------------
- * H5D_CONTIGUOUS
- *-------------------------------------------------------------------------
- */
- if(H5Pset_layout (dcpl,H5D_CONTIGUOUS)<0)
- goto out;
- if (make_dset(loc_id,"dset_contiguous",sid,dcpl,buf)<0)
- goto out;
-
-/*-------------------------------------------------------------------------
- * H5D_CHUNKED
- *-------------------------------------------------------------------------
- */
- if(H5Pset_chunk(dcpl, RANK, chunk_dims)<0)
- goto out;
- if (make_dset(loc_id,"dset_chunk",sid,dcpl,buf)<0)
- goto out;
-
-/*-------------------------------------------------------------------------
- * close space and dcpl
- *-------------------------------------------------------------------------
- */
- if(H5Sclose(sid)<0)
- goto out;
- if(H5Pclose(dcpl)<0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Pclose(dcpl);
- H5Sclose(sid);
- } H5E_END_TRY;
- return -1;
-}
-
-/*-------------------------------------------------------------------------
- * Function: make a file with an integer dataset with a fill value
- *
- * Purpose: test copy of fill values
- *
- *-------------------------------------------------------------------------
- */
-int make_fill(hid_t loc_id)
-{
- hid_t did;
- hid_t sid;
- hid_t dcpl;
- hsize_t dims[2]={3,2};
- int buf[3][2]= {{1,1},{1,2},{2,2}};
- int fillvalue=2;
-
-/*-------------------------------------------------------------------------
- * H5T_INTEGER, write a fill value
- *-------------------------------------------------------------------------
- */
- if ((dcpl = H5Pcreate(H5P_DATASET_CREATE))<0)
- goto out;
- if (H5Pset_fill_value(dcpl, H5T_NATIVE_INT, &fillvalue)<0)
- goto out;
- if ((sid = H5Screate_simple(2,dims,NULL))<0)
- goto out;
- if ((did = H5Dcreate(loc_id,"dset_fill",H5T_NATIVE_INT,sid,dcpl))<0)
- goto out;
- if (H5Dwrite(did,H5T_NATIVE_INT,H5S_ALL,H5S_ALL,H5P_DEFAULT,buf)<0)
- goto out;
-
- /* close */
- if(H5Sclose(sid)<0)
- goto out;
- if(H5Pclose(dcpl)<0)
- goto out;
- if(H5Dclose(did)<0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Pclose(dcpl);
- H5Sclose(sid);
- H5Dclose(did);
- } H5E_END_TRY;
- return -1;
-
-}
-
-/*-------------------------------------------------------------------------
- * Function: make_big
- *
- * Purpose: used in test read by hyperslabs. create a dataset with 1GB dimensions
- * by iterating trough 1MB hyperslabs
- *
- *-------------------------------------------------------------------------
- */
-
-int make_big(hid_t loc_id)
-{
- hid_t did;
- hid_t f_sid;
- hid_t m_sid;
- hid_t tid;
- hid_t dcpl;
- hsize_t dims[1]={GBLL}; /* dataset dimensions */
- hsize_t hs_size[1]={GBLL/1024}; /* hyperslab dimensions */
- hsize_t chunk_dims[1]={GBLL/1024}; /* chunk dimensions */
- hsize_t hs_start[1];
- size_t size;
- size_t nelmts=(size_t)GBLL/1024;
- char fillvalue=-1;
- char *buf=NULL;
- int i, j, s;
- char c;
-
- /* create */
- if ((dcpl = H5Pcreate(H5P_DATASET_CREATE))<0)
- goto out;
- if (H5Pset_fill_value(dcpl, H5T_NATIVE_CHAR, &fillvalue)<0)
- goto out;
- if(H5Pset_chunk(dcpl, 1, chunk_dims)<0)
- goto out;
- if ((f_sid = H5Screate_simple(1,dims,NULL))<0)
- goto out;
- if ((did = H5Dcreate(loc_id,"big",H5T_NATIVE_CHAR,f_sid,dcpl))<0)
- goto out;
- if ((m_sid = H5Screate_simple(1, hs_size, hs_size))<0)
- goto out;
- if ((tid = H5Dget_type(did))<0)
- goto out;
- if ((size = H5Tget_size(tid))<=0)
- goto out;
-
- /* create a evenly divided buffer from 0 to 127 */
- buf=(char *) HDmalloc((unsigned)(nelmts*size));
- s = 1024 / 127;
- for (i=0, j=0, c=0; i<1024; j++, i++)
- {
- if ( j==s)
- {
- c++;
- j=0;
- };
-
- HDmemset(buf, c, nelmts);
-
- hs_start[0] = i * GBLL/1024;
- if (H5Sselect_hyperslab (f_sid,H5S_SELECT_SET,hs_start,NULL,hs_size, NULL)<0)
- goto out;
- if (H5Dwrite (did,H5T_NATIVE_CHAR,m_sid,f_sid,H5P_DEFAULT,buf)<0)
- goto out;
-
- /* write only one hyperslab */
- if (i==0)
- break;
-
- }
- free(buf);
- buf=NULL;
-
- /* close */
- if(H5Sclose(f_sid)<0)
- goto out;
- if(H5Sclose(m_sid)<0)
- goto out;
- if(H5Pclose(dcpl)<0)
- goto out;
- if(H5Dclose(did)<0)
- goto out;
-
- return 0;
-
-out:
- H5E_BEGIN_TRY {
- H5Pclose(dcpl);
- H5Sclose(f_sid);
- H5Sclose(m_sid);
- H5Dclose(did);
- } H5E_END_TRY;
- return -1;
-
-}
-