summaryrefslogtreecommitdiffstats
path: root/c++/src/H5DxferProp.cpp
diff options
context:
space:
mode:
authorBinh-Minh Ribler <bmribler@hdfgroup.org>2000-12-07 00:04:08 (GMT)
committerBinh-Minh Ribler <bmribler@hdfgroup.org>2000-12-07 00:04:08 (GMT)
commitf148ff3caf533e9f6029798617f0a8087bcd6c05 (patch)
tree00bb6ca4d0e50aa0e591eed6a0d739c04c93c5e7 /c++/src/H5DxferProp.cpp
parent7df8cd5cfe22372f603ea058334647fe4017008e (diff)
downloadhdf5-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.cpp183
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