summaryrefslogtreecommitdiffstats
path: root/c++
diff options
context:
space:
mode:
Diffstat (limited to 'c++')
-rw-r--r--c++/src/H5Object.cpp39
-rw-r--r--c++/src/H5Object.h7
2 files changed, 37 insertions, 9 deletions
diff --git a/c++/src/H5Object.cpp b/c++/src/H5Object.cpp
index 3fd6561..37d64a1 100644
--- a/c++/src/H5Object.cpp
+++ b/c++/src/H5Object.cpp
@@ -187,9 +187,9 @@ Attribute H5Object::openAttribute( const unsigned int idx ) const
///\param user_op - IN: User's function to operate on each attribute
///\param idx - IN/OUT: Starting (IN) and ending (OUT) attribute indices
///\param op_data - IN: User's data to pass to user's operator function
-///\return <need fix>
+///\return Returned value of the last operator if it was non-zero, or
+/// zero if all attributes were processed
///\exception H5::AttributeIException
-///\par Description
// Programmer Binh-Minh Ribler - 2000
//--------------------------------------------------------------------------
int H5Object::iterateAttrs( attr_operator_t user_op, unsigned * idx, void *op_data )
@@ -284,28 +284,53 @@ void H5Object::flush(H5F_scope_t scope ) const
//--------------------------------------------------------------------------
// Function: H5Object::Reference
+///\brief Creates a reference to an Hdf5 object.
+///\param name - IN: Name of the object to be referenced
+///\return A reference
+///\exception H5::ReferenceIException
+///\par Description
+// This function passes H5R_OBJECT and -1 to the C API H5Rcreate
+// to create a reference to the named object. The next function
+// will create a reference to a dataset region.
+// Programmer Binh-Minh Ribler - May, 2004
+//--------------------------------------------------------------------------
+void* H5Object::Reference(const char* name) const
+{
+ void *ref;
+ herr_t ret_value = H5Rcreate(ref, id, name, H5R_OBJECT, -1);
+ if (ret_value < 0)
+ {
+ throw AttributeIException("H5Object::Reference",
+ "H5Rcreate failed");
+ }
+ return(ref);
+}
+
+//--------------------------------------------------------------------------
+// Function: H5Object::Reference
///\brief Creates a reference.
///\param name - IN: Name of the object to be referenced
+///\param dataspace - IN: Dataspace with selection
+///\param ref_type - IN: Type of reference; default to \c H5R_DATASET_REGION
///\return A reference
///\exception H5::ReferenceIException
// Programmer Binh-Minh Ribler - May, 2004
//--------------------------------------------------------------------------
-void* H5Object::Reference(const char* name, H5R_type_t ref_type, DataSpace& dataspace) const
+void* H5Object::Reference(const char* name, DataSpace& dataspace, H5R_type_t ref_type) const
{
void *ref;
herr_t ret_value = H5Rcreate(ref, id, name, ref_type, dataspace.getId());
if (ret_value < 0)
{
- throw AttributeIException("H5Object::getNumAttrs",
- "H5Aget_num_attrs failed - returned negative number of attributes");
+ throw AttributeIException("H5Object::Reference",
+ "H5Rcreate failed");
}
return(ref);
}
//--------------------------------------------------------------------------
// Function: H5Object destructor
-///\brief Subclasses destructors will properly terminate access to
-/// this H5 object.
+///\brief Noop destructor.
// Programmer Binh-Minh Ribler - 2000
//--------------------------------------------------------------------------
H5Object::~H5Object() {}
diff --git a/c++/src/H5Object.h b/c++/src/H5Object.h
index c4113f1..6d1a752 100644
--- a/c++/src/H5Object.h
+++ b/c++/src/H5Object.h
@@ -85,8 +85,11 @@ class H5_DLLCPP H5Object : public IdComponent {
void removeAttr( const string& name ) const;
void removeAttr( const char* name ) const;
- // Creates a reference to a named H5 object in this object.
- void* Reference(const char* name, H5R_type_t ref_type, DataSpace& dataspace) const;
+ // Creates a reference to a named Hdf5 object in this object.
+ void* Reference(const char* name) const;
+
+ // Creates a reference to a dataset region in this object.
+ void* Reference(const char* name, DataSpace& dataspace, H5R_type_t ref_type = H5R_DATASET_REGION) const;
virtual ~H5Object();