diff options
Diffstat (limited to 'c++/examples/h5tutr_cmprss.cpp')
| -rw-r--r-- | c++/examples/h5tutr_cmprss.cpp | 254 |
1 files changed, 121 insertions, 133 deletions
diff --git a/c++/examples/h5tutr_cmprss.cpp b/c++/examples/h5tutr_cmprss.cpp index e9c87f1..6d9c109 100644 --- a/c++/examples/h5tutr_cmprss.cpp +++ b/c++/examples/h5tutr_cmprss.cpp @@ -1,16 +1,13 @@ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - * Copyright by The HDF Group. * - * Copyright by the Board of Trustees of the University of Illinois. * - * All rights reserved. * - * * + * Copyright by The HDF Group. * + * 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://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * - * access to either file, you may request a copy from help@hdfgroup.org. * + * the COPYING file, which can be found at the root of the source code * + * 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,144 +16,135 @@ */ #include <iostream> -#include <string> +using std::cout; +using std::endl; +#include <string> #include "H5Cpp.h" +using namespace H5; -#ifndef H5_NO_NAMESPACE - using namespace H5; -#ifndef H5_NO_STD - using std::cout; - using std::endl; -#endif // H5_NO_STD -#endif +const H5std_string FILE_NAME("h5tutr_cmprss.h5"); +const H5std_string DATASET_NAME("Compressed_Data"); +const int DIM0 = 100; +const int DIM1 = 20; -const H5std_string FILE_NAME("h5tutr_cmprss.h5"); -const H5std_string DATASET_NAME("Compressed_Data"); -const int DIM0 = 100; -const int DIM1 = 20; - -int main (void) +int +main(void) { - hsize_t dims[2] = { DIM0, DIM1 }; // dataset dimensions - hsize_t chunk_dims[2] = { 20, 20 }; // chunk dimensions - int i,j, buf[DIM0][DIM1]; + hsize_t dims[2] = {DIM0, DIM1}; // dataset dimensions + hsize_t chunk_dims[2] = {20, 20}; // chunk dimensions + int i, j, buf[DIM0][DIM1]; // Try block to detect exceptions raised by any of the calls inside it - try - { - // Turn off the auto-printing when failure occurs so that we can - // handle the errors appropriately - Exception::dontPrint(); - - // Create a new file using the default property lists. - H5File file(FILE_NAME, H5F_ACC_TRUNC); - - // Create the data space for the dataset. - DataSpace *dataspace = new DataSpace(2, dims); - - // Modify dataset creation property to enable chunking - DSetCreatPropList *plist = new DSetCreatPropList; - plist->setChunk(2, chunk_dims); - - // Set ZLIB (DEFLATE) Compression using level 6. - // To use SZIP compression comment out this line. - plist->setDeflate(6); - - // Uncomment these lines to set SZIP Compression - // unsigned szip_options_mask = H5_SZIP_NN_OPTION_MASK; - // unsigned szip_pixels_per_block = 16; - // plist->setSzip(szip_options_mask, szip_pixels_per_block); - - // Create the dataset. - DataSet *dataset = new DataSet(file.createDataSet( DATASET_NAME, - PredType::STD_I32BE, *dataspace, *plist) ); - - for (i = 0; i< DIM0; i++) - for (j=0; j<DIM1; j++) - buf[i][j] = i+j; - - // Write data to dataset. - dataset->write(buf, PredType::NATIVE_INT); - - // Close objects and file. Either approach will close the HDF5 item. - delete dataspace; - delete dataset; - delete plist; - file.close(); - - // ----------------------------------------------- - // Re-open the file and dataset, retrieve filter - // information for dataset and read the data back. - // ----------------------------------------------- - - int rbuf[DIM0][DIM1]; - int numfilt; - size_t nelmts={1}, namelen={1}; - unsigned flags, filter_info, cd_values[1], idx; - char name[1]; - H5Z_filter_t filter_type; - - // Open the file and the dataset in the file. - file.openFile(FILE_NAME, H5F_ACC_RDONLY); - dataset = new DataSet(file.openDataSet( DATASET_NAME)); - - // Get the create property list of the dataset. - plist = new DSetCreatPropList(dataset->getCreatePlist ()); - - // Get the number of filters associated with the dataset. - numfilt = plist->getNfilters(); - cout << "Number of filters associated with dataset: " << numfilt << endl; - - for (idx=0; idx < numfilt; idx++) { - nelmts = 0; - - filter_type = plist->getFilter(idx, flags, nelmts, cd_values, namelen, name , filter_info); - - cout << "Filter Type: "; - - switch (filter_type) { - case H5Z_FILTER_DEFLATE: - cout << "H5Z_FILTER_DEFLATE" << endl; - break; - case H5Z_FILTER_SZIP: - cout << "H5Z_FILTER_SZIP" << endl; - break; - default: - cout << "Other filter type included." << endl; - } - } - - // Read data. - dataset->read(rbuf, PredType::NATIVE_INT); - - delete plist; - delete dataset; - file.close(); // can be skipped - - } // end of try block + try { + // Turn off the auto-printing when failure occurs so that we can + // handle the errors appropriately + Exception::dontPrint(); + + // Create a new file using the default property lists. + H5File file(FILE_NAME, H5F_ACC_TRUNC); + + // Create the data space for the dataset. + DataSpace *dataspace = new DataSpace(2, dims); + + // Modify dataset creation property to enable chunking + DSetCreatPropList *plist = new DSetCreatPropList; + plist->setChunk(2, chunk_dims); + + // Set ZLIB (DEFLATE) Compression using level 6. + // To use SZIP compression comment out this line. + plist->setDeflate(6); + + // Uncomment these lines to set SZIP Compression + // unsigned szip_options_mask = H5_SZIP_NN_OPTION_MASK; + // unsigned szip_pixels_per_block = 16; + // plist->setSzip(szip_options_mask, szip_pixels_per_block); + + // Create the dataset. + DataSet *dataset = + new DataSet(file.createDataSet(DATASET_NAME, PredType::STD_I32BE, *dataspace, *plist)); + + for (i = 0; i < DIM0; i++) + for (j = 0; j < DIM1; j++) + buf[i][j] = i + j; + + // Write data to dataset. + dataset->write(buf, PredType::NATIVE_INT); + + // Close objects and file. Either approach will close the HDF5 item. + delete dataspace; + delete dataset; + delete plist; + file.close(); + + // ----------------------------------------------- + // Re-open the file and dataset, retrieve filter + // information for dataset and read the data back. + // ----------------------------------------------- + + int rbuf[DIM0][DIM1]; + int numfilt; + size_t nelmts = {1}, namelen = {1}; + unsigned flags, filter_info, cd_values[1], idx; + char name[1]; + H5Z_filter_t filter_type; + + // Open the file and the dataset in the file. + file.openFile(FILE_NAME, H5F_ACC_RDONLY); + dataset = new DataSet(file.openDataSet(DATASET_NAME)); + + // Get the create property list of the dataset. + plist = new DSetCreatPropList(dataset->getCreatePlist()); + + // Get the number of filters associated with the dataset. + numfilt = plist->getNfilters(); + cout << "Number of filters associated with dataset: " << numfilt << endl; + + for (idx = 0; idx < numfilt; idx++) { + nelmts = 0; + + filter_type = plist->getFilter(idx, flags, nelmts, cd_values, namelen, name, filter_info); + + cout << "Filter Type: "; + + switch (filter_type) { + case H5Z_FILTER_DEFLATE: + cout << "H5Z_FILTER_DEFLATE" << endl; + break; + case H5Z_FILTER_SZIP: + cout << "H5Z_FILTER_SZIP" << endl; + break; + default: + cout << "Other filter type included." << endl; + } + } + + // Read data. + dataset->read(rbuf, PredType::NATIVE_INT); + + delete plist; + delete dataset; + file.close(); // can be skipped + + } // end of try block // catch failure caused by the H5File operations - catch(FileIException error) - { - error.printError(); - return -1; + catch (FileIException error) { + error.printErrorStack(); + return -1; } // catch failure caused by the DataSet operations - catch(DataSetIException error) - { - error.printError(); - return -1; + catch (DataSetIException error) { + error.printErrorStack(); + return -1; } // catch failure caused by the DataSpace operations - catch(DataSpaceIException error) - { - error.printError(); - return -1; + catch (DataSpaceIException error) { + error.printErrorStack(); + return -1; } - return 0; // successfully terminated + return 0; // successfully terminated } - |
