diff options
Diffstat (limited to 'c++/examples/h5group.cpp')
-rw-r--r-- | c++/examples/h5group.cpp | 288 |
1 files changed, 144 insertions, 144 deletions
diff --git a/c++/examples/h5group.cpp b/c++/examples/h5group.cpp index a8c9953..fab54cd 100644 --- a/c++/examples/h5group.cpp +++ b/c++/examples/h5group.cpp @@ -33,7 +33,7 @@ using std::endl; using namespace H5; const H5std_string FILE_NAME( "Group.h5" ); -const int RANK = 2; +const int RANK = 2; // Operator function extern "C" herr_t file_info(hid_t loc_id, const char *name, const H5L_info_t *linfo, @@ -48,169 +48,169 @@ int main(void) // 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 the named file, truncating the existing one if any, - * using default create and access property lists. - */ - H5File *file = new H5File( FILE_NAME, H5F_ACC_TRUNC ); - - /* - * Create a group in the file - */ - Group* group = new Group( file->createGroup( "/Data" )); - - /* - * Create dataset "Compressed Data" in the group using absolute - * name. Dataset creation property list is modified to use - * GZIP compression with the compression effort set to 6. - * Note that compression can be used only when dataset is chunked. - */ - dims[0] = 1000; - dims[1] = 20; - cdims[0] = 20; - cdims[1] = 20; - DataSpace *dataspace = new DataSpace(RANK, dims); // create new dspace - DSetCreatPropList ds_creatplist; // create dataset creation prop list - ds_creatplist.setChunk( 2, cdims ); // then modify it for compression - ds_creatplist.setDeflate( 6 ); - - /* - * Create the first dataset. - */ - DataSet* dataset = new DataSet(file->createDataSet( - "/Data/Compressed_Data", PredType::NATIVE_INT, - *dataspace, ds_creatplist )); - - /* - * Close the first dataset. - */ - delete dataset; - delete dataspace; - - /* - * Create the second dataset. - */ - dims[0] = 500; - dims[1] = 20; - dataspace = new DataSpace(RANK, dims); // create second dspace - dataset = new DataSet(file->createDataSet("/Data/Float_Data", - PredType::NATIVE_FLOAT, *dataspace)); - - delete dataset; - delete dataspace; - delete group; - delete file; - - /* - * Now reopen the file and group in the file. - */ - file = new H5File(FILE_NAME, H5F_ACC_RDWR); - group = new Group(file->openGroup("Data")); - - /* - * Access "Compressed_Data" dataset in the group. - */ - try { // to determine if the dataset exists in the group - dataset = new DataSet( group->openDataSet( "Compressed_Data" )); - } - catch( GroupIException not_found_error ) { - cout << " Dataset is not found." << endl; - } - cout << "dataset \"/Data/Compressed_Data\" is open" << endl; - - /* - * Close the dataset. - */ - delete dataset; - - /* - * Create hard link to the Data group. - */ - file->link( H5L_TYPE_HARD, "Data", "Data_new" ); - - /* - * We can access "Compressed_Data" dataset using created - * hard link "Data_new". - */ - try { // to determine if the dataset exists in the file - dataset = new DataSet(file->openDataSet( "/Data_new/Compressed_Data" )); - } - catch( FileIException not_found_error ) - { - cout << " Dataset is not found." << endl; - } - cout << "dataset \"/Data_new/Compressed_Data\" is open" << endl; - - /* - * Close the dataset. - */ - delete dataset; - - /* - * Use iterator to see the names of the objects in the file - * root directory. - */ - cout << endl << "Iterating over elements in the file" << endl; - herr_t idx = H5Literate(file->getId(), H5_INDEX_NAME, H5_ITER_INC, NULL, file_info, NULL); - cout << endl; - - /* - * Unlink name "Data" and use iterator to see the names - * of the objects in the file root direvtory. - */ - cout << "Unlinking..." << endl; - try { // attempt to unlink the dataset - file->unlink( "Data" ); - } - catch( FileIException unlink_error ) - { - cout << " unlink failed." << endl; - } - cout << "\"Data\" is unlinked" << endl; - - cout << endl << "Iterating over elements in the file again" << endl; - idx = H5Literate(file->getId(), H5_INDEX_NAME, H5_ITER_INC, NULL, file_info, NULL); - cout << endl; - - /* - * Close the group and file. - */ - delete group; - delete file; + /* + * Turn off the auto-printing when failure occurs so that we can + * handle the errors appropriately + */ + Exception::dontPrint(); + + /* + * Create the named file, truncating the existing one if any, + * using default create and access property lists. + */ + H5File *file = new H5File( FILE_NAME, H5F_ACC_TRUNC ); + + /* + * Create a group in the file + */ + Group* group = new Group( file->createGroup( "/Data" )); + + /* + * Create dataset "Compressed Data" in the group using absolute + * name. Dataset creation property list is modified to use + * GZIP compression with the compression effort set to 6. + * Note that compression can be used only when dataset is chunked. + */ + dims[0] = 1000; + dims[1] = 20; + cdims[0] = 20; + cdims[1] = 20; + DataSpace *dataspace = new DataSpace(RANK, dims); // create new dspace + DSetCreatPropList ds_creatplist; // create dataset creation prop list + ds_creatplist.setChunk( 2, cdims ); // then modify it for compression + ds_creatplist.setDeflate( 6 ); + + /* + * Create the first dataset. + */ + DataSet* dataset = new DataSet(file->createDataSet( + "/Data/Compressed_Data", PredType::NATIVE_INT, + *dataspace, ds_creatplist )); + + /* + * Close the first dataset. + */ + delete dataset; + delete dataspace; + + /* + * Create the second dataset. + */ + dims[0] = 500; + dims[1] = 20; + dataspace = new DataSpace(RANK, dims); // create second dspace + dataset = new DataSet(file->createDataSet("/Data/Float_Data", + PredType::NATIVE_FLOAT, *dataspace)); + + delete dataset; + delete dataspace; + delete group; + delete file; + + /* + * Now reopen the file and group in the file. + */ + file = new H5File(FILE_NAME, H5F_ACC_RDWR); + group = new Group(file->openGroup("Data")); + + /* + * Access "Compressed_Data" dataset in the group. + */ + try { // to determine if the dataset exists in the group + dataset = new DataSet( group->openDataSet( "Compressed_Data" )); + } + catch( GroupIException not_found_error ) { + cout << " Dataset is not found." << endl; + } + cout << "dataset \"/Data/Compressed_Data\" is open" << endl; + + /* + * Close the dataset. + */ + delete dataset; + + /* + * Create hard link to the Data group. + */ + file->link( H5L_TYPE_HARD, "Data", "Data_new" ); + + /* + * We can access "Compressed_Data" dataset using created + * hard link "Data_new". + */ + try { // to determine if the dataset exists in the file + dataset = new DataSet(file->openDataSet( "/Data_new/Compressed_Data" )); + } + catch( FileIException not_found_error ) + { + cout << " Dataset is not found." << endl; + } + cout << "dataset \"/Data_new/Compressed_Data\" is open" << endl; + + /* + * Close the dataset. + */ + delete dataset; + + /* + * Use iterator to see the names of the objects in the file + * root directory. + */ + cout << endl << "Iterating over elements in the file" << endl; + herr_t idx = H5Literate(file->getId(), H5_INDEX_NAME, H5_ITER_INC, NULL, file_info, NULL); + cout << endl; + + /* + * Unlink name "Data" and use iterator to see the names + * of the objects in the file root direvtory. + */ + cout << "Unlinking..." << endl; + try { // attempt to unlink the dataset + file->unlink( "Data" ); + } + catch( FileIException unlink_error ) + { + cout << " unlink failed." << endl; + } + cout << "\"Data\" is unlinked" << endl; + + cout << endl << "Iterating over elements in the file again" << endl; + idx = H5Literate(file->getId(), H5_INDEX_NAME, H5_ITER_INC, NULL, file_info, NULL); + cout << endl; + + /* + * Close the group and file. + */ + delete group; + delete file; } // end of try block // catch failure caused by the H5File operations catch( FileIException error ) { - error.printErrorStack(); - return -1; + error.printErrorStack(); + return -1; } // catch failure caused by the DataSet operations catch( DataSetIException error ) { - error.printErrorStack(); - return -1; + error.printErrorStack(); + return -1; } // catch failure caused by the DataSpace operations catch( DataSpaceIException error ) { - error.printErrorStack(); - return -1; + error.printErrorStack(); + return -1; } // catch failure caused by the Attribute operations catch( AttributeIException error ) { - error.printErrorStack(); - return -1; + error.printErrorStack(); + return -1; } return 0; } |