summaryrefslogtreecommitdiffstats
path: root/c++/examples/h5group.cpp
diff options
context:
space:
mode:
authorBinh-Minh Ribler <bmribler@hdfgroup.org>2003-06-25 17:25:11 (GMT)
committerBinh-Minh Ribler <bmribler@hdfgroup.org>2003-06-25 17:25:11 (GMT)
commitfa77b6691e218c49163f477c84fb8664fb5cda8b (patch)
treec2007e35ae40e79718b3b16146a2f0bf2a149818 /c++/examples/h5group.cpp
parentc9f162a58c26355b70724b211877e2d3ce9c3d94 (diff)
downloadhdf5-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.cpp130
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);