summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBinh-Minh Ribler <bmribler@hdfgroup.org>2010-05-09 04:14:57 (GMT)
committerBinh-Minh Ribler <bmribler@hdfgroup.org>2010-05-09 04:14:57 (GMT)
commit1c9e998d0d7e74797a4a00a0704a363a02f81a0f (patch)
treeec074a6054e0e64eb4d0576bd614934ab663408f
parent5d8a2cca07e42684a323f0f007149f549bdbf307 (diff)
downloadhdf5-1c9e998d0d7e74797a4a00a0704a363a02f81a0f.zip
hdf5-1c9e998d0d7e74797a4a00a0704a363a02f81a0f.tar.gz
hdf5-1c9e998d0d7e74797a4a00a0704a363a02f81a0f.tar.bz2
[svn-r18745] Purpose: Fixed bug 1852
Description: When a property class id is given to PropList(id), create new prop list, but when a property list id is given, make a copy of it. Platforms tested: Linux/32 2.6 (jam) FreeBSD/64 6.3 (liberty) SunOS 5.10 (linew)
-rw-r--r--c++/src/H5PropList.cpp44
1 files changed, 25 insertions, 19 deletions
diff --git a/c++/src/H5PropList.cpp b/c++/src/H5PropList.cpp
index 579c8ac..2530204 100644
--- a/c++/src/H5PropList.cpp
+++ b/c++/src/H5PropList.cpp
@@ -66,29 +66,35 @@ PropList::PropList(const PropList& original) : IdComponent(original)
///\param plist_id - IN: Id of the existing property list
///\exception H5::PropListIException
// Description
-// This function calls H5Pcreate to create a new property list
-// if the given id, plist_id, is that of a property class. If
-// the given id is equal to H5P_ROOT, then set this
-// property's id to H5P_DEFAULT, otherwise, to the given id.
-// Note: someone else added this code without comments and this
-// description was what I came up with from reading the code.
+// This function creates a new property list if a property
+// class is provided or makes a copy of a property list if one
+// is given. If the given id is anything else, then set this
+// property's id to H5P_DEFAULT.
// Programmer Binh-Minh Ribler - 2000
//--------------------------------------------------------------------------
PropList::PropList( const hid_t plist_id ) : IdComponent()
{
- if (H5I_GENPROP_CLS == H5Iget_type(plist_id)) {
- // call C routine to create the new property
- id = H5Pcreate(plist_id);
- if( id < 0 )
- {
- throw PropListIException("PropList constructor", "H5Pcreate failed");
- }
- }
- else {
- if(plist_id==H5P_ROOT)
- id=H5P_DEFAULT;
- else
- id=plist_id;
+ H5I_type_t id_type = H5Iget_type(plist_id);
+ switch (id_type) {
+ case H5I_GENPROP_CLS:
+ // call C routine to create a new property from the given prop class
+ id = H5Pcreate(plist_id);
+ if( id < 0 )
+ {
+ throw PropListIException("PropList constructor", "H5Pcreate failed");
+ }
+ break;
+ case H5I_GENPROP_LST:
+ // call C routine to make a copy of the given property list
+ id = H5Pcopy(plist_id);
+ if( id < 0 )
+ {
+ throw PropListIException("PropList constructor", "H5Pcopy failed");
+ }
+ break;
+ default:
+ id = H5P_DEFAULT;
+ break;
}
}