summaryrefslogtreecommitdiffstats
path: root/c++/src/H5DataSet.cpp
diff options
context:
space:
mode:
authorBinh-Minh Ribler <bmribler@hdfgroup.org>2003-06-07 04:02:11 (GMT)
committerBinh-Minh Ribler <bmribler@hdfgroup.org>2003-06-07 04:02:11 (GMT)
commit5d1b56cb8170363220e21c8c8c38d2bddef27939 (patch)
treed1450c0b8b2b1a7628371342250372071ba754ae /c++/src/H5DataSet.cpp
parent4e4ab0d320597f3aa9a45170d92e8d578cc203db (diff)
downloadhdf5-5d1b56cb8170363220e21c8c8c38d2bddef27939.zip
hdf5-5d1b56cb8170363220e21c8c8c38d2bddef27939.tar.gz
hdf5-5d1b56cb8170363220e21c8c8c38d2bddef27939.tar.bz2
[svn-r6990] Purpose:
Bug fix and minor code enhancement Description: Missing methods to read/write C++ String for an attribute and a dataset. Solution: Added overloaded functions read and write to H5::Attribute and H5::DataSet. Also, added another constructor StrType so the need to separately set the length of the string type can be eliminated. It's minor but convenient. Made some minor changes to make error messages more readable. Platforms: SunOS 5.7 (arabica) Linux 2.4 (eirene) IRIX 6.5.11 (modi4) HPUX 11.00 (kelgia)
Diffstat (limited to 'c++/src/H5DataSet.cpp')
-rw-r--r--c++/src/H5DataSet.cpp26
1 files changed, 25 insertions, 1 deletions
diff --git a/c++/src/H5DataSet.cpp b/c++/src/H5DataSet.cpp
index 5eb640c..84bed5c 100644
--- a/c++/src/H5DataSet.cpp
+++ b/c++/src/H5DataSet.cpp
@@ -156,6 +156,20 @@ void DataSet::read( void* buf, const DataType& mem_type, const DataSpace& mem_sp
}
}
+void DataSet::read( string& strg, const DataType& mem_type, const DataSpace& mem_space, const DataSpace& file_space, const DSetMemXferPropList& xfer_plist ) const
+{
+ // Allocate C character string for reading
+ size_t size = mem_type.getSize();
+ char* strg_C = new char[size+1]; // temporary C-string for C API
+
+ // Use the overloaded member to read
+ read(strg_C, mem_type, mem_space, file_space, xfer_plist);
+
+ // Get the String and clean up
+ strg = strg_C;
+ delete strg_C;
+}
+
// Writes raw data from an application buffer buffer to a dataset,
// converting from memory datatype and dataspace to file datatype
// and dataspace.
@@ -174,6 +188,16 @@ void DataSet::write( const void* buf, const DataType& mem_type, const DataSpace&
}
}
+void DataSet::write( const string& strg, const DataType& mem_type, const DataSpace& mem_space, const DataSpace& file_space, const DSetMemXferPropList& xfer_plist ) const
+{
+ // Convert string to C-string
+ const char* strg_C;
+ strg_C = strg.c_str(); // strg_C refers to the contents of strg as a C-str
+
+ // Use the overloaded member
+ write(strg_C, mem_type, mem_space, file_space, xfer_plist);
+}
+
// Iterates over all selected elements in a dataspace.
int DataSet::iterateElems( void* buf, const DataType& type, const DataSpace& space, H5D_operator_t op, void* op_data )
{
@@ -262,7 +286,7 @@ DataSet::~DataSet()
try {
resetIdComponent( this ); }
catch (Exception close_error) { // thrown by p_close
- cerr << "DataSet::~DataSet" << close_error.getDetailMsg() << endl;
+ cerr << "DataSet::~DataSet - " << close_error.getDetailMsg() << endl;
}
}