diff options
author | James Laird <jlaird@hdfgroup.org> | 2004-07-01 17:38:04 (GMT) |
---|---|---|
committer | James Laird <jlaird@hdfgroup.org> | 2004-07-01 17:38:04 (GMT) |
commit | eab58732d86e9219fa9f41f9ab2e30fae94e4a7d (patch) | |
tree | 333b5f2c50c267c14611e042724a7f28d5156ab7 /c++ | |
parent | 3f500747fa0f4379e8e03b82f6d679628d55a8c3 (diff) | |
download | hdf5-eab58732d86e9219fa9f41f9ab2e30fae94e4a7d.zip hdf5-eab58732d86e9219fa9f41f9ab2e30fae94e4a7d.tar.gz hdf5-eab58732d86e9219fa9f41f9ab2e30fae94e4a7d.tar.bz2 |
[svn-r8781]
Purpose:
HDF5 now supports SZIP with no encoder.
Description:
SZIP can be configured to have both encoder and decoder or just to have the decoder. HDF5 can now query the configuration of any filter, and will throw errors if users try to write using a filter with encoding disabled.
Solution:
Added H5Zget_filter_info function, changed API for H5Pget_filter and H5P_get_filter_by_id. See SZIP RFC.
Platforms tested:
Copper (fortran, C++, parallel), Sleipnir (C++), Arabica (fortran, C++), Verbena (fortran, C++)
Misc. update:
Diffstat (limited to 'c++')
-rw-r--r-- | c++/src/H5DcreatProp.cpp | 14 | ||||
-rw-r--r-- | c++/src/H5DcreatProp.h | 4 | ||||
-rw-r--r-- | c++/test/dsets.cpp | 2 |
3 files changed, 14 insertions, 6 deletions
diff --git a/c++/src/H5DcreatProp.cpp b/c++/src/H5DcreatProp.cpp index f252151..f4150ac 100644 --- a/c++/src/H5DcreatProp.cpp +++ b/c++/src/H5DcreatProp.cpp @@ -298,16 +298,19 @@ int DSetCreatPropList::getNfilters() const ///\param cd_values - OUT: Array to hold the data; allocated by the user ///\param namelen - OUT: Length of \a name ///\param name - OUT: Name of the filter +///\param filter_config - OUT: Flags indicating whether filter can encode/decode ///\return Filter id ///\exception H5::PropListIException ///\par Description /// Failure occurs when \a filter_number is out of range. //-------------------------------------------------------------------------- -H5Z_filter_t DSetCreatPropList::getFilter(int filter_number, unsigned int &flags, size_t &cd_nelmts, unsigned int* cd_values, size_t namelen, char name[]) const +H5Z_filter_t DSetCreatPropList::getFilter(int filter_number, unsigned int &flags, size_t &cd_nelmts, + unsigned int* cd_values, size_t namelen, char name[], + unsigned int& filter_config) const { H5Z_filter_t filter_id; filter_id = H5Pget_filter( id, filter_number, &flags, &cd_nelmts, - cd_values, namelen, name ); + cd_values, namelen, name, &filter_config); if( filter_id == H5Z_FILTER_ERROR ) { throw PropListIException("DSetCreatPropList::getFilter", @@ -328,12 +331,15 @@ H5Z_filter_t DSetCreatPropList::getFilter(int filter_number, unsigned int &flags ///\param cd_values - OUT: Array to hold the data; allocated by the user ///\param namelen - IN: Length of \a name ///\param name - OUT: Name of the filter +///\param filter_config - OUT: Flags indicating whether filter can encode/decode ///\exception H5::PropListIException //-------------------------------------------------------------------------- -void DSetCreatPropList::getFilterById(H5Z_filter_t filter_id, unsigned int &flags, size_t &cd_nelmts, unsigned int* cd_values, size_t namelen, char name[]) const +void DSetCreatPropList::getFilterById(H5Z_filter_t filter_id, unsigned int &flags, size_t &cd_nelmts, + unsigned int* cd_values, size_t namelen, char name[], + unsigned int &filter_config) const { herr_t ret_value = H5Pget_filter_by_id(id, filter_id, &flags, &cd_nelmts, - cd_values, namelen, name ); + cd_values, namelen, name, &filter_config ); if (ret_value < 0) { throw PropListIException("DSetCreatPropList::getFilterById", diff --git a/c++/src/H5DcreatProp.h b/c++/src/H5DcreatProp.h index 765ce68..6ae1b75 100644 --- a/c++/src/H5DcreatProp.h +++ b/c++/src/H5DcreatProp.h @@ -67,10 +67,10 @@ class H5_DLLCPP DSetCreatPropList : public PropList { int getNfilters() const; // Returns information about a filter in a pipeline - H5Z_filter_t getFilter( int filter_number, unsigned int& flags, size_t& cd_nelmts, unsigned int* cd_values, size_t namelen, char name[] ) const; + H5Z_filter_t getFilter( int filter_number, unsigned int& flags, size_t& cd_nelmts, unsigned int* cd_values, size_t namelen, char name[], unsigned int &filter_config ) const; // Returns information about a filter in a pipeline given the filter id - void getFilterById(H5Z_filter_t filter_id, unsigned int &flags, size_t &cd_nelmts, unsigned int* cd_values, size_t namelen, char name[]) const; + void getFilterById(H5Z_filter_t filter_id, unsigned int &flags, size_t &cd_nelmts, unsigned int* cd_values, size_t namelen, char name[], unsigned int &filter_config) const; // Modifies the specified filter void modifyFilter( H5Z_filter_t filter_id, unsigned int flags, size_t cd_nelmts, const unsigned int cd_values[] ) const; diff --git a/c++/test/dsets.cpp b/c++/test/dsets.cpp index 0d58cd0..08ce98e 100644 --- a/c++/test/dsets.cpp +++ b/c++/test/dsets.cpp @@ -375,7 +375,9 @@ test_tconv( H5File& file) /* This message derives from H5Z */ const H5Z_class_t H5Z_BOGUS[1] = {{ + H5Z_CLASS_T_VERS, /* H5Z_class_t version number */ H5Z_FILTER_BOGUS, /* Filter id number */ + 1, 1, /* Encode and decode enabled */ "bogus", /* Filter name for debugging */ NULL, /* The "can apply" callback */ NULL, /* The "set local" callback */ |