summaryrefslogtreecommitdiffstats
path: root/c++/src
diff options
context:
space:
mode:
authorBinh-Minh Ribler <bmribler@hdfgroup.org>2013-09-19 02:41:00 (GMT)
committerBinh-Minh Ribler <bmribler@hdfgroup.org>2013-09-19 02:41:00 (GMT)
commitd95f5e293a2c550f24522a98873a08ad7942ee06 (patch)
treec5cf910060adc63724b65e57f540261f33961063 /c++/src
parent18b896112c1fd7db68323a9dd4a18cfa19deedc2 (diff)
downloadhdf5-d95f5e293a2c550f24522a98873a08ad7942ee06.zip
hdf5-d95f5e293a2c550f24522a98873a08ad7942ee06.tar.gz
hdf5-d95f5e293a2c550f24522a98873a08ad7942ee06.tar.bz2
[svn-r24162] backing out a commit that includes wrong files
Diffstat (limited to 'c++/src')
-rw-r--r--c++/src/H5Attribute.cpp1
-rw-r--r--c++/src/H5CommonFG.cpp131
-rw-r--r--c++/src/H5CommonFG.h12
-rw-r--r--c++/src/H5DataSet.cpp49
-rw-r--r--c++/src/H5DataSet.h8
-rw-r--r--c++/src/H5DataSpace.cpp2
-rw-r--r--c++/src/H5DataType.cpp13
-rw-r--r--c++/src/H5DataType.h8
-rw-r--r--c++/src/H5File.h3
-rw-r--r--c++/src/H5Group.cpp17
-rw-r--r--c++/src/H5Group.h10
-rw-r--r--c++/src/H5IdComponent.cpp2
-rw-r--r--c++/src/H5Location.cpp421
-rw-r--r--c++/src/H5Location.h51
-rw-r--r--c++/src/H5Object.cpp1
-rw-r--r--c++/src/H5PropList.cpp5
16 files changed, 359 insertions, 375 deletions
diff --git a/c++/src/H5Attribute.cpp b/c++/src/H5Attribute.cpp
index a98a970..d684b8f 100644
--- a/c++/src/H5Attribute.cpp
+++ b/c++/src/H5Attribute.cpp
@@ -44,7 +44,6 @@ namespace H5 {
#endif // H5_NO_STD
#endif
-class H5_DLLCPP H5Object; // forward declaration for UserData4Aiterate
//--------------------------------------------------------------------------
// Function: Attribute default constructor
///\brief Default constructor: Creates a stub attribute
diff --git a/c++/src/H5CommonFG.cpp b/c++/src/H5CommonFG.cpp
index 3bf4b4f..d6fe5dc 100644
--- a/c++/src/H5CommonFG.cpp
+++ b/c++/src/H5CommonFG.cpp
@@ -460,6 +460,137 @@ H5std_string CommonFG::getLinkval( const H5std_string& name, size_t size ) const
}
//--------------------------------------------------------------------------
+// Function: CommonFG::setComment
+///\brief Sets or resets the comment for an object specified by its name.
+///\param name - IN: Name of the object
+///\param comment - IN: New comment
+///\exception H5::FileIException or H5::GroupIException
+///\par Description
+/// If \a comment is an empty string or a null pointer, the comment
+/// message is removed from the object.
+/// Comments should be relatively short, null-terminated, ASCII
+/// strings. They can be attached to any object that has an
+/// object header, e.g., data sets, groups, named data types,
+/// and data spaces, but not symbolic links.
+// Programmer Binh-Minh Ribler - 2000
+// Modification
+// 2007: QAK modified to use H5O APIs; however the first parameter is
+// no longer just file or group, this function should be moved
+// to another class to accommodate attribute, dataset, and named
+// datatype. - BMR
+//--------------------------------------------------------------------------
+void CommonFG::setComment( const char* name, const char* comment ) const
+{
+ herr_t ret_value = H5Oset_comment_by_name( getLocId(), name, comment, H5P_DEFAULT );
+ if( ret_value < 0 )
+ throwException("setComment", "H5Oset_comment_by_name failed");
+}
+
+//--------------------------------------------------------------------------
+// Function: CommonFG::setComment
+///\brief This is an overloaded member function, provided for convenience.
+/// It differs from the above function in that it takes an
+/// \c H5std_string for \a name and \a comment.
+// Programmer Binh-Minh Ribler - 2000
+//--------------------------------------------------------------------------
+void CommonFG::setComment( const H5std_string& name, const H5std_string& comment ) const
+{
+ setComment( name.c_str(), comment.c_str() );
+}
+
+//--------------------------------------------------------------------------
+// Function: CommonFG::removeComment
+///\brief Removes the comment from an object specified by its name.
+///\param name - IN: Name of the object
+///\exception H5::FileIException or H5::GroupIException
+// Programmer Binh-Minh Ribler - May 2005
+// 2007: QAK modified to use H5O APIs; however the first parameter is
+// no longer just file or group, this function should be moved
+// to another class to accommodate attribute, dataset, and named
+// datatype. - BMR
+//--------------------------------------------------------------------------
+void CommonFG::removeComment(const char* name) const
+{
+ herr_t ret_value = H5Oset_comment_by_name(getLocId(), name, NULL, H5P_DEFAULT);
+ if( ret_value < 0 )
+ throwException("removeComment", "H5Oset_comment_by_name failed");
+}
+
+//--------------------------------------------------------------------------
+// Function: CommonFG::removeComment
+///\brief This is an overloaded member function, provided for convenience.
+/// It differs from the above function in that it takes an
+/// \c H5std_string for \a name.
+// Programmer Binh-Minh Ribler - May 2005
+//--------------------------------------------------------------------------
+void CommonFG::removeComment(const H5std_string& name) const
+{
+ removeComment (name.c_str());
+}
+
+//--------------------------------------------------------------------------
+// Function: CommonFG::getComment
+///\brief Retrieves comment for the specified object and its comment's
+/// length.
+///\param name - IN: Name of the object
+///\param bufsize - IN: Length of the comment to retrieve
+///\return Comment string
+///\exception H5::FileIException or H5::GroupIException
+// Programmer Binh-Minh Ribler - 2000
+// 2007: QAK modified to use H5O APIs; however the first parameter is
+// no longer just file or group, this function should be moved
+// to another class to accommodate attribute, dataset, and named
+// datatype. - BMR
+//--------------------------------------------------------------------------
+H5std_string CommonFG::getComment( const char* name, size_t bufsize ) const
+{
+ // bufsize is default to 256
+ // temporary variable
+ hid_t loc_id = getLocId(); // temporary variable
+
+ // temporary C-string for the object's comment; bufsize already including
+ // null character
+ char* comment_C = new char[bufsize];
+ ssize_t ret_value = H5Oget_comment_by_name(loc_id, name, comment_C, bufsize, H5P_DEFAULT);
+
+ // if the actual length of the comment is longer than bufsize and bufsize
+ // was the default value, i.e., not given by the user, then call
+ // H5Oget_comment_by_name again with the correct value.
+ // If the call to H5Oget_comment_by_name returned an error, skip this block
+ // and throw an exception below.
+ if (ret_value >= 0 && (size_t)ret_value > bufsize && bufsize == 256)
+ {
+ size_t new_size = ret_value;
+ delete []comment_C;
+ comment_C = new char[new_size]; // new_size including null terminator
+ ret_value = H5Oget_comment_by_name(loc_id, name, comment_C, new_size, H5P_DEFAULT);
+ }
+
+ // if H5Oget_comment_by_name returns SUCCEED, return the string comment,
+ // otherwise, throw an exception
+ if( ret_value < 0 ) {
+ delete []comment_C;
+ throwException("getComment", "H5Oget_comment_by_name failed");
+ }
+
+ H5std_string comment = H5std_string(comment_C);
+ delete []comment_C;
+ return (comment);
+}
+
+//--------------------------------------------------------------------------
+// Function: CommonFG::getComment
+///\brief This is an overloaded member function, provided for convenience.
+/// It differs from the above function in that it takes an
+/// \c H5std_string for \a name.
+// Programmer Binh-Minh Ribler - 2000
+//--------------------------------------------------------------------------
+H5std_string CommonFG::getComment( const H5std_string& name, size_t bufsize ) const
+{
+ return( getComment( name.c_str(), bufsize ));
+}
+
+//--------------------------------------------------------------------------
// Function: CommonFG::mount
///\brief Mounts the file \a child onto this group.
///\param name - IN: Name of the group
diff --git a/c++/src/H5CommonFG.h b/c++/src/H5CommonFG.h
index b02b05b..22e193a 100644
--- a/c++/src/H5CommonFG.h
+++ b/c++/src/H5CommonFG.h
@@ -49,6 +49,18 @@ class H5_DLLCPP CommonFG {
DataSet openDataSet(const char* name) const;
DataSet openDataSet(const H5std_string& name) const;
+ // Retrieves comment for the HDF5 object specified by its name.
+ H5std_string getComment(const char* name, size_t bufsize=256) const;
+ H5std_string getComment(const H5std_string& name, size_t bufsize=256) const;
+
+ // Removes the comment for the HDF5 object specified by its name.
+ void removeComment(const char* name) const;
+ void removeComment(const H5std_string& name) const;
+
+ // Sets the comment for an HDF5 object specified by its name.
+ void setComment(const char* name, const char* comment) const;
+ void setComment(const H5std_string& name, const H5std_string& comment) const;
+
// Returns the value of a symbolic link.
H5std_string getLinkval(const char* link_name, size_t size=0) const;
H5std_string getLinkval(const H5std_string& link_name, size_t size=0) const;
diff --git a/c++/src/H5DataSet.cpp b/c++/src/H5DataSet.cpp
index 7f6c553..3e3893c 100644
--- a/c++/src/H5DataSet.cpp
+++ b/c++/src/H5DataSet.cpp
@@ -27,7 +27,6 @@
#include "H5Object.h"
#include "H5PropList.h"
#include "H5DxferProp.h"
-#include "H5DaccProp.h"
#include "H5DcreatProp.h"
#include "H5FaccProp.h"
#include "H5FcreatProp.h"
@@ -80,29 +79,57 @@ DataSet::DataSet(const DataSet& original) : AbstractDs(original), H5Object(origi
//--------------------------------------------------------------------------
// Function: DataSet overload constructor - dereference
-///\brief Given a reference, ref, to an hdf5 location, creates a
+///\brief Given a reference, ref, to an hdf5 dataset, creates a
/// DataSet object
-///\param loc - IN: Dataset reference object is in or location of
+///\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
///\par Description
-/// \c loc can be DataSet, Group, H5File, or named DataType, that
+/// \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(const H5Location& loc, const void* ref, H5R_type_t ref_type, const PropList& plist) : AbstractDs(), H5Object()
+DataSet::DataSet(H5Object& obj, const void* ref, H5R_type_t ref_type) : AbstractDs(), H5Object()
{
- H5Location::dereference(loc, ref, ref_type, plist);
+ 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 attribute, creates a
+///\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(H5File& h5file, const void* ref, H5R_type_t ref_type) : AbstractDs(), H5Object()
+{
+ try {
+ id = p_dereference(h5file.getId(), ref, ref_type);
+ } catch (ReferenceException deref_error) {
+ throw ReferenceException("DataSet constructor - located by HDF5 file",
+ deref_error.getDetailMsg());
+ }
+}
+
+//--------------------------------------------------------------------------
+// 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
@@ -113,12 +140,12 @@ DataSet::DataSet(const H5Location& loc, const void* ref, H5R_type_t ref_type, co
// Jul, 2008
// Added for application convenience.
//--------------------------------------------------------------------------
-DataSet::DataSet(const Attribute& attr, const void* ref, H5R_type_t ref_type, const PropList& plist) : AbstractDs(), H5Object()
+DataSet::DataSet(Attribute& attr, const void* ref, H5R_type_t ref_type) : AbstractDs(), H5Object()
{
- try {
- id = p_dereference(attr.getId(), ref, ref_type, plist);
+ try {
+ id = p_dereference(attr.getId(), ref, ref_type);
} catch (ReferenceException deref_error) {
- throw ReferenceException("DataSet constructor - by dereferenced",
+ throw ReferenceException("DataSet constructor - located by attribute",
deref_error.getDetailMsg());
}
}
diff --git a/c++/src/H5DataSet.h b/c++/src/H5DataSet.h
index e2fe702..bc80046 100644
--- a/c++/src/H5DataSet.h
+++ b/c++/src/H5DataSet.h
@@ -76,12 +76,16 @@ class H5_DLLCPP DataSet : public H5Object, public AbstractDs {
// Iterates the selected elements in the specified dataspace - not implemented in C++ style yet
int iterateElems( void* buf, const DataType& type, const DataSpace& space, H5D_operator_t op, void* op_data = NULL );
+ // Retrieves a dataspace with the region pointed to selected.
+ DataSpace getRegion(void *ref, H5R_type_t ref_type = H5R_DATASET_REGION) const;
+
///\brief Returns this class name.
virtual H5std_string fromClass () const { return("DataSet"); }
// Creates a dataset by way of dereference.
- DataSet(const H5Location& loc, const void* ref, H5R_type_t ref_type = H5R_OBJECT, const PropList& plist = PropList::DEFAULT);
- DataSet(const Attribute& attr, const void* ref, H5R_type_t ref_type = H5R_OBJECT, const PropList& plist = PropList::DEFAULT);
+ DataSet(H5Object& obj, const void* ref, H5R_type_t ref_type = H5R_OBJECT);
+ DataSet(H5File& h5file, const void* ref, H5R_type_t ref_type = H5R_OBJECT);
+ DataSet(Attribute& attr, const void* ref, H5R_type_t ref_type = H5R_OBJECT);
// Default constructor.
DataSet();
diff --git a/c++/src/H5DataSpace.cpp b/c++/src/H5DataSpace.cpp
index 059c812..2e2bb35 100644
--- a/c++/src/H5DataSpace.cpp
+++ b/c++/src/H5DataSpace.cpp
@@ -446,7 +446,7 @@ void DataSpace::getSelectBounds ( hsize_t* start, hsize_t* end ) const
}
//--------------------------------------------------------------------------
-// Function: DataSpace::selectElements
+// Function: DataSpace::H5Sselect_elements
///\brief Selects array elements to be included in the selection for
/// this dataspace.
///\param op - IN: Operator specifying how the new selection is to be
diff --git a/c++/src/H5DataType.cpp b/c++/src/H5DataType.cpp
index 9e9433f..8a62471 100644
--- a/c++/src/H5DataType.cpp
+++ b/c++/src/H5DataType.cpp
@@ -100,7 +100,7 @@ DataType::DataType( const H5T_class_t type_class, size_t size ) : H5Object()
// Jul, 2008
// Added for application convenience.
//--------------------------------------------------------------------------
- /* DataType::DataType(H5Object& obj, const void* ref, H5R_type_t ref_type) : H5Object()
+DataType::DataType(H5Object& obj, const void* ref, H5R_type_t ref_type) : H5Object()
{
try {
id = p_dereference(obj.getId(), ref, ref_type);
@@ -109,7 +109,6 @@ DataType::DataType( const H5T_class_t type_class, size_t size ) : H5Object()
deref_error.getDetailMsg());
}
}
- */
//--------------------------------------------------------------------------
// Function: DataType overload constructor - dereference
@@ -124,16 +123,14 @@ DataType::DataType( const H5T_class_t type_class, size_t size ) : H5Object()
// Jul, 2008
// Added for application convenience.
//--------------------------------------------------------------------------
-DataType::DataType(const H5Location& loc, const void* ref, H5R_type_t ref_type, const PropList& plist) : H5Object()
+DataType::DataType(H5File& h5file, const void* ref, H5R_type_t ref_type) : H5Object()
{
- H5Location::dereference(loc, ref, ref_type, plist);
- /* try {
+ try {
id = p_dereference(h5file.getId(), ref, ref_type);
} catch (ReferenceException deref_error) {
throw ReferenceException("DataType constructor - located by an H5File",
deref_error.getDetailMsg());
}
- */
}
//--------------------------------------------------------------------------
@@ -149,10 +146,10 @@ DataType::DataType(const H5Location& loc, const void* ref, H5R_type_t ref_type,
// Jul, 2008
// Added for application convenience.
//--------------------------------------------------------------------------
-DataType::DataType(const Attribute& attr, const void* ref, H5R_type_t ref_type, const PropList& plist) : H5Object()
+DataType::DataType(Attribute& attr, const void* ref, H5R_type_t ref_type) : H5Object()
{
try {
- id = p_dereference(attr.getId(), ref, ref_type, plist);
+ id = p_dereference(attr.getId(), ref, ref_type);
} catch (ReferenceException deref_error) {
throw ReferenceException("DataType constructor - located by an Attribute",
deref_error.getDetailMsg());
diff --git a/c++/src/H5DataType.h b/c++/src/H5DataType.h
index e4254b0..6e56622 100644
--- a/c++/src/H5DataType.h
+++ b/c++/src/H5DataType.h
@@ -30,8 +30,9 @@ class H5_DLLCPP DataType : public H5Object {
DataType( const DataType& original );
// Creates a datatype by way of dereference.
- DataType(const H5Location& loc, const void* ref, H5R_type_t ref_type = H5R_OBJECT, const PropList& plist = PropList::DEFAULT);
- DataType(const Attribute& attr, const void* ref, H5R_type_t ref_type = H5R_OBJECT, const PropList& plist = PropList::DEFAULT);
+ DataType(H5Object& obj, const void* ref, H5R_type_t ref_type = H5R_OBJECT);
+ DataType(H5File& h5file, const void* ref, H5R_type_t ref_type = H5R_OBJECT);
+ DataType(Attribute& attr, const void* ref, H5R_type_t ref_type = H5R_OBJECT);
// Closes this datatype.
virtual void close();
@@ -100,6 +101,9 @@ class H5_DLLCPP DataType : public H5Object {
// Checks whether this datatype is a variable-length string.
bool isVariableStr() const;
+ // Retrieves a dataspace with the region pointed to selected.
+ DataSpace getRegion(void *ref, H5R_type_t ref_type = H5R_DATASET_REGION) const;
+
///\brief Returns this class name.
virtual H5std_string fromClass () const { return("DataType"); }
diff --git a/c++/src/H5File.h b/c++/src/H5File.h
index 2abffea..f906de6 100644
--- a/c++/src/H5File.h
+++ b/c++/src/H5File.h
@@ -61,6 +61,9 @@ class H5_DLLCPP H5File : public H5Location, public CommonFG {
// and datatypes) in the same file.
void getObjIDs(unsigned types, size_t max_objs, hid_t *oid_list) const;
+ // Retrieves a dataspace with the region pointed to selected.
+ DataSpace getRegion(void *ref, H5R_type_t ref_type = H5R_DATASET_REGION) const;
+
// Returns the pointer to the file handle of the low-level file driver.
void getVFDHandle(FileAccPropList& fapl, void **file_handle) const;
void getVFDHandle(void **file_handle) const;
diff --git a/c++/src/H5Group.cpp b/c++/src/H5Group.cpp
index 3150025..eff7e50 100644
--- a/c++/src/H5Group.cpp
+++ b/c++/src/H5Group.cpp
@@ -99,18 +99,14 @@ Group::Group(const hid_t existing_id) : H5Object()
/// is a datatype that has been named by DataType::commit.
// Programmer Binh-Minh Ribler - Oct, 2006
//--------------------------------------------------------------------------
- /* Group::Group(H5Object& obj, const void* ref, H5R_type_t ref_type) : H5Object()
- */
-Group::Group(const H5Location& loc, const void* ref, H5R_type_t ref_type, const PropList& plist) : H5Object()
+Group::Group(H5Object& obj, const void* ref, H5R_type_t ref_type) : H5Object()
{
- H5Location::dereference(loc, ref, ref_type, plist);
- /* try {
- id = p_dereference(loc.getId(), ref, ref_type);
+ try {
+ id = p_dereference(obj.getId(), ref, ref_type);
} catch (ReferenceException deref_error) {
throw ReferenceException("Group constructor - located by an H5Object",
deref_error.getDetailMsg());
}
- */
}
//--------------------------------------------------------------------------
@@ -122,7 +118,7 @@ Group::Group(const H5Location& loc, const void* ref, H5R_type_t ref_type, const
///\exception H5::ReferenceException
// Programmer Binh-Minh Ribler - Oct, 2006
//--------------------------------------------------------------------------
- /* Group::Group(H5File& h5file, const void* ref, H5R_type_t ref_type) : H5Object()
+Group::Group(H5File& h5file, const void* ref, H5R_type_t ref_type) : H5Object()
{
try {
id = p_dereference(h5file.getId(), ref, ref_type);
@@ -131,7 +127,6 @@ Group::Group(const H5Location& loc, const void* ref, H5R_type_t ref_type, const
deref_error.getDetailMsg());
}
}
- */
//--------------------------------------------------------------------------
// Function: Group overload constructor - dereference
@@ -142,10 +137,10 @@ Group::Group(const H5Location& loc, const void* ref, H5R_type_t ref_type, const
///\exception H5::ReferenceException
// Programmer Binh-Minh Ribler - Oct, 2006
//--------------------------------------------------------------------------
-Group::Group(const Attribute& attr, const void* ref, H5R_type_t ref_type, const PropList& plist) : H5Object()
+Group::Group(Attribute& attr, const void* ref, H5R_type_t ref_type) : H5Object()
{
try {
- id = p_dereference(attr.getId(), ref, ref_type, plist);
+ id = p_dereference(attr.getId(), ref, ref_type);
} catch (ReferenceException deref_error) {
throw ReferenceException("Group constructor - located by an Attribute",
deref_error.getDetailMsg());
diff --git a/c++/src/H5Group.h b/c++/src/H5Group.h
index 4003c21..3b53293 100644
--- a/c++/src/H5Group.h
+++ b/c++/src/H5Group.h
@@ -26,6 +26,9 @@ class H5_DLLCPP Group : public H5Object, public CommonFG {
// Close this group.
virtual void close();
+ // Retrieves a dataspace with the region pointed to selected.
+ DataSpace getRegion(void *ref, H5R_type_t ref_type = H5R_DATASET_REGION) const;
+
///\brief Returns this class name.
virtual H5std_string fromClass () const { return("Group"); }
@@ -36,10 +39,9 @@ class H5_DLLCPP Group : public H5Object, public CommonFG {
virtual hid_t getLocId() const;
// Creates a group by way of dereference.
- Group(const H5Location& loc, const void* ref, H5R_type_t ref_type = H5R_OBJECT, const PropList& plist = PropList::DEFAULT);
- /* Group(H5File& h5file, const void* ref, H5R_type_t ref_type = H5R_OBJECT);
- */
- Group(const Attribute& attr, const void* ref, H5R_type_t ref_type = H5R_OBJECT, const PropList& plist = PropList::DEFAULT);
+ Group(H5Object& obj, const void* ref, H5R_type_t ref_type = H5R_OBJECT);
+ Group(H5File& h5file, const void* ref, H5R_type_t ref_type = H5R_OBJECT);
+ Group(Attribute& attr, const void* ref, H5R_type_t ref_type = H5R_OBJECT);
// default constructor
Group();
diff --git a/c++/src/H5IdComponent.cpp b/c++/src/H5IdComponent.cpp
index f902116..4a997ab 100644
--- a/c++/src/H5IdComponent.cpp
+++ b/c++/src/H5IdComponent.cpp
@@ -269,7 +269,7 @@ IdComponent::IdComponent() {}
// Description:
// This function is protected so that the user applications can
// only have access to its code via allowable classes, namely,
-// Attribute and H5Location subclasses.
+// H5File and H5Object subclasses.
// Programmer Binh-Minh Ribler - Jul, 2004
//--------------------------------------------------------------------------
H5std_string IdComponent::p_get_file_name() const
diff --git a/c++/src/H5Location.cpp b/c++/src/H5Location.cpp
index f03072d..fcf7ff4 100644
--- a/c++/src/H5Location.cpp
+++ b/c++/src/H5Location.cpp
@@ -22,7 +22,6 @@
#include "H5Location.h"
#include "H5Object.h"
#include "H5DcreatProp.h"
-#include "H5DaccProp.h"
#include "H5DxferProp.h"
#include "H5FaccProp.h"
#include "H5FcreatProp.h"
@@ -56,17 +55,17 @@ extern "C" herr_t userAttrOpWrpr(hid_t loc_id, const char *attr_name,
}
//--------------------------------------------------------------------------
-// Function: H5Location default constructor (protected)
-// Programmer Binh-Minh Ribler - 2000
+// Function: H5Location default constructor (protected)
+// Programmer Binh-Minh Ribler - 2000
//--------------------------------------------------------------------------
H5Location::H5Location() : IdComponent(0) {}
//--------------------------------------------------------------------------
-// Function: H5Location overloaded constructor (protected)
-// Purpose Creates an H5Location object using the id of an existing HDF5
-// object.
-// Parameters object_id - IN: Id of an existing HDF5 object
-// Programmer Binh-Minh Ribler - 2000
+// Function: H5Location overloaded constructor (protected)
+// Purpose Creates an H5Location object using the id of an existing HDF5
+// object.
+// Parameters object_id - IN: Id of an existing HDF5 object
+// Programmer Binh-Minh Ribler - 2000
//--------------------------------------------------------------------------
H5Location::H5Location(const hid_t object_id) : IdComponent(object_id) {}
@@ -79,30 +78,6 @@ H5Location::H5Location(const hid_t object_id) : IdComponent(object_id) {}
//--------------------------------------------------------------------------
H5Location::H5Location( const H5Location& original ) : IdComponent( original ) {}
-//--------------------------------------------------------------------------
-// Function: H5Location constructor
-///\brief Dereferences into an HDF5 object, given an HDF5 location.
-///\param loc - IN: H5Location instance to copy
-///\param ref - IN: Name of the object to be referenced
-///\param ref_type - IN: Dataspace with selection
-// Programmer Binh-Minh Ribler - 2000
-//--------------------------------------------------------------------------
- // Dereferences into an HDF5 object, given an HDF5 location.
- /* H5Location::H5Location(const H5Location& loc, const void* ref, H5R_type_t ref_type, const PropList& plist)
-{
- hid_t temp_id;
- try {
- temp_id = p_dereference(loc.getId(), ref, ref_type, plist);
- }
- catch (ReferenceException deref_error) {
- throw ReferenceException("H5Location constructor - by dereferenced",
- deref_error.getDetailMsg());
- }
- setId(temp_id);
-}
- */
-
-
#endif // DOXYGEN_SHOULD_SKIP_THIS
//--------------------------------------------------------------------------
@@ -367,7 +342,7 @@ void H5Location::renameAttr(const H5std_string& oldname, const H5std_string& new
/// which can be either of these values:
/// \li \c H5F_SCOPE_GLOBAL - Flushes the entire virtual file
/// \li \c H5F_SCOPE_LOCAL - Flushes only the specified file
-///\exception H5::Exception
+///\exception H5::FileIException
///\par Description
/// This location is used to identify the file to be flushed.
// Programmer Binh-Minh Ribler - 2012
@@ -380,7 +355,7 @@ void H5Location::flush(H5F_scope_t scope) const
herr_t ret_value = H5Fflush(getId(), scope);
if( ret_value < 0 )
{
- throw Exception(inMemFunc("flush"), "H5Fflush failed");
+ throw FileIException(inMemFunc("flush"), "H5Fflush failed");
}
}
@@ -401,147 +376,17 @@ H5std_string H5Location::getFileName() const
}
}
-//--------------------------------------------------------------------------
-// Function: H5Location::setComment
-///\brief Sets or resets the comment for an object specified by its name.
-///\param name - IN: Name of the object
-///\param comment - IN: New comment
-///\exception H5::Exception
-///\par Description
-/// If \a comment is an empty string or a null pointer, the comment
-/// message is removed from the object.
-/// Comments should be relatively short, null-terminated, ASCII
-/// strings. They can be attached to any object that has an
-/// object header, e.g., data sets, groups, named data types,
-/// and data spaces, but not symbolic links.
-// Programmer Binh-Minh Ribler - 2000 (moved from CommonFG, Sep 2013)
-// Modification
-// 2007: QAK modified to use H5O APIs; however the first parameter is
-// no longer just file or group, this function should be moved
-// to another class to accommodate attribute, dataset, and named
-// datatype. - BMR
-//--------------------------------------------------------------------------
-void H5Location::setComment(const char* name, const char* comment) const
-{
- herr_t ret_value = H5Oset_comment_by_name(getId(), name, comment, H5P_DEFAULT);
- if( ret_value < 0 )
- throw Exception("setComment", "H5Oset_comment_by_name failed");
-}
-
-//--------------------------------------------------------------------------
-// Function: H5Location::setComment
-///\brief This is an overloaded member function, provided for convenience.
-/// It differs from the above function in that it takes an
-/// \c H5std_string for \a name and \a comment.
-// Programmer Binh-Minh Ribler - 2000 (moved from CommonFG, Sep 2013)
-//--------------------------------------------------------------------------
-void H5Location::setComment(const H5std_string& name, const H5std_string& comment) const
-{
- setComment(name.c_str(), comment.c_str());
-}
-
-//--------------------------------------------------------------------------
-// Function: H5Location::removeComment
-///\brief Removes the comment from an object specified by its name.
-///\param name - IN: Name of the object
-///\exception H5::Exception
-// Programmer Binh-Minh Ribler - May 2005 (moved from CommonFG, Sep 2013)
-// 2007: QAK modified to use H5O APIs; however the first parameter is
-// no longer just file or group, this function should be moved
-// to another class to accommodate attribute, dataset, and named
-// datatype. - BMR
-//--------------------------------------------------------------------------
-void H5Location::removeComment(const char* name) const
-{
- herr_t ret_value = H5Oset_comment_by_name(getId(), name, NULL, H5P_DEFAULT);
- if( ret_value < 0 )
- throw Exception("removeComment", "H5Oset_comment_by_name failed");
-}
-
-//--------------------------------------------------------------------------
-// Function: H5Location::removeComment
-///\brief This is an overloaded member function, provided for convenience.
-/// It differs from the above function in that it takes an
-/// \c H5std_string for \a name.
-// Programmer Binh-Minh Ribler - May 2005 (moved from CommonFG, Sep 2013)
-//--------------------------------------------------------------------------
-void H5Location::removeComment(const H5std_string& name) const
-{
- removeComment (name.c_str());
-}
-
-//--------------------------------------------------------------------------
-// Function: H5Location::getComment
-///\brief Retrieves comment for the specified object and its comment's
-/// length.
-///\param name - IN: Name of the object
-///\param bufsize - IN: Length of the comment to retrieve
-///\return Comment string
-///\exception H5::Exception
-// Programmer Binh-Minh Ribler - 2000 (moved from CommonFG, Sep 2013)
-// 2007: QAK modified to use H5O APIs; however the first parameter is
-// no longer just file or group, this function should be moved
-// to another class to accommodate attribute, dataset, and named
-// datatype. - BMR
-//--------------------------------------------------------------------------
-H5std_string H5Location::getComment(const char* name, size_t bufsize) const
-{
- // bufsize is default to 256
- // temporary variable
- hid_t loc_id = getId(); // temporary variable
-
- // temporary C-string for the object's comment; bufsize already including
- // null character
- char* comment_C = new char[bufsize];
- ssize_t ret_value = H5Oget_comment_by_name(loc_id, name, comment_C, bufsize, H5P_DEFAULT);
-
- // if the actual length of the comment is longer than bufsize and bufsize
- // was the default value, i.e., not given by the user, then call
- // H5Oget_comment_by_name again with the correct value.
- // If the call to H5Oget_comment_by_name returned an error, skip this block
- // and throw an exception below.
- if (ret_value >= 0 && (size_t)ret_value > bufsize && bufsize == 256)
- {
- size_t new_size = ret_value;
- delete []comment_C;
- comment_C = new char[new_size]; // new_size including null terminator
- ret_value = H5Oget_comment_by_name(loc_id, name, comment_C, new_size, H5P_DEFAULT);
- }
-
- // if H5Oget_comment_by_name returns SUCCEED, return the string comment,
- // otherwise, throw an exception
- if (ret_value < 0) {
- delete []comment_C;
- throw Exception("getComment", "H5Oget_comment_by_name failed");
- }
-
- H5std_string comment = H5std_string(comment_C);
- delete []comment_C;
- return (comment);
-}
-
-//--------------------------------------------------------------------------
-// Function: H5Location::getComment
-///\brief This is an overloaded member function, provided for convenience.
-/// It differs from the above function in that it takes an
-/// \c H5std_string for \a name.
-// Programmer Binh-Minh Ribler - 2000 (moved from CommonFG, Sep 2013)
-//--------------------------------------------------------------------------
-H5std_string H5Location::getComment(const H5std_string& name, size_t bufsize) const
-{
- return(getComment(name.c_str(), bufsize));
-}
#ifndef DOXYGEN_SHOULD_SKIP_THIS
//--------------------------------------------------------------------------
-// Function: H5Location::p_reference (protected)
-// Purpose Creates a reference to an HDF5 object or a dataset region.
+// Function: H5Location::p_reference (protected)
+// Purpose Creates a reference to an HDF5 object or a dataset region.
// Parameters
-// name - IN: Name of the object to be referenced
-// dataspace - IN: Dataspace with selection
-// ref_type - IN: Type of reference; default to \c H5R_DATASET_REGION
-// Exception H5::IdComponentException
-// Programmer Binh-Minh Ribler - May, 2004
+// name - IN: Name of the object to be referenced
+// dataspace - IN: Dataspace with selection
+// ref_type - IN: Type of reference; default to \c H5R_DATASET_REGION
+// Exception H5::IdComponentException
+// Programmer Binh-Minh Ribler - May, 2004
//--------------------------------------------------------------------------
void H5Location::p_reference(void* ref, const char* name, hid_t space_id, H5R_type_t ref_type) const
{
@@ -555,18 +400,17 @@ void H5Location::p_reference(void* ref, const char* name, hid_t space_id, H5R_ty
#endif // DOXYGEN_SHOULD_SKIP_THIS
//--------------------------------------------------------------------------
-// Function: H5Location::reference
-///\brief Creates a reference to an HDF5 object or a dataset region.
-///\param ref - IN: Reference pointer
-///\param name - IN: Name of the object to be referenced
-///\param dataspace - IN: Dataspace with selection
-///\param ref_type - IN: Type of reference to query, valid values are:
+// Function: H5Location::reference
+///\brief Creates a reference to an HDF5 object or a dataset region.
+///\param ref - IN: Reference pointer
+///\param name - IN: Name of the object to be referenced
+///\param dataspace - IN: Dataspace with selection
+///\param ref_type - IN: Type of reference to query, valid values are:
/// \li \c H5R_OBJECT - Reference is an object reference.
/// \li \c H5R_DATASET_REGION - Reference is a dataset region
/// reference. - this is the default
-///\exception H5::ReferenceException
-///\notes This method is more suitable for a dataset region reference.
-// Programmer Binh-Minh Ribler - May, 2004
+///\exception H5::ReferenceException
+// Programmer Binh-Minh Ribler - May, 2004
//--------------------------------------------------------------------------
void H5Location::reference(void* ref, const char* name, const DataSpace& dataspace, H5R_type_t ref_type) const
{
@@ -579,49 +423,23 @@ void H5Location::reference(void* ref, const char* name, const DataSpace& dataspa
}
//--------------------------------------------------------------------------
-// Function: H5Location::reference
-///\brief This is an overloaded member function, provided for convenience.
-/// It differs from the above function in that it takes an
-/// \c H5std_string for \a name.
-///\param ref - IN: Reference pointer
-///\param name - IN: Name of the object to be referenced
-///\param dataspace - IN: Dataspace with selection
-///\param ref_type - IN: Type of reference to query, valid values are:
-/// \li \c H5R_OBJECT - Reference is an object reference.
-/// \li \c H5R_DATASET_REGION - Reference is a dataset region
-/// reference. - this is the default
-///\exception H5::ReferenceException
-///\notes This method is more suitable for a dataset region reference.
-// Programmer Binh-Minh Ribler - May, 2004
-//--------------------------------------------------------------------------
-void H5Location::reference(void* ref, const H5std_string& name, const DataSpace& dataspace, H5R_type_t ref_type) const
-{
- try {
- p_reference(ref, name.c_str(), dataspace.getId(), ref_type);
- }
- catch (ReferenceException E) {
- throw ReferenceException("H5Location::reference", E.getDetailMsg());
- }
-}
-
-//--------------------------------------------------------------------------
-// Function: H5Location::reference
-///\brief This is an overloaded function, provided for your convenience.
-/// It differs from the above function in that it does not take
-/// a DataSpace object and the reference type must be specified.
-///\param ref - IN: Reference pointer
-///\param name - IN: Name of the object to be referenced
-///\param ref_type - IN: Type of reference to query, valid values are:
-/// \li \c H5R_OBJECT - Reference is an object reference.
-/// \li \c H5R_DATASET_REGION - Reference is a dataset region
-///\exception H5::ReferenceException
-///\notes This method is more suitable for an object reference.
-// Programmer Binh-Minh Ribler - May, 2004
+// Function: H5Location::reference
+///\brief This is an overloaded function, provided for your convenience.
+/// It differs from the above function in that it only creates
+/// a reference to an HDF5 object, not to a dataset region.
+///\param ref - IN: Reference pointer
+///\param name - IN: Name of the object to be referenced - \c char pointer
+///\exception H5::ReferenceException
+///\par Description
+// This function passes H5R_OBJECT and -1 to the protected
+// function for it to pass to the C API H5Rcreate
+// to create a reference to the named object.
+// Programmer Binh-Minh Ribler - May, 2004
//--------------------------------------------------------------------------
-void H5Location::reference(void* ref, const char* name, H5R_type_t ref_type) const
+void H5Location::reference(void* ref, const char* name) const
{
try {
- p_reference(ref, name, -1, ref_type);
+ p_reference(ref, name, -1, H5R_OBJECT);
}
catch (ReferenceException E) {
throw ReferenceException("H5Location::reference", E.getDetailMsg());
@@ -629,21 +447,17 @@ void H5Location::reference(void* ref, const char* name, H5R_type_t ref_type) con
}
//--------------------------------------------------------------------------
-// Function: H5Location::reference
-///\brief This is an overloaded function, provided for your convenience.
-/// It differs from the above function in that it takes an
-/// \c H5std_string for the object's name.
-///\param ref - IN: Reference pointer
-///\param name - IN: Name of the object to be referenced - \c H5std_string
-///\param ref_type - IN: Type of reference to query, valid values are:
-/// \li \c H5R_OBJECT - Reference is an object reference.
-/// \li \c H5R_DATASET_REGION - Reference is a dataset region
-///\notes This method is more suitable for an object reference.
-// Programmer Binh-Minh Ribler - May, 2004
+// Function: H5Location::reference
+///\brief This is an overloaded function, provided for your convenience.
+/// It differs from the above function in that it takes an
+/// \c H5std_string for the object's name.
+///\param ref - IN: Reference pointer
+///\param name - IN: Name of the object to be referenced - \c H5std_string
+// Programmer Binh-Minh Ribler - May, 2004
//--------------------------------------------------------------------------
-void H5Location::reference(void* ref, const H5std_string& name, H5R_type_t ref_type) const
+void H5Location::reference(void* ref, const H5std_string& name) const
{
- reference(ref, name.c_str(), ref_type);
+ reference(ref, name.c_str());
}
#ifndef DOXYGEN_SHOULD_SKIP_THIS
@@ -661,16 +475,10 @@ void H5Location::reference(void* ref, const H5std_string& name, H5R_type_t ref_t
// May 2008 - BMR
// Moved from IdComponent.
//--------------------------------------------------------------------------
-hid_t H5Location::p_dereference(hid_t loc_id, const void* ref, H5R_type_t ref_type, const PropList& plist)
+hid_t H5Location::p_dereference(hid_t loc_id, const void* ref, H5R_type_t ref_type)
{
- hid_t plist_id;
- if (p_valid_id(plist.getId()))
- plist_id = plist.getId();
- else
- plist_id = H5P_DEFAULT;
-
hid_t temp_id;
- temp_id = H5Rdereference2(loc_id, plist_id, ref_type, ref);
+ temp_id = H5Rdereference2(loc_id, H5P_DEFAULT, ref_type, ref);
if (temp_id < 0)
{
throw ReferenceException("", "H5Rdereference failed");
@@ -688,16 +496,16 @@ hid_t H5Location::p_dereference(hid_t loc_id, const void* ref, H5R_type_t ref_ty
///\param ref - IN: Reference pointer
///\param ref_type - IN: Reference type
///\exception H5::ReferenceException
-// Programmer Binh-Minh Ribler - Oct, 2006
+// Programmer Binh-Minh Ribler - Oct, 2006
// Modification
// May, 2008
// Corrected missing parameters. - BMR
//--------------------------------------------------------------------------
-void H5Location::dereference(const H5Location& loc, const void* ref, H5R_type_t ref_type, const PropList& plist)
+void H5Location::dereference(H5Object& obj, const void* ref, H5R_type_t ref_type)
{
hid_t temp_id;
try {
- temp_id = p_dereference(loc.getId(), ref, ref_type, plist);
+ temp_id = p_dereference(obj.getId(), ref, ref_type);
}
catch (ReferenceException E) {
throw ReferenceException("H5Location::dereference - located by object", E.getDetailMsg());
@@ -707,21 +515,45 @@ void H5Location::dereference(const H5Location& loc, const void* ref, H5R_type_t
//--------------------------------------------------------------------------
// Function: H5Location::dereference
+///\brief Dereferences a reference into an HDF5 object, given an HDF5 file.
+///\param h5file - IN: HDF5 file specifying the location of the referenced object
+///\param ref - IN: Reference pointer
+///\param ref_type - IN: Reference type
+///\exception H5::ReferenceException
+// Programmer Binh-Minh Ribler - Oct, 2006
+// Modification
+// May, 2008
+// Corrected missing parameters. - BMR
+//--------------------------------------------------------------------------
+void H5Location::dereference(H5File& h5file, const void* ref, H5R_type_t ref_type)
+{
+ hid_t temp_id;
+ try {
+ temp_id = p_dereference(h5file.getId(), ref, ref_type);
+ }
+ catch (ReferenceException E) {
+ throw ReferenceException("H5Location::dereference - located by file", E.getDetailMsg());
+ }
+ p_setId(temp_id);
+}
+
+//--------------------------------------------------------------------------
+// Function: H5Location::dereference
///\brief Dereferences a reference into an HDF5 object, given an attribute.
///\param attr - IN: Attribute specifying the location of the referenced object
///\param ref - IN: Reference pointer
///\param ref_type - IN: Reference type
///\exception H5::ReferenceException
-// Programmer Binh-Minh Ribler - Oct, 2006
+// Programmer Binh-Minh Ribler - Oct, 2006
// Modification
// May, 2008
// Corrected missing parameters. - BMR
//--------------------------------------------------------------------------
-void H5Location::dereference(const Attribute& attr, const void* ref, H5R_type_t ref_type, const PropList& plist)
+void H5Location::dereference(Attribute& attr, const void* ref, H5R_type_t ref_type)
{
hid_t temp_id;
try {
- temp_id = p_dereference(attr.getId(), ref, ref_type, plist);
+ temp_id = p_dereference(attr.getId(), ref, ref_type);
}
catch (ReferenceException E) {
throw ReferenceException("H5Location::dereference - located by attribute", E.getDetailMsg());
@@ -761,20 +593,20 @@ H5G_obj_t H5Location::getObjType(void *ref, H5R_type_t ref_type) const
#ifndef DOXYGEN_SHOULD_SKIP_THIS
//--------------------------------------------------------------------------
-// Function: H5Location::p_get_obj_type (protected)
-// Purpose Retrieves the type of object that an object reference points to.
+// Function: H5Location::p_get_obj_type (protected)
+// Purpose Retrieves the type of object that an object reference points to.
// Parameters
-// ref - IN: Reference to query
-// ref_type - IN: Type of reference to query
-// Return An object type, which can be one of the following:
-// H5G_UNKNOWN \tFailure occurs (-1)
-// H5G_GROUP \tObject is a group.
-// H5G_DATASET \tObject is a dataset.
-// H5G_TYPE Object \tis a named datatype.
-// H5G_LINK \tObject is a symbolic link.
-// H5G_UDLINK \tObject is a user-defined link.
-// Exception H5::ReferenceException
-// Programmer Binh-Minh Ribler - May, 2004
+// ref - IN: Reference to query
+// ref_type - IN: Type of reference to query
+// Return An object type, which can be one of the following:
+// H5G_UNKNOWN \tFailure occurs (-1)
+// H5G_GROUP \tObject is a group.
+// H5G_DATASET \tObject is a dataset.
+// H5G_TYPE Object \tis a named datatype.
+// H5G_LINK \tObject is a symbolic link.
+// H5G_UDLINK \tObject is a user-defined link.
+// Exception H5::ReferenceException
+// Programmer Binh-Minh Ribler - May, 2004
//--------------------------------------------------------------------------
H5G_obj_t H5Location::p_get_obj_type(void *ref, H5R_type_t ref_type) const
{
@@ -790,20 +622,20 @@ H5G_obj_t H5Location::p_get_obj_type(void *ref, H5R_type_t ref_type) const
#endif /* H5_NO_DEPRECATED_SYMBOLS */
//--------------------------------------------------------------------------
-// Function: H5Location::getRefObjType
-///\brief Retrieves the type of object that an object reference points to.
-///\param ref - IN: Reference to query
-///\param ref_type - IN: Type of reference to query, valid values are:
-/// \li \c H5R_OBJECT - Reference is an object reference.
-/// \li \c H5R_DATASET_REGION - Reference is a dataset region reference.
-///\return An object type, which can be one of the following:
-/// \li \c H5O_TYPE_UNKNOWN - Unknown object type (-1)
-/// \li \c H5O_TYPE_GROUP - Object is a group
-/// \li \c H5O_TYPE_DATASET - Object is a dataset
-/// \li \c H5O_TYPE_NAMED_DATATYPE - Object is a named datatype
-/// \li \c H5O_TYPE_NTYPES - Number of different object types
-///\exception H5::ReferenceException
-// Programmer Binh-Minh Ribler - May, 2004
+// Function: H5Location::getRefObjType
+///\brief Retrieves the type of object that an object reference points to.
+///\param ref - IN: Reference to query
+///\param ref_type - IN: Type of reference to query, valid values are:
+/// \li \c H5R_OBJECT - Reference is an object reference.
+/// \li \c H5R_DATASET_REGION - Reference is a dataset region reference.
+///\return An object type, which can be one of the following:
+/// \li \c H5O_TYPE_UNKNOWN - Unknown object type (-1)
+/// \li \c H5O_TYPE_GROUP - Object is a group
+/// \li \c H5O_TYPE_DATASET - Object is a dataset
+/// \li \c H5O_TYPE_NAMED_DATATYPE - Object is a named datatype
+/// \li \c H5O_TYPE_NTYPES - Number of different object types
+///\exception H5::ReferenceException
+// Programmer Binh-Minh Ribler - May, 2004
//--------------------------------------------------------------------------
H5O_type_t H5Location::getRefObjType(void *ref, H5R_type_t ref_type) const
{
@@ -817,19 +649,19 @@ H5O_type_t H5Location::getRefObjType(void *ref, H5R_type_t ref_type) const
#ifndef DOXYGEN_SHOULD_SKIP_THIS
//--------------------------------------------------------------------------
-// Function: H5Location::p_get_ref_obj_type (protected)
-// Purpose Retrieves the type of object that an object reference points to.
+// Function: H5Location::p_get_ref_obj_type (protected)
+// Purpose Retrieves the type of object that an object reference points to.
// Parameters
-// ref - IN: Reference to query
-// ref_type - IN: Type of reference to query
-// Return An object type, which can be one of the following:
+// ref - IN: Reference to query
+// ref_type - IN: Type of reference to query
+// Return An object type, which can be one of the following:
// H5O_TYPE_UNKNOWN - Unknown object type (-1)
// H5O_TYPE_GROUP - Object is a group
// H5O_TYPE_DATASET - Object is a dataset
// H5O_TYPE_NAMED_DATATYPE - Object is a named datatype
// H5O_TYPE_NTYPES - Number of object types
-// Exception H5::ReferenceException
-// Programmer Binh-Minh Ribler - May, 2004
+// Exception H5::ReferenceException
+// Programmer Binh-Minh Ribler - May, 2004
//--------------------------------------------------------------------------
H5O_type_t H5Location::p_get_ref_obj_type(void *ref, H5R_type_t ref_type) const
{
@@ -845,29 +677,24 @@ H5O_type_t H5Location::p_get_ref_obj_type(void *ref, H5R_type_t ref_type) const
//--------------------------------------------------------------------------
-// Function: H5Location::getRegion
-///\brief Retrieves a dataspace with the region pointed to selected.
-///\param ref - IN: Reference to get region of
-///\param ref_type - IN: Type of reference to get region of - default
-// to H5R_DATASET_REGION
-///\return DataSpace object
-///\exception H5::ReferenceException
-// Programmer Binh-Minh Ribler - May, 2004
+// Function: H5Location::p_get_region (protected)
+// Purpose Retrieves a dataspace with the region pointed to selected.
+// Parameters
+// ref_type - IN: Type of reference to get region of - default
+// to H5R_DATASET_REGION
+// ref - IN: Reference to get region of
+// Return Dataspace id
+// Exception H5::ReferenceException
+// Programmer Binh-Minh Ribler - May, 2004
//--------------------------------------------------------------------------
-DataSpace H5Location::getRegion(void *ref, H5R_type_t ref_type) const
+hid_t H5Location::p_get_region(void *ref, H5R_type_t ref_type) const
{
hid_t space_id = H5Rget_region(getId(), ref_type, ref);
if (space_id < 0)
{
throw ReferenceException("", "H5Rget_region failed");
}
- try {
- DataSpace dataspace(space_id);
- return(dataspace);
- }
- catch (DataSpaceIException E) {
- throw ReferenceException("H5Location::getRegion", E.getDetailMsg());
- }
+ return(space_id);
}
diff --git a/c++/src/H5Location.h b/c++/src/H5Location.h
index 996cc21..1f54439 100644
--- a/c++/src/H5Location.h
+++ b/c++/src/H5Location.h
@@ -36,12 +36,12 @@ typedef void (*attr_operator_t)( H5Location& loc/*in*/,
class UserData4Aiterate { // user data for attribute iteration
public:
- attr_operator_t op;
- void* opData;
- H5Location* location;
+ attr_operator_t op;
+ void* opData;
+ H5Location* location;
};
-// An H5Location can be a file, group, dataset, or committed datatype.
+// An H5Location can be a file, group, dataset, named datatype, or attribute.
class H5_DLLCPP H5Location : public IdComponent {
public:
@@ -85,47 +85,29 @@ class H5_DLLCPP H5Location : public IdComponent {
bool attrExists(const char* name) const;
bool attrExists(const H5std_string& name) const;
- // Renames the named attribute to a new name.
- void renameAttr(const char* oldname, const char* newname) const;
- void renameAttr(const H5std_string& oldname, const H5std_string& newname) const;
-
// Removes the named attribute from this location.
void removeAttr(const char* name) const;
void removeAttr(const H5std_string& name) const;
- // Sets the comment for an HDF5 object specified by its name.
- void setComment(const char* name, const char* comment) const;
- void setComment(const H5std_string& name, const H5std_string& comment) const;
-
- // Retrieves comment for the HDF5 object specified by its name.
- H5std_string getComment(const char* name, size_t bufsize=256) const;
- H5std_string getComment(const H5std_string& name, size_t bufsize=256) const;
-
- // Removes the comment for the HDF5 object specified by its name.
- void removeComment(const char* name) const;
- void removeComment(const H5std_string& name) const;
+ // Renames the named attribute to a new name.
+ void renameAttr(const char* oldname, const char* newname) const;
+ void renameAttr(const H5std_string& oldname, const H5std_string& newname) const;
// Creates a reference to a named object or to a dataset region
// in this object.
- void reference(void* ref, const char* name,
- H5R_type_t ref_type = H5R_OBJECT) const;
- void reference(void* ref, const H5std_string& name,
- H5R_type_t ref_type = H5R_DATASET_REGION) const;
void reference(void* ref, const char* name, const DataSpace& dataspace,
H5R_type_t ref_type = H5R_DATASET_REGION) const;
- void reference(void* ref, const H5std_string& name, const DataSpace& dataspace,
- H5R_type_t ref_type = H5R_DATASET_REGION) const;
+ void reference(void* ref, const char* name) const;
+ void reference(void* ref, const H5std_string& name) const;
// Open a referenced object whose location is specified by either
// a file, an HDF5 object, or an attribute.
- void dereference(const H5Location& loc, const void* ref, H5R_type_t ref_type = H5R_OBJECT, const PropList& plist = PropList::DEFAULT);
- void dereference(const Attribute& attr, const void* ref, H5R_type_t ref_type = H5R_OBJECT, const PropList& plist = PropList::DEFAULT);
+ void dereference(H5File& h5file, const void* ref, H5R_type_t ref_type = H5R_OBJECT);
+ void dereference(H5Object& obj, const void* ref, H5R_type_t ref_type = H5R_OBJECT);
+ void dereference(Attribute& attr, const void* ref, H5R_type_t ref_type = H5R_OBJECT);
- // Retrieves a dataspace with the region pointed to selected.
- DataSpace getRegion(void *ref, H5R_type_t ref_type = H5R_DATASET_REGION) const;
-
- ///\brief Returns an identifier. (pure virtual)
- virtual hid_t getId() const = 0;
+ ///\brief Returns an identifier. (pure virtual)
+ virtual hid_t getId() const = 0;
protected:
#ifndef DOXYGEN_SHOULD_SKIP_THIS
@@ -142,7 +124,7 @@ class H5_DLLCPP H5Location : public IdComponent {
void p_reference(void* ref, const char* name, hid_t space_id, H5R_type_t ref_type) const;
// Dereferences a ref into an HDF5 id.
- hid_t p_dereference(hid_t loc_id, const void* ref, H5R_type_t ref_type, const PropList& plist);
+ hid_t p_dereference(hid_t loc_id, const void* ref, H5R_type_t ref_type);
#ifndef H5_NO_DEPRECATED_SYMBOLS
// Retrieves the type of object that an object reference points to.
@@ -152,6 +134,9 @@ class H5_DLLCPP H5Location : public IdComponent {
// Retrieves the type of object that an object reference points to.
H5O_type_t p_get_ref_obj_type(void *ref, H5R_type_t ref_type) const;
+ // Retrieves a dataspace with the region pointed to selected.
+ hid_t p_get_region(void *ref, H5R_type_t ref_type) const;
+
// Noop destructor.
virtual ~H5Location();
diff --git a/c++/src/H5Object.cpp b/c++/src/H5Object.cpp
index 1d96f2e..b596092 100644
--- a/c++/src/H5Object.cpp
+++ b/c++/src/H5Object.cpp
@@ -52,6 +52,7 @@ H5Object::H5Object() : H5Location() {}
//--------------------------------------------------------------------------
H5Object::H5Object( const hid_t object_id ) : H5Location( object_id ) {}
+
//--------------------------------------------------------------------------
// Function: H5Object copy constructor
///\brief Copy constructor: makes a copy of the original H5Object
diff --git a/c++/src/H5PropList.cpp b/c++/src/H5PropList.cpp
index e070406..c14d74f 100644
--- a/c++/src/H5PropList.cpp
+++ b/c++/src/H5PropList.cpp
@@ -39,7 +39,7 @@ namespace H5 {
//--------------------------------------------------------------------------
///\brief Constant for default property.
//--------------------------------------------------------------------------
-const PropList PropList::DEFAULT;
+const PropList PropList::DEFAULT( H5P_DEFAULT );
//--------------------------------------------------------------------------
// Function Default constructor
@@ -644,9 +644,6 @@ void PropList::removeProp(const H5std_string& name) const
//--------------------------------------------------------------------------
bool PropList::operator==(const PropList& rhs) const
{
- fprintf(stderr, "operator==\n");
-H5Eprint2(H5E_DEFAULT, stderr);
-
htri_t ret_value = H5Pequal(id, rhs.getId());
if( ret_value > 0 )
return true;