summaryrefslogtreecommitdiffstats
path: root/c++
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2001-08-10 20:47:05 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2001-08-10 20:47:05 (GMT)
commit95862451f78960cab031031011e5c6a131e0d026 (patch)
tree391101ca102fbecbfe9cee1f608b90bb87d49b1a /c++
parent4049965d1337bc54a21a4d3af71aa793e4baf029 (diff)
downloadhdf5-95862451f78960cab031031011e5c6a131e0d026.zip
hdf5-95862451f78960cab031031011e5c6a131e0d026.tar.gz
hdf5-95862451f78960cab031031011e5c6a131e0d026.tar.bz2
[svn-r4324] Purpose:
New Features! Description: Start migrating the internal use of property lists in the library from the older implementation to the new generic property lists. Currently, only the dataset transfer property lists are migrated to the new architecture, all the rest of the property list types are still using the older architecture. Also, the backward compatibility features are not implemented yet, so applications which use dataset transfer properties may need to make the following changes: H5Pcreate(H5P_DATASET_XFER) -> H5Pcreate_list(H5P_DATASET_XFER_NEW) and H5Pclose(<a dataset transfer property list>) -> H5Pclose_list(id) This still may have some bugs in it, especially with Fortran, but I should be wrapping up those later today. Platforms tested: FreeBSD 4.4 (hawkwind)
Diffstat (limited to 'c++')
-rw-r--r--c++/src/H5DxferProp.cpp2
-rw-r--r--c++/src/H5PropList.cpp26
2 files changed, 24 insertions, 4 deletions
diff --git a/c++/src/H5DxferProp.cpp b/c++/src/H5DxferProp.cpp
index a3247d0..389db89 100644
--- a/c++/src/H5DxferProp.cpp
+++ b/c++/src/H5DxferProp.cpp
@@ -14,7 +14,7 @@ namespace H5 {
const DSetMemXferPropList DSetMemXferPropList::DEFAULT( H5P_DEFAULT );
// Creates a dataset memory and transfer property list
-DSetMemXferPropList::DSetMemXferPropList() : PropList( H5P_DATASET_XFER ) {}
+DSetMemXferPropList::DSetMemXferPropList() : PropList( H5P_DATASET_XFER_NEW ) {}
// Copy constructor: makes a copy of the original DSetMemXferPropList object;
DSetMemXferPropList::DSetMemXferPropList( const DSetMemXferPropList& orig ) : PropList( orig ) {}
diff --git a/c++/src/H5PropList.cpp b/c++/src/H5PropList.cpp
index 2da84e9..985d895 100644
--- a/c++/src/H5PropList.cpp
+++ b/c++/src/H5PropList.cpp
@@ -39,7 +39,20 @@ Description:
the identifier still has reference counter; the p_close function
will take care of not to call H5Pclose on the default id.
*/
-PropList::PropList( const hid_t plist_id ) : IdComponent( plist_id ) { }
+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_list(plist_id);
+ if( id <= 0 )
+ {
+ throw PropListIException("PropList constructor", "H5Pcreate_list failed");
+ }
+ }
+ else {
+ id=plist_id;
+ }
+}
// Makes a copy of an existing property list
void PropList::copy( const PropList& like_plist )
@@ -77,10 +90,17 @@ void PropList::p_close() const
{
if( id != H5P_DEFAULT ) // not a constant, should call H5Pclose
{
- herr_t ret_value = H5Pclose( id );
+ herr_t ret_value;
+
+ if (H5I_GENPROP_LST == H5Iget_type(id)) {
+ ret_value = H5Pclose_list( id );
+ } else {
+ ret_value = H5Pclose( id );
+ }
+
if( ret_value < 0 )
{
- throw PropListIException(NULL, "H5Pclose failed" );
+ throw PropListIException(NULL, "property list close failed" );
}
}
}