The following new C++ classes and member functions have been added: Class H5::H5Location has been added as a base class of H5File and H5Object. It represents the location concept in the C library, where an identifier of an HDF5 object or an HDF5 file being passed in as a loc_id parameter (or something like that) The following member functions and their overloaded are moved from various subclasses into the base class H5Location: createAttribute() openAttribute() attrExists() renameAttr() removeAttr() flush() getFileName() getNumAttrs() getObjType() iterateAttrs() setComment() getComment() removeComment() reference() dereference() getRegion() In addition, there are new wrappers for C functions, and various overloaded functions for convenience: - New H5Location::getRefObjType (C function: H5Rget_obj_type2) to retrieve the type of the object that an object reference points to. - New H5Location::attrExists (C function: H5Aexist) to determine whether a given attribute exists. - Two more overloaded H5Location::setComment to take "." as name of the object - In classes DataSet, DataType, and Group, the following constructors are changed as followed: 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); to DataSet(const H5Location& loc, const void* ref, H5R_type_t ref_type = H5R_OBJECT); DataSet(const Attribute& attr, const void* ref, H5R_type_t ref_type = H5R_OBJECT); 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); to DataType(const H5Location& loc, const void* ref, H5R_type_t ref_type = H5R_OBJECT); DataType(const Attribute& attr, const void* ref, H5R_type_t ref_type = H5R_OBJECT); 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); to Group(const H5Location& loc, const void* ref, H5R_type_t ref_type = H5R_OBJECT); Group(const Attribute& attr, const void* ref, H5R_type_t ref_type = H5R_OBJECT); (Can we change these to make it less lengthy? All are the same, just the first words are different)