summaryrefslogtreecommitdiffstats
path: root/c++/src/H5DataSet.cpp
diff options
context:
space:
mode:
authorBinh-Minh Ribler <bmribler@hdfgroup.org>2008-10-27 02:30:06 (GMT)
committerBinh-Minh Ribler <bmribler@hdfgroup.org>2008-10-27 02:30:06 (GMT)
commit3677f54877df7df7cdaeff16cee8efce5b9bc98f (patch)
tree18f62ff1bce03347882f917a75c7e95d8da80d1b /c++/src/H5DataSet.cpp
parentff3481d9577d0d826403bc03c4842f3bd5ed7c0d (diff)
downloadhdf5-3677f54877df7df7cdaeff16cee8efce5b9bc98f.zip
hdf5-3677f54877df7df7cdaeff16cee8efce5b9bc98f.tar.gz
hdf5-3677f54877df7df7cdaeff16cee8efce5b9bc98f.tar.bz2
[svn-r15959] Description:
Added missing wrappers for H5Rdereference. Also, for these wrappers, improved exception handlings to report specific overloaded functions, where failure occurs. Will do the same for more functions later... Platforms tested: Linux 2.6 (kagiso) SunOS 5.10 (linew) FreeBSD (duty)
Diffstat (limited to 'c++/src/H5DataSet.cpp')
-rw-r--r--c++/src/H5DataSet.cpp70
1 files changed, 61 insertions, 9 deletions
diff --git a/c++/src/H5DataSet.cpp b/c++/src/H5DataSet.cpp
index 6d7502a..494d3ea 100644
--- a/c++/src/H5DataSet.cpp
+++ b/c++/src/H5DataSet.cpp
@@ -35,6 +35,7 @@
#include "H5DataSpace.h"
#include "H5AbstractDs.h"
#include "H5File.h"
+#include "H5Attribute.h"
#include "H5DataSet.h"
#ifndef H5_NO_NAMESPACE
@@ -77,24 +78,75 @@ DataSet::DataSet(const DataSet& original) : AbstractDs(original), H5Object(origi
//--------------------------------------------------------------------------
// Function: DataSet overload constructor - dereference
-///\brief Given a reference to some object, returns that dataset
-/// obj - IN: Dataset reference object is in or location of
-/// object that the dataset is located within.
+///\brief Given a reference, ref, to an hdf5 dataset, creates a
+/// DataSet object
+///\param obj - IN: Dataset reference object is in or location of
+/// object that the dataset is located within.
///\param ref - IN: Reference pointer
+///\param ref_type - IN: Reference type - default to H5R_OBJECT
///\exception H5::DataSetIException
-///\parDescription
-/// \c obj can be DataSet, Group, H5File, or named DataType, that
+///\par Description
+/// \c obj can be DataSet, Group, H5File, or named DataType, that
/// is a datatype that has been named by DataType::commit.
// Programmer Binh-Minh Ribler - Oct, 2006
+// Modification
+// Jul, 2008
+// Added for application convenience.
+//--------------------------------------------------------------------------
+DataSet::DataSet(H5Object& obj, const void* ref, H5R_type_t ref_type) : AbstractDs(), H5Object()
+{
+ try {
+ id = p_dereference(obj.getId(), ref, ref_type);
+ } catch (ReferenceException deref_error) {
+ throw ReferenceException("DataSet constructor - located by object",
+ deref_error.getDetailMsg());
+ }
+}
+
+//--------------------------------------------------------------------------
+// Function: DataSet overload constructor - dereference
+///\brief Given a reference, ref, to an hdf5 dataset, creates a
+/// DataSet object
+///\param h5file - IN: Location referenced object is in
+///\param ref - IN: Reference pointer
+///\param ref_type - IN: Reference type - default to H5R_OBJECT
+///\exception H5::DataSetIException
+// Programmer Binh-Minh Ribler - Oct, 2006
+// Modification
+// Jul, 2008
+// Added for application convenience.
//--------------------------------------------------------------------------
-DataSet::DataSet(H5Object& obj, void* ref) : AbstractDs(), H5Object()
+DataSet::DataSet(H5File& h5file, const void* ref, H5R_type_t ref_type) : AbstractDs(), H5Object()
{
- id = obj.p_dereference(ref);
+ try {
+ id = p_dereference(h5file.getId(), ref, ref_type);
+ } catch (ReferenceException deref_error) {
+ throw ReferenceException("DataSet constructor - located by HDF5 file",
+ deref_error.getDetailMsg());
+ }
}
-DataSet::DataSet(H5File& h5file, void* ref) : AbstractDs(), H5Object()
+//--------------------------------------------------------------------------
+// Function: DataSet overload constructor - dereference
+///\brief Given a reference, ref, to an hdf5 dataset, creates a
+/// DataSet object
+///\param attr - IN: Specifying location where the referenced object is in
+///\param ref - IN: Reference pointer
+///\param ref_type - IN: Reference type - default to H5R_OBJECT
+///\exception H5::ReferenceException
+// Programmer Binh-Minh Ribler - Oct, 2006
+// Modification
+// Jul, 2008
+// Added for application convenience.
+//--------------------------------------------------------------------------
+DataSet::DataSet(Attribute& attr, const void* ref, H5R_type_t ref_type) : AbstractDs(), H5Object()
{
- id = h5file.p_dereference(ref);
+ try {
+ id = p_dereference(attr.getId(), ref, ref_type);
+ } catch (ReferenceException deref_error) {
+ throw ReferenceException("DataSet constructor - located by attribute",
+ deref_error.getDetailMsg());
+ }
}
//--------------------------------------------------------------------------