From 9758b5a14c52e42fffef38792155d5d9af33ab57 Mon Sep 17 00:00:00 2001 From: Binh-Minh Ribler Date: Wed, 6 Dec 2000 20:11:00 -0500 Subject: [svn-r3085] Renamed extend_ds.C to extend_ds.cpp --- c++/examples/extend_ds.C | 204 --------------------------------------------- c++/examples/extend_ds.cpp | 204 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 204 insertions(+), 204 deletions(-) delete mode 100644 c++/examples/extend_ds.C create mode 100644 c++/examples/extend_ds.cpp diff --git a/c++/examples/extend_ds.C b/c++/examples/extend_ds.C deleted file mode 100644 index e0eb877..0000000 --- a/c++/examples/extend_ds.C +++ /dev/null @@ -1,204 +0,0 @@ -/* - * This example shows how to work with extendible dataset. - * In the current version of the library dataset MUST be - * chunked. - * - */ - -#include -#ifndef H5_NO_NAMESPACE -using namespace std; -#endif - -#ifdef OLD_HEADER_FILENAME -#include -#else -#include -#endif -#include "H5Cpp.h" - -#ifndef H5_NO_NAMESPACE -using namespace H5; -#endif - -const string FILE_NAME( "SDSextendible.h5" ); -const string DATASET_NAME( "ExtendibleArray" ); -const int NX = 10; -const int NY = 5; -const int RANK = 2; - -int main (void) -{ - // Try block to detect exceptions raised by any of the calls inside it - try - { - /* - * Create the data space with unlimited dimensions. - */ - hsize_t dims[2] = { 3, 3}; // dataset dimensions at creation - hsize_t maxdims[2] = {H5S_UNLIMITED, H5S_UNLIMITED}; - DataSpace mspace1( RANK, dims, maxdims); - - /* - * Create a new file. If file exists its contents will be overwritten. - */ - H5File file( FILE_NAME, H5F_ACC_TRUNC ); - - /* - * Modify dataset creation properties, i.e. enable chunking. - */ - DSetCreatPropList cparms; - - hsize_t chunk_dims[2] ={2, 5}; - cparms.setChunk( RANK, chunk_dims ); - - /* - * Create a new dataset within the file using cparms - * creation properties. - */ - - DataSet dataset = file.createDataSet( DATASET_NAME, PredType::NATIVE_INT, mspace1, cparms); - - /* - * Extend the dataset. This call assures that dataset is at least 3 x 3. - */ - hsize_t size[2]; - size[0] = 3; - size[1] = 3; - dataset.extend( size ); - - /* - * Select a hyperslab. - */ - DataSpace fspace1 = dataset.getSpace (); - hssize_t offset[2]; - offset[0] = 0; - offset[1] = 0; - hsize_t dims1[2] = { 3, 3}; /* data1 dimensions */ - fspace1.selectHyperslab( H5S_SELECT_SET, dims1, offset ); - - /* - * Write the data to the hyperslab. - */ - int data1[3][3] = { {1, 1, 1}, /* data to write */ - {1, 1, 1}, - {1, 1, 1} }; - dataset.write( data1, PredType::NATIVE_INT, mspace1, fspace1 ); - - /* - * Extend the dataset. Dataset becomes 10 x 3. - */ - hsize_t dims2[2] = { 7, 1}; /* data2 dimensions */ - dims[0] = dims1[0] + dims2[0]; - size[0] = dims[0]; - size[1] = dims[1]; - dataset.extend( size ); - - /* - * Select a hyperslab. - */ - DataSpace fspace2 = dataset.getSpace (); - offset[0] = 3; - offset[1] = 0; - fspace2.selectHyperslab( H5S_SELECT_SET, dims2, offset ); - - /* - * Define memory space - */ - DataSpace mspace2( RANK, dims2 ); - - /* - * Write the data to the hyperslab. - */ - int data2[7] = { 2, 2, 2, 2, 2, 2, 2}; - dataset.write( data2, PredType::NATIVE_INT, mspace2, fspace2 ); - - /* - * Extend the dataset. Dataset becomes 10 x 5. - */ - hsize_t dims3[2] = { 2, 2}; /* data3 dimensions */ - dims[1] = dims1[1] + dims3[1]; - size[0] = dims[0]; - size[1] = dims[1]; - dataset.extend( size ); - - /* - * Select a hyperslab - */ - DataSpace fspace3 = dataset.getSpace (); - offset[0] = 0; - offset[1] = 3; - fspace3.selectHyperslab( H5S_SELECT_SET, dims3, offset ); - - /* - * Define memory space. - */ - DataSpace mspace3( RANK, dims3 ); - - /* - * Write the data to the hyperslab. - */ - int data3[2][2] = { {3, 3}, {3, 3} }; - dataset.write( data3, PredType::NATIVE_INT, mspace3, fspace3 ); - - /* - * Read the data from this dataset and display it. - */ - int i, j; - int data_out[NX][NY]; - for (i = 0; i < NX; i++) - { - for (j = 0; j < NY; j++) - data_out[i][j] = 0; - } - dataset.read( data_out, PredType::NATIVE_INT ); - /* - * Resulting dataset - * - * 1 1 1 3 3 - * 1 1 1 3 3 - * 1 1 1 0 0 - * 2 0 0 0 0 - * 2 0 0 0 0 - * 2 0 0 0 0 - * 2 0 0 0 0 - * 2 0 0 0 0 - * 2 0 0 0 0 - * 2 0 0 0 0 - */ - /* - * Display the result. - */ - for (i=0; i < NX; i++) - { - for(j=0; j < NY; j++) - cout << data_out[i][j] << " "; - cout << endl; - } - } // end of try block - - // catch failure caused by the H5File operations - catch( FileIException error ) - { - error.printError(); - } - - // catch failure caused by the DataSet operations - catch( DataSetIException error ) - { - error.printError(); - } - - // catch failure caused by the DataSpace operations - catch( DataSpaceIException error ) - { - error.printError(); - } - - // catch failure caused by the DataSpace operations - catch( DataTypeIException error ) - { - error.printError(); - } - return 0; -} diff --git a/c++/examples/extend_ds.cpp b/c++/examples/extend_ds.cpp new file mode 100644 index 0000000..e0eb877 --- /dev/null +++ b/c++/examples/extend_ds.cpp @@ -0,0 +1,204 @@ +/* + * This example shows how to work with extendible dataset. + * In the current version of the library dataset MUST be + * chunked. + * + */ + +#include +#ifndef H5_NO_NAMESPACE +using namespace std; +#endif + +#ifdef OLD_HEADER_FILENAME +#include +#else +#include +#endif +#include "H5Cpp.h" + +#ifndef H5_NO_NAMESPACE +using namespace H5; +#endif + +const string FILE_NAME( "SDSextendible.h5" ); +const string DATASET_NAME( "ExtendibleArray" ); +const int NX = 10; +const int NY = 5; +const int RANK = 2; + +int main (void) +{ + // Try block to detect exceptions raised by any of the calls inside it + try + { + /* + * Create the data space with unlimited dimensions. + */ + hsize_t dims[2] = { 3, 3}; // dataset dimensions at creation + hsize_t maxdims[2] = {H5S_UNLIMITED, H5S_UNLIMITED}; + DataSpace mspace1( RANK, dims, maxdims); + + /* + * Create a new file. If file exists its contents will be overwritten. + */ + H5File file( FILE_NAME, H5F_ACC_TRUNC ); + + /* + * Modify dataset creation properties, i.e. enable chunking. + */ + DSetCreatPropList cparms; + + hsize_t chunk_dims[2] ={2, 5}; + cparms.setChunk( RANK, chunk_dims ); + + /* + * Create a new dataset within the file using cparms + * creation properties. + */ + + DataSet dataset = file.createDataSet( DATASET_NAME, PredType::NATIVE_INT, mspace1, cparms); + + /* + * Extend the dataset. This call assures that dataset is at least 3 x 3. + */ + hsize_t size[2]; + size[0] = 3; + size[1] = 3; + dataset.extend( size ); + + /* + * Select a hyperslab. + */ + DataSpace fspace1 = dataset.getSpace (); + hssize_t offset[2]; + offset[0] = 0; + offset[1] = 0; + hsize_t dims1[2] = { 3, 3}; /* data1 dimensions */ + fspace1.selectHyperslab( H5S_SELECT_SET, dims1, offset ); + + /* + * Write the data to the hyperslab. + */ + int data1[3][3] = { {1, 1, 1}, /* data to write */ + {1, 1, 1}, + {1, 1, 1} }; + dataset.write( data1, PredType::NATIVE_INT, mspace1, fspace1 ); + + /* + * Extend the dataset. Dataset becomes 10 x 3. + */ + hsize_t dims2[2] = { 7, 1}; /* data2 dimensions */ + dims[0] = dims1[0] + dims2[0]; + size[0] = dims[0]; + size[1] = dims[1]; + dataset.extend( size ); + + /* + * Select a hyperslab. + */ + DataSpace fspace2 = dataset.getSpace (); + offset[0] = 3; + offset[1] = 0; + fspace2.selectHyperslab( H5S_SELECT_SET, dims2, offset ); + + /* + * Define memory space + */ + DataSpace mspace2( RANK, dims2 ); + + /* + * Write the data to the hyperslab. + */ + int data2[7] = { 2, 2, 2, 2, 2, 2, 2}; + dataset.write( data2, PredType::NATIVE_INT, mspace2, fspace2 ); + + /* + * Extend the dataset. Dataset becomes 10 x 5. + */ + hsize_t dims3[2] = { 2, 2}; /* data3 dimensions */ + dims[1] = dims1[1] + dims3[1]; + size[0] = dims[0]; + size[1] = dims[1]; + dataset.extend( size ); + + /* + * Select a hyperslab + */ + DataSpace fspace3 = dataset.getSpace (); + offset[0] = 0; + offset[1] = 3; + fspace3.selectHyperslab( H5S_SELECT_SET, dims3, offset ); + + /* + * Define memory space. + */ + DataSpace mspace3( RANK, dims3 ); + + /* + * Write the data to the hyperslab. + */ + int data3[2][2] = { {3, 3}, {3, 3} }; + dataset.write( data3, PredType::NATIVE_INT, mspace3, fspace3 ); + + /* + * Read the data from this dataset and display it. + */ + int i, j; + int data_out[NX][NY]; + for (i = 0; i < NX; i++) + { + for (j = 0; j < NY; j++) + data_out[i][j] = 0; + } + dataset.read( data_out, PredType::NATIVE_INT ); + /* + * Resulting dataset + * + * 1 1 1 3 3 + * 1 1 1 3 3 + * 1 1 1 0 0 + * 2 0 0 0 0 + * 2 0 0 0 0 + * 2 0 0 0 0 + * 2 0 0 0 0 + * 2 0 0 0 0 + * 2 0 0 0 0 + * 2 0 0 0 0 + */ + /* + * Display the result. + */ + for (i=0; i < NX; i++) + { + for(j=0; j < NY; j++) + cout << data_out[i][j] << " "; + cout << endl; + } + } // end of try block + + // catch failure caused by the H5File operations + catch( FileIException error ) + { + error.printError(); + } + + // catch failure caused by the DataSet operations + catch( DataSetIException error ) + { + error.printError(); + } + + // catch failure caused by the DataSpace operations + catch( DataSpaceIException error ) + { + error.printError(); + } + + // catch failure caused by the DataSpace operations + catch( DataTypeIException error ) + { + error.printError(); + } + return 0; +} -- cgit v0.12