diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2001-08-10 20:47:05 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2001-08-10 20:47:05 (GMT) |
commit | 95862451f78960cab031031011e5c6a131e0d026 (patch) | |
tree | 391101ca102fbecbfe9cee1f608b90bb87d49b1a /c++/src | |
parent | 4049965d1337bc54a21a4d3af71aa793e4baf029 (diff) | |
download | hdf5-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++/src')
-rw-r--r-- | c++/src/H5DxferProp.cpp | 2 | ||||
-rw-r--r-- | c++/src/H5PropList.cpp | 26 |
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" ); } } } |