summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--c++/src/H5DataSet.cpp30
-rw-r--r--c++/src/H5DataSet.h9
-rw-r--r--c++/src/H5StrType.cpp4
-rw-r--r--c++/src/H5StrType.h2
4 files changed, 38 insertions, 7 deletions
diff --git a/c++/src/H5DataSet.cpp b/c++/src/H5DataSet.cpp
index ae60e49..f275973 100644
--- a/c++/src/H5DataSet.cpp
+++ b/c++/src/H5DataSet.cpp
@@ -220,7 +220,7 @@ hsize_t DataSet::getVlenBufSize( DataType& type, DataSpace& space ) const
///\exception H5::DataSetIException
// Programmer Binh-Minh Ribler - 2000
//--------------------------------------------------------------------------
-void DataSet::vlenReclaim( DataType& type, DataSpace& space, DSetMemXferPropList& xfer_plist, void* buf ) const
+void DataSet::vlenReclaim(const DataType& type, const DataSpace& space, const DSetMemXferPropList& xfer_plist, void* buf )
{
// Obtain identifiers for C API
hid_t type_id = type.getId();
@@ -235,6 +235,34 @@ void DataSet::vlenReclaim( DataType& type, DataSpace& space, DSetMemXferPropList
}
//--------------------------------------------------------------------------
+// Function: DataSet::vlenReclaim
+///\brief Reclaims VL datatype memory buffers.
+///\param type - IN: Datatype, which is the datatype stored in the buffer
+///\param space - IN: Selection for the memory buffer to free the
+/// VL datatypes within
+///\param xfer_plist - IN: Property list used to create the buffer
+///\param buf - IN: Pointer to the buffer to be reclaimed
+///\exception H5::DataSetIException
+// Programmer Binh-Minh Ribler - 2000
+//\parDescription
+// This function has better prototype for the users than the
+// other, which might be removed at some point. BMR - 2006/12/20
+//--------------------------------------------------------------------------
+void DataSet::vlenReclaim(void* buf, const DataType& type, const DataSpace& space, const DSetMemXferPropList& xfer_plist)
+{
+ // Obtain identifiers for C API
+ hid_t type_id = type.getId();
+ hid_t space_id = space.getId();
+ hid_t xfer_plist_id = xfer_plist.getId();
+
+ herr_t ret_value = H5Dvlen_reclaim(type_id, space_id, xfer_plist_id, buf);
+ if (ret_value < 0)
+ {
+ throw DataSetIException("DataSet::vlenReclaim", "H5Dvlen_reclaim failed");
+ }
+}
+
+//--------------------------------------------------------------------------
// Function: DataSet::read
///\brief Reads raw data from the specified dataset.
///\param buf - IN: Buffer for read data
diff --git a/c++/src/H5DataSet.h b/c++/src/H5DataSet.h
index 1d2f1d7..f12b0ae 100644
--- a/c++/src/H5DataSet.h
+++ b/c++/src/H5DataSet.h
@@ -50,9 +50,12 @@ class H5_DLLCPP DataSet : public AbstractDs {
// Returns the amount of storage size required for this dataset.
hsize_t getStorageSize() const;
- // not yet implemented??
+ // Returns the number of bytes required to store VL data.
hsize_t getVlenBufSize( DataType& type, DataSpace& space ) const;
- void vlenReclaim( DataType& type, DataSpace& space, DSetMemXferPropList& xfer_plist, void* buf ) const;
+
+ // Reclaims VL datatype memory buffers.
+ static void vlenReclaim(const DataType& type, const DataSpace& space, const DSetMemXferPropList& xfer_plist, void* buf );
+ static void vlenReclaim(void *buf, const DataType& type, const DataSpace& space = DataSpace::ALL, const DSetMemXferPropList& xfer_plist = DSetMemXferPropList::DEFAULT);
// Reads the data of this dataset and stores it in the provided buffer.
// The memory and file dataspaces and the transferring property list
@@ -77,7 +80,7 @@ class H5_DLLCPP DataSet : public AbstractDs {
// Creates a reference to a named Hdf5 object or to a dataset region
// in this object.
- void* Reference(const char* name, DataSpace& dataspace, H5R_type_t ref_type = H5R_DATASET_REGION) const; // will be obsolete
+ void* Reference(const char* name, DataSpace& dataspace, H5R_type_t ref_type = H5R_DATASET_REGION) const;
// Creates a reference to a named Hdf5 object in this object.
void* Reference(const char* name) const; // will be obsolete
diff --git a/c++/src/H5StrType.cpp b/c++/src/H5StrType.cpp
index bbf2bf5..a47327d 100644
--- a/c++/src/H5StrType.cpp
+++ b/c++/src/H5StrType.cpp
@@ -74,7 +74,7 @@ StrType::StrType( const PredType& pred_type ) : AtomType()
/// its overloaded below as StrType(0, size).
// Programmer Binh-Minh Ribler - 2000
//--------------------------------------------------------------------------
-StrType::StrType( const PredType& pred_type, const size_t size ) : AtomType()
+StrType::StrType( const PredType& pred_type, const size_t& size ) : AtomType()
{
// use DataType::copy to make a copy of the string predefined type
// then set its length
@@ -179,7 +179,7 @@ void StrType::setCset( H5T_cset_t cset ) const
}
//--------------------------------------------------------------------------
-// Function: StrType::getCset
+// Function: StrType::getStrpad
///\brief Retrieves the storage mechanism for of this string datatype.
///\return String storage mechanism, which can be:
/// \li \c H5T_STR_NULLTERM (0) - Null terminate (as C does)
diff --git a/c++/src/H5StrType.h b/c++/src/H5StrType.h
index e9efa0b..481176e 100644
--- a/c++/src/H5StrType.h
+++ b/c++/src/H5StrType.h
@@ -26,7 +26,7 @@ class H5_DLLCPP StrType : public AtomType {
StrType(const PredType& pred_type);
// Creates a string type with specified length - may be obsolete
- StrType(const PredType& pred_type, const size_t size);
+ StrType(const PredType& pred_type, const size_t& size);
// Creates a string type with specified length
StrType(const int dummy, const size_t& size);