diff options
author | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2015-04-06 21:20:11 (GMT) |
---|---|---|
committer | Binh-Minh Ribler <bmribler@hdfgroup.org> | 2015-04-06 21:20:11 (GMT) |
commit | a586729afb1e25f82befc4b394f3e819a4f7a880 (patch) | |
tree | c145bbbd036c64ffd3f1613294d3b1461f42c73a /c++/src | |
parent | f809ee8ce7e68c156ace42970393aafa5350e387 (diff) | |
download | hdf5-a586729afb1e25f82befc4b394f3e819a4f7a880.zip hdf5-a586729afb1e25f82befc4b394f3e819a4f7a880.tar.gz hdf5-a586729afb1e25f82befc4b394f3e819a4f7a880.tar.bz2 |
[svn-r26741] Description:
Per user Jason Newton request, the following constructor is added:
H5File(hid_t existing_id);
Also, fixed H5File::openFile to close current file first before re-using
the object.
Platforms tested:
Linux/64 (platypus)
Linux/32 2.6 (jam)
SunOS 5.11 (emu)
Diffstat (limited to 'c++/src')
-rw-r--r-- | c++/src/H5File.cpp | 26 | ||||
-rw-r--r-- | c++/src/H5File.h | 3 |
2 files changed, 29 insertions, 0 deletions
diff --git a/c++/src/H5File.cpp b/c++/src/H5File.cpp index 79d5999..1ce1db1 100644 --- a/c++/src/H5File.cpp +++ b/c++/src/H5File.cpp @@ -158,6 +158,25 @@ void H5File::p_get_file(const char* name, unsigned int flags, const FileCreatPro #endif // DOXYGEN_SHOULD_SKIP_THIS //-------------------------------------------------------------------------- +// Function: H5File overloaded constructor +///\brief Creates an H5File object using an existing file id. +///\param existing_id - IN: Id of an existing file +// Programmer Binh-Minh Ribler - 2015 +// Description +// Mar 29, 2015 +// Added in responding to a request from user Jason Newton. +// However, it is not recommended to use the private member "id" +// in applications. Unlike other situations, where similar +// constructor is needed by the library in order to return +// an object, H5File doesn't need it. -BMR (HDFFV-8766 partially) +//-------------------------------------------------------------------------- +H5File::H5File(hid_t existing_id) : H5Location(), CommonFG() +{ + id = existing_id; + incRefCount(); // increment number of references to this id +} + +//-------------------------------------------------------------------------- // Function: H5File copy constructor ///\brief Copy constructor: makes a copy of the original /// H5File object. @@ -225,6 +244,13 @@ bool H5File::isHdf5(const H5std_string& name ) //-------------------------------------------------------------------------- void H5File::openFile(const char* name, unsigned int flags, const FileAccPropList& access_plist) { + try { + close(); + } + catch (Exception close_error) { + throw FileIException("H5File::openFile", close_error.getDetailMsg()); + } + hid_t access_plist_id = access_plist.getId(); id = H5Fopen (name, flags, access_plist_id); if (id < 0) // throw an exception when open fails diff --git a/c++/src/H5File.h b/c++/src/H5File.h index 0ef85b5..77cd232 100644 --- a/c++/src/H5File.h +++ b/c++/src/H5File.h @@ -84,6 +84,9 @@ class H5_DLLCPP H5File : public H5Location, public CommonFG { // Gets the file id virtual hid_t getLocId() const; + // Creates an H5File using an existing file id. + H5File(hid_t existing_id); + #endif // DOXYGEN_SHOULD_SKIP_THIS ///\brief Returns this class name. |