//-------------------------------------------------------------------------- // Function: PropList::copyProp ///\brief Copies a property from one list or class to another - Obsolete ///\param dest - IN: Destination property list or class ///\param src - IN: Source property list or class ///\param name - IN: Name of the property to copy - \c char pointer ///\note This member function will be removed in the next release ///\exception H5::PropListIException // Programmer Binh-Minh Ribler - 2000 //-------------------------------------------------------------------------- void PropList::copyProp( PropList& dest, PropList& src, const char *name ) const { hid_t dst_id = dest.getId(); hid_t src_id = src.getId(); herr_t ret_value = H5Pcopy_prop(dst_id, src_id, name); if( ret_value < 0 ) { throw PropListIException(inMemFunc("copyProp"), "H5Pcopy_prop failed"); } }
//-------------------------------------------------------------------------- // Function: H5Location::p_dereference (protected) // Purpose Dereference a ref into an hdf5 object. // Parameters // loc_id - IN: An hdf5 identifier specifying the location of the // referenced object // ref - IN: Reference pointer // ref_type - IN: Reference type // plist - IN: Property list - default to PropList::DEFAULT // from_func - IN: Name of the calling function // Exception H5::ReferenceException // Programmer Binh-Minh Ribler - Oct, 2006 // Modification // 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, const char* from_func) { hid_t plist_id; if (p_valid_id(plist.getId())) plist_id = plist.getId(); else plist_id = H5P_DEFAULT; hid_t temp_id = H5Rdereference2(loc_id, plist_id, ref_type, ref); if (temp_id < 0) { throw ReferenceException(inMemFunc(from_func), "H5Rdereference failed"); } return(temp_id); }
//-------------------------------------------------------------------------- // Function: PropList::operator== ///\brief Compares this property list or class against the given list or class. ///\param rhs - IN: Reference to the property list to compare ///\return true if the property lists or classes are equal, and /// false, otherwise. ///\exception H5::PropListIException // Programmer: Binh-Minh Ribler - April, 2004 //-------------------------------------------------------------------------- bool PropList::operator==(const PropList& rhs) const { htri_t ret_value = H5Pequal(id, rhs.getId()); if( ret_value > 0 ) return true; else if( ret_value == 0 ) return false; else // Raise exception when H5Pequal returns a negative value { throw PropListIException(inMemFunc("operator=="), "H5Pequal failed"); } }
//-------------------------------------------------------------------------- // Function: PropList::isAClass ///\brief Determines whether a property list is a certain class. ///\param prop_class - IN: Property class to query ///\return true if the property list is a member of the property list /// class, and false, otherwise. ///\exception H5::PropListIException // Programmer: Binh-Minh Ribler - April, 2004 //-------------------------------------------------------------------------- bool PropList::isAClass(const PropList& prop_class) const { htri_t ret_value = H5Pisa_class(id, prop_class.getId()); if( ret_value > 0 ) return true; else if( ret_value == 0 ) return false; else // Raise exception when H5Pisa_class returns a negative value { throw PropListIException(inMemFunc("isAClass"), "H5Pisa_class failed"); } }
//-------------------------------------------------------------------------- // Function: DataType::convert ///\brief Converts data from this datatype to the specified datatypes. ///\param dest - IN: Destination datatype ///\param nelmts - IN: Size of array \a buf ///\param buf - IN/OUT: Array containing pre- and post-conversion /// values ///\param background - IN: Optional backgroud buffer ///\param plist - IN: Property list - default to PropList::DEFAULT ///\return Pointer to a suitable conversion function ///\exception H5::DataTypeIException // Programmer Binh-Minh Ribler - 2000 //-------------------------------------------------------------------------- void DataType::convert( const DataType& dest, size_t nelmts, void *buf, void *background, const PropList& plist ) const { // Get identifiers for C API hid_t dest_id = dest.getId(); hid_t plist_id = plist.getId(); // Call C routine H5Tconvert to convert the data herr_t ret_value; ret_value = H5Tconvert( id, dest_id, nelmts, buf, background, plist_id ); if( ret_value < 0 ) { throw DataTypeIException(inMemFunc("convert"), "H5Tconvert failed"); } }
//-------------------------------------------------------------------------- // Function: CommonFG::mount ///\brief Mounts the file \a child onto this group. ///\param name - IN: Name of the group ///\param child - IN: File to mount ///\param plist - IN: Property list to use ///\exception H5::FileIException or H5::GroupIException // Programmer Binh-Minh Ribler - 2000 //-------------------------------------------------------------------------- void CommonFG::mount( const char* name, H5File& child, PropList& plist ) const { // Obtain identifiers for C API hid_t plist_id = plist.getId(); hid_t child_id = child.getId(); // Call C routine H5Fmount to do the mouting herr_t ret_value = H5Fmount( getLocId(), name, child_id, plist_id ); // Raise exception if H5Fmount returns negative value if( ret_value < 0 ) { throwException("mount", "H5Fmount failed"); } }
//-------------------------------------------------------------------------- // Function: H5Object::createAttribute ///\brief Creates an attribute for a group, dataset, or named datatype. ///\param name - IN: Name of the attribute ///\param data_type - IN: Datatype for the attribute ///\param data_space - IN: Dataspace for the attribute - only simple /// dataspaces are allowed at this time ///\param create_plist - IN: Creation property list - default to /// PropList::DEFAULT ///\return Attribute instance ///\exception H5::AttributeIException ///\par Description /// The attribute name specified in \a name must be unique. /// Attempting to create an attribute with the same name as an /// existing attribute will raise an exception, leaving the /// pre-existing attribute intact. To overwrite an existing /// attribute with a new attribute of the same name, first /// delete the existing one with \c H5Object::removeAttr, then /// recreate it with this function. // Programmer Binh-Minh Ribler - 2000 //-------------------------------------------------------------------------- Attribute H5Object::createAttribute( const char* name, const DataType& data_type, const DataSpace& data_space, const PropList& create_plist ) const { hid_t type_id = data_type.getId(); hid_t space_id = data_space.getId(); hid_t plist_id = create_plist.getId(); hid_t attr_id = H5Acreate2(getId(), name, type_id, space_id, plist_id, H5P_DEFAULT ); // If the attribute id is valid, create and return the Attribute object if( attr_id > 0 ) { Attribute attr( attr_id ); return( attr ); } else throw AttributeIException(inMemFunc("createAttribute"), "H5Acreate2 failed"); }
//-------------------------------------------------------------------------- // Function: PropList::copy ///\brief Makes a copy of an existing property list. ///\param like_plist - IN: Reference to the existing property list ///\exception H5::PropListIException // Programmer Binh-Minh Ribler - 2000 // Modification // - Replaced resetIdComponent() with decRefCount() to use C // library ID reference counting mechanism - BMR, Jun 1, 2004 // - Replaced decRefCount with close() to let the C library // handle the reference counting - BMR, Jun 1, 2006 //-------------------------------------------------------------------------- void PropList::copy( const PropList& like_plist ) { // If this object is representing an hdf5 object, close it before // copying like_plist to it try { close(); } catch (Exception close_error) { throw PropListIException(inMemFunc("copy"), close_error.getDetailMsg()); } // call C routine to copy the property list id = H5Pcopy( like_plist.getId() ); if( id < 0 ) throw PropListIException(inMemFunc("copy"), "H5Pcopy failed"); }
//-------------------------------------------------------------------------- // Function: PropList copy constructor ///\brief Copy constructor ///\param original - IN: The original property list to copy // Programmer Binh-Minh Ribler - 2000 //-------------------------------------------------------------------------- PropList::PropList(const PropList& original) : IdComponent() { id = original.getId(); incRefCount(); // increment number of references to this id }