diff options
author | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2008-10-27 02:30:06 (GMT) |
---|---|---|
committer | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2008-10-27 02:30:06 (GMT) |
commit | 3677f54877df7df7cdaeff16cee8efce5b9bc98f (patch) | |
tree | 18f62ff1bce03347882f917a75c7e95d8da80d1b /c++/src/H5DataSet.cpp | |
parent | ff3481d9577d0d826403bc03c4842f3bd5ed7c0d (diff) | |
download | hdf5-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.cpp | 70 |
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()); + } } //-------------------------------------------------------------------------- |