diff options
author | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2000-12-07 00:04:08 (GMT) |
---|---|---|
committer | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2000-12-07 00:04:08 (GMT) |
commit | f148ff3caf533e9f6029798617f0a8087bcd6c05 (patch) | |
tree | 00bb6ca4d0e50aa0e591eed6a0d739c04c93c5e7 /c++/src/H5DxferProp.cpp | |
parent | 7df8cd5cfe22372f603ea058334647fe4017008e (diff) | |
download | hdf5-f148ff3caf533e9f6029798617f0a8087bcd6c05.zip hdf5-f148ff3caf533e9f6029798617f0a8087bcd6c05.tar.gz hdf5-f148ff3caf533e9f6029798617f0a8087bcd6c05.tar.bz2 |
[svn-r3080]
Purpose:
Support portability
Description:
I forgot that source file extension .C will not work on Windows.
Solution:
Changed all source file from *.C to *.cpp for portability.
Platforms tested:
arabica (sparc-sun-solaris 2.7)
Diffstat (limited to 'c++/src/H5DxferProp.cpp')
-rw-r--r-- | c++/src/H5DxferProp.cpp | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/c++/src/H5DxferProp.cpp b/c++/src/H5DxferProp.cpp new file mode 100644 index 0000000..ff96b66 --- /dev/null +++ b/c++/src/H5DxferProp.cpp @@ -0,0 +1,183 @@ +#include <string> + +#include "H5Include.h" +#include "H5RefCounter.h" +#include "H5Exception.h" +#include "H5IdComponent.h" +#include "H5PropList.h" +#include "H5DxferProp.h" + +#ifndef H5_NO_NAMESPACE +namespace H5 { +#endif + +const DSetMemXferPropList DSetMemXferPropList::DEFAULT( H5P_DEFAULT ); + +// Creates a dataset memory and transfer property list +DSetMemXferPropList::DSetMemXferPropList() : PropList( H5P_DATASET_XFER ) {} + +// Copy constructor: makes a copy of the original DSetMemXferPropList object; +DSetMemXferPropList::DSetMemXferPropList( const DSetMemXferPropList& orig ) : PropList( orig ) {} + +// Copies a dataset transfer property list using assignment statement +// Notes: can this be inherited from PropList??? and copy or operator=??? +DSetMemXferPropList& DSetMemXferPropList::operator=( const DSetMemXferPropList& rhs ) +{ + copy (rhs); + return( *this ); +} + +// Sets type conversion and background buffers +void DSetMemXferPropList::setBuffer( size_t size, void* tconv, void* bkg ) const +{ + herr_t ret_value = H5Pset_buffer( id, size, tconv, bkg ); + if( ret_value < 0 ) + { + throw PropListIException(); + } +} + +// Reads buffer settings +size_t DSetMemXferPropList::getBuffer( void** tconv, void** bkg ) const +{ + size_t buffer_size = H5Pget_buffer( id, tconv, bkg ); + if( buffer_size == 0 ) + { + throw PropListIException(); + } + return( buffer_size ); +} + +// Sets the dataset transfer property list status to TRUE or FALSE +void DSetMemXferPropList::setPreserve( bool status ) const +{ + herr_t ret_value = H5Pset_preserve( id, (hbool_t) status ); + if( ret_value < 0 ) + { + throw PropListIException(); + } +} + +// Checks status of the dataset transfer property list +bool DSetMemXferPropList::getPreserve() const +{ + int ret_value = H5Pget_preserve( id ); + if( ret_value > 0 ) + return true; + else if( ret_value == 0 ) + return false; + else + { + throw PropListIException(); + } +} + +// Indicates whether to cache hyperslab blocks during I/O +void DSetMemXferPropList::setHyperCache( bool cache, unsigned limit ) const +{ + herr_t ret_value = H5Pset_hyper_cache( id, cache, limit ); + if( ret_value < 0 ) + { + throw PropListIException(); + } +} + +// Returns information regarding the caching of hyperslab blocks during I/O +void DSetMemXferPropList::getHyperCache( bool& cache, unsigned& limit ) const +{ + unsigned temp_cache; // C routine takes hid_t, unsigned*, unsigned* + herr_t ret_value = H5Pget_hyper_cache( id, &temp_cache, &limit ); + if( ret_value < 0 ) + { + throw PropListIException(); + } + if( temp_cache > 0 ) + cache = true; + else + cache = false; +} + +// Sets B-tree split ratios for a dataset transfer property list +void DSetMemXferPropList::setBtreeRatios( double left, double middle, double right ) const +{ + herr_t ret_value = H5Pset_btree_ratios( id, left, middle, right ); + if( ret_value < 0 ) + { + throw PropListIException(); + } +} + +// Gets B-tree split ratios for a dataset transfer property list +void DSetMemXferPropList::getBtreeRatios( double& left, double& middle, double& right ) const +{ + herr_t ret_value = H5Pget_btree_ratios( id, &left, &middle, &right ); + if( ret_value < 0 ) + { + throw PropListIException(); + } +} + +// Sets the memory manager for variable-length datatype allocation +void DSetMemXferPropList::setVlenMemManager( H5MM_allocate_t alloc_func, void* alloc_info, H5MM_free_t free_func, void* free_info ) const +{ + herr_t ret_value = H5Pset_vlen_mem_manager( id, alloc_func, alloc_info, + free_func, free_info ); + if( ret_value < 0 ) + { + throw PropListIException(); + } +} + +// alloc_func and free_func are set to NULL, indicating that system malloc and +// free are to be used +void DSetMemXferPropList::setVlenMemManager() const +{ + setVlenMemManager( NULL, NULL, NULL, NULL ); + //herr_t ret_value = H5Pset_vlen_mem_manager( id, NULL, NULL, NULL, NULL ); + //if( ret_value < 0 ) + //{ + //throw PropListIException(); + //} +} + +// Gets the memory manager for variable-length datatype allocation +void DSetMemXferPropList::getVlenMemManager( H5MM_allocate_t& alloc_func, void** alloc_info, H5MM_free_t& free_func, void** free_info ) const +{ + herr_t ret_value = H5Pget_vlen_mem_manager( id, &alloc_func, alloc_info, &free_func, free_info ); + if( ret_value < 0 ) + { + throw PropListIException(); + } +} + +/* these two functions are in parallel mode only - not supported at this time. +// Sets the transfer mode +void DSetMemXferPropList::setXfer( H5D_transfer_t data_xfer_mode = H5D_XFER_INDEPENDENT ) const +{ + herr_t ret_value = H5Pset_xfer( ... ); + if( ret_value < 0 ) + { + throw PropListIException(); + } +} + +// Gets the transfer mode +H5D_transfer_t DSetMemXferPropList::getXfer() const +{ + H5D_transfer_t xfer = H5Pget_xfer( id ); +// remove when done - find out what the value is for ?? + if( xfer == ?? ) + { + throw PropListIException(); + } + return( xfer ); +} + +*/ + +// Default destructor +DSetMemXferPropList::~DSetMemXferPropList() {} + +#ifndef H5_NO_NAMESPACE +} // end namespace +#endif |