diff options
author | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2003-06-25 17:25:11 (GMT) |
---|---|---|
committer | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2003-06-25 17:25:11 (GMT) |
commit | fa77b6691e218c49163f477c84fb8664fb5cda8b (patch) | |
tree | c2007e35ae40e79718b3b16146a2f0bf2a149818 /c++/examples/h5group.cpp | |
parent | c9f162a58c26355b70724b211877e2d3ce9c3d94 (diff) | |
download | hdf5-fa77b6691e218c49163f477c84fb8664fb5cda8b.zip hdf5-fa77b6691e218c49163f477c84fb8664fb5cda8b.tar.gz hdf5-fa77b6691e218c49163f477c84fb8664fb5cda8b.tar.bz2 |
[svn-r7104] Purpose:
Bug fix
Description:
Missing returning error for failures occur in C++ examples.
Solution:
Added "return -1;" when an exception is caught.
Also, turned off automatic error printing so that the C++ API
will catch and handle the failures.
Platforms:
SunOS 5.7 (arabica)
Linux 2.4 (eirene)
IRIX 6.5.11 (modi4)
Diffstat (limited to 'c++/examples/h5group.cpp')
-rw-r--r-- | c++/examples/h5group.cpp | 130 |
1 files changed, 73 insertions, 57 deletions
diff --git a/c++/examples/h5group.cpp b/c++/examples/h5group.cpp index 95161da..d7f3c66 100644 --- a/c++/examples/h5group.cpp +++ b/c++/examples/h5group.cpp @@ -12,14 +12,14 @@ * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -// -// This example creates a group in the file and dataset in the group. -// Hard link to the group object is created and the dataset is accessed -// under different names. -// Iterator function is used to find the object names in the root group. -// Note that the C++ API iterator function is not completed yet, thus -// the C version is used in this example. -// +/* + * This example creates a group in the file and dataset in the group. + * Hard link to the group object is created and the dataset is accessed + * under different names. + * Iterator function is used to find the object names in the root group. + * Note that the C++ API iterator function is not completed yet, thus + * the C version is used in this example. + */ #include <string> #ifdef OLD_HEADER_FILENAME @@ -48,19 +48,29 @@ int main(void) // Try block to detect exceptions raised by any of the calls inside it try { - // Create the named file, truncating the existing one if any, - // using default create and access property lists. + /* + * 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 + /* + * 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. - // + /* + * 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; @@ -74,22 +84,22 @@ int main(void) DataSet* dataset = new DataSet( file->createDataSet( "/Data/Compressed_Data", PredType::NATIVE_INT, dataspace, ds_creatplist )); - // - // Close the dataset and the file. - // + /* + * Close the dataset and the file. + */ delete dataset; delete group; delete file; - // - // Now reopen the file and group in the 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. - // + /* + * Access "Compressed_Data" dataset in the group. + */ try { // to determine if the dataset exists in the group dataset = new DataSet( group->openDataSet( "Compressed_Data" )); } @@ -99,20 +109,20 @@ int main(void) } cout << "dataset \"/Data/Compressed_Data\" is open" << endl; - // - // Close the dataset. - // + /* + * Close the dataset. + */ delete dataset; - // - // Create hard link to the Data group. - // + /* + * Create hard link to the Data group. + */ file->link( H5G_LINK_HARD, "Data", "Data_new" ); - // - // We can access "Compressed_Data" dataset using created - // hard link "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" )); } @@ -122,23 +132,23 @@ int main(void) } cout << "dataset \"/Data_new/Compressed_Data\" is open" << endl; - // - // Close the dataset. - // + /* + * Close the dataset. + */ delete dataset; - // - // Use iterator to see the names of the objects in the file - // root directory. - // + /* + * 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 = H5Giterate(file->getId(), "/", NULL, file_info, NULL); cout << endl; - // - // Unlink name "Data" and use iterator to see the names - // of the objects in the file root direvtory. - // + /* + * 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" ); @@ -153,7 +163,9 @@ int main(void) idx = H5Giterate(file->getId(), "/", NULL, file_info, NULL); cout << endl; - // Close the file. + /* + * Close the file. + */ delete file; } // end of try block @@ -162,43 +174,47 @@ int main(void) catch( FileIException error ) { error.printError(); + return -1; } // catch failure caused by the DataSet operations catch( DataSetIException error ) { error.printError(); + return -1; } // catch failure caused by the DataSpace operations catch( DataSpaceIException error ) { error.printError(); + return -1; } // catch failure caused by the Attribute operations catch( AttributeIException error ) { error.printError(); + return -1; } return 0; } -// -// Operator function. -// +/* + * Operator function. + */ herr_t file_info(hid_t loc_id, const char *name, void *opdata) { hid_t group; - // - // Open the group using its name. - // + /* + * Open the group using its name. + */ group = H5Gopen(loc_id, name); - // - // Display group name. - // + /* + * Display group name. + */ cout << "Name : " << name << endl; H5Gclose(group); |