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)
Description:
When copy constructor or constructor that takes an existing id is invoked,
the C ref counter stays the same but there is an extra C++ object which
later is destroyed and may cause the HDF5 id to be closed prematurely. The
C++ library needs to increment the ref counter in these situations, so that
the C library will not close the id when it is still being referenced.
However, the incrementing of ref count left some objects opened at the end
of the program, perhaps, due to compiler's optimization on cons/destructors. The constructor, that takes an existing id, needs to increment the counter
but it seems that the matching destructor wasn't invoked. The workaround
is to have a function for each class that has "id" that only sets the id
and not increment the ref count for the library to use in these situations.
These functions are "friend" and not public.
The friend functions are:
void f_Attribute_setId(Attribute *, hid_t)
void f_DataSet_setId(DataSet *, hid_t)
void f_DataSpace_setId(DataSpace *, hid_t)
void f_DataType_setId(DataType *, hid_t)
Merged from trunk: r26655
Platforms tested:
Linux/64 (platypus)
Linux/32 2.6 (jam Intel 15.0)
SunOS 5.11 (emu)
Description:
Added wrappers for C functions H5P[s/g]et_libver_bounds and wrappers
for getting object header version
// Sets bounds on versions of library format to be used when creating
// or writing objects.
void setLibverBounds(H5F_libver_t libver_low, H5F_libver_t libver_high) const;
// Gets the current settings for the library version format bounds.
void getLibverBounds(H5F_libver_t& libver_low, H5F_libver_t& libver_high) const;
// Returns the object header version of an object in a file or group,
// given the object's name.
unsigned childObjVersion(const char* objname) const;
unsigned childObjVersion(const H5std_string& objname) const;
Merge from trunk r26643
Platforms tested:
Linux/64 (platypus)
Linux/32 2.6 (jam Intel 15.0)
SunOS 5.11 (emu)
Description:
- Changed DataType::operator= to simply copy the id of rhs instead of
calling H5Tcopy because, when the operator= is invoked, a different
datatype id is created and it won't have the same characteristics as
rhs', specifically, if the rhs represents a named datatype, "this"
would still be a transient datatype.
- Added a DataType constructor that takes a PredType object, and this
constructor will cause H5Tcopy to generate another datatype id, from a
predefined datatype.
- Fixed various mistakes in tests.
- Fixed typo that caused failure on Windows.
Merged from trunk r26640 and r26462
Platforms tested:
Linux/64 (platypus)
Linux/32 2.6 (jam/gnu and jam/icc 15)
SunOS 5.11 (emu)
Removed from configure.ac VPATH section, LONE_COLON check and checks for redundant addition of /usr/include and /usr/lib to compile flags, with reconfigure.
Tested h5committest
Description:
Fixed many type conversion warnings and unused variables.
Merged from trunk r26458, but also combined the fix in r26695 (dsets.cpp)
to avoid test failure, that was undetected before committing to trunk until
r26695.
Platforms tested:
Linux/64 (platypus)
Linux/32 2.6 (jam)
SunOS 5.11 (emu)
Removed the configure option that allows selective disabling of individual
internal filters (fletcher32, shuffle, etc.).
This feature mucked up the code with a lot of #ifdefs, saved very little
space and was not scalable to a general scheme for library size reduction.
We've decided to remove the feature while we investigate a more general
scheme for decreasing the library size.
Fixes: HDFFV-9086
Tested on: h5committest
configure fixes for HDFFV-9068,9069,9096,9097,9135 from autotools_rework branch:
- Remove Infering parallel compilers (C and Fortran) from configure.ac
- Remove restriction to build shared with parallel
- Cleanup parallel sections in configure.ac
- remove large file support checks
- MPE fixes.
Description:
Followed hints from user's report on JIRA to remove several potential
memory leaks.
Platforms tested:
Linux/ppc64 (ostrich)
Linux/32 2.6 (jam)
SunOS 5.11 (emu)
Description:
- Used H5I_INVALID_HID instead of 0 to initialized member "id" in classes
that represent HDF5 objects. For PropList, H5P_DEFAULT has to be used
instead of H5I_INVALID_HID.
- Added try/catch block to some dynamically allocating memory code and
re-throw the bad_alloc exception with a message informing the location of
the failure.
(merged from trunk-r25640)
Purpose: Fixed HDFFV-8852
Description:
H5F_ACC_CREAT was included in the C++ API while the C library doesn't
allow it yet. Possibly, in the future, but not now. In addition, the
two flags H5F_ACC_RDONLY and H5F_ACC_RDWR were missing from the
documentation, causing confusion that appending is not supported.
Solution:
- Removed H5F_ACC_CREAT from the function until the C library support it
- Added H5F_ACC_RDONLY and H5F_ACC_RDWR to the comments to update the
documentation
(merged from trunk-r25632)
Platforms tested:
Linux/ppc64 (ostrich)
Linux/32 2.6 (jam)
SunOS 5.11 (emu)
- remove configure checks for MPI_File_get_size and Big MPI_File_set_size as they are supported by MPIO implementations today.
- fix bug in t_mpi.c (HDFFV-8856)
tested with h5committest.
- Put back Exception::printError for backward compatibility
- Added static member function Exception::printErrorStack to print
error stack without an instance of Exception.
Platforms tested:
Linux/ppc64 (ostrich)
Linux/32 2.6 (jam)
SunOS 5.11 (emu)
Added instead configure variable hardcode_into_lib=no. This removes rpath from lib files on Linux and solaris machines.
Tested with h5committest on jam, koala, ostrich and platypus (cmake), and on emu and kite.
Put back overloaded functions for backward compatibility:
- were replaced by better prototyped versions, such as Attribute::getNam.
- were modified to add const to constant arguments.
Added notes for future removal in documentation.
(Elena approved.) Merged from trunk r25061.
Platforms tested:
Linux/ppc64 (ostrich)
Linux/32 2.6 (jam)
SunOS 5.11 (emu)
Description:
Turned on warnings and removed some of those.
(merged from trunk-r24994)
Platforms tested:
Linux/ppc64 (ostrich)
Linux/32 2.6 (jam)
SunOS 5.11 (emu)
- Added wrappers to H5Object for H5Iget_name() to get object's name
ssize_t getObjName(char *obj_name, size_t buf_size = 0) const;
ssize_t getObjName(H5std_string& obj_name, size_t len = 0) const;
H5std_string getObjName() const;
- Added tests tobject.cpp
- Added to various cleanup_* functions in tests to remove generated files
- Added an overload H5I_type_t getHDFObjType() to get object's type
(merge from trunk-24969)
Platforms tested:
Linux/ppc64 (ostrich)
Linux/32 2.6 (jam)
SunOS 5.11 (emu) with gmake
Description:
- Overloaded Atribute::getName to take a char* for the attribute name:
ssize_t Attribute::getName(char* attr_name, size_t buf_size)
- Switched the arguments in this function:
ssize_t getName(size_t buf_size, H5std_string& attr_name)
so it became:
ssize_t getName(H5std_string& attr_name, size_t buf_size)
The second argument is default to 0, and can be skipped.
- Removed this function:
H5std_string getName(size_t buf_size); it'll collide with the
first function when that function takes a NULL for the first
argument, and uses default value for the second argument.
- Added more tests
(merged from trunk-r24938)
Platforms tested:
Linux/ppc64 (ostrich)
Linux/32 2.6 (jam)
SunOS 5.11 (emu) with gmake
Description:
Added CompType::setSize(size_t size) to set size for compound data type
as H5Tset_size had been changed.
Merged from trunk-24912
Platforms tested:
Linux/ppc64 (ostrich)
Linux/32 2.6 (jam)
SunOS 5.11 (emu)
Bring r24864 from trunk to 1.8 branch:
Remove all traces of MPI-POSIX VFD and GPFS detection/code.
Remove remaining traces of stream VFD.
Remove testpar/t_posix_compliant test (it's not actually verifying anything).
Clean up H5D__mpio_opt_possible() further.
Moved environment variable that disables MPI collective operations into
MPI-IO VFD (instead of it being in src/H5S.c).
A few other small code cleanups.
Tested on:
Mac OSX/64 10.9.2 (amazon) w/parallel & serial
(daily tested on trunk)
- Added another overload for char* argument:
ssize_t getComment(const char* name, const size_t buf_size, char* comment)
- Changed default value to 0 for the other two getComment methods
- Added HDmemset to after every char string allocation to clear the buffer
- Added a null terminator to the comment returned from the C call, in
getComment methods
- Some minor cleanup
Merged from trunk: -r24865 -r24867
Platforms tested:
Linux/ppc64 (ostrich)
Linux/32 2.6 (jam)
SunOS 5.11 (emu)
Description:
Applied patch from user Jason Newton. JIRA issue HDFFV-8623, patch
0009, improve c++ compatibility with exceptions. All additions of "throw()"
are included. Exception::what() is not added because it is not necessary.
It was suggested for the name, which follows stdlib.
Merged from trunk -r24830
Platforms tested:
SunOS 5.11 (emu)
Linux/32 2.6 (jam)
Linux/64 2.6 (koala)/PGI compilers
Description from trunk, r22836
In this bug, H5File doesn't have the ability to create attribute. The
following changes will provide that functionality and several others that
were also missing:
- Added an abstract class H5Location in between IdComponent and H5Object.
- New class structure of IdComponent, H5Location, H5Object, H5File
IdComponent
|
H5Location
/ \
H5Object H5File
- Wrappers in H5Object were moved to H5Location because the related C
functions take either file, group, dataset, or named datatype ID.
- Added wrapper for H5Rget_obj_type2
- Added tests for file attributes and H5Rget_obj_type2 wrapper
Description from trunk, r22845
Fixed miscellaneous inconsistencies and typos, which also took
care of the failure in Packet Table test on daily test today.
Description from trunk, r24143
Fixed comments, documentation, and mis-matched DOXYGEN_SHOULD_SKIP_THIS pairs.
Description from trunk, r24188
- The failure in daily test was caused by missing initialization of member
"id" in a few constructors. This is now fixed.
- Added two overloaded H5Location::setComment
- Improved some error reporting in H5Location
- Improved error reporting in tests
Description from trunk, r24189
Changed header guards from single underscore to double underscore.
Platforms tested:
SunOS 5.11 (emu)
Linux/32 2.6 (jam)
Linux/64 2.6 (koala)/PGI compilers
OpenVMS creates another version of the file when a file is created for the second time, making
the test cases invalide.
Tested on OpenVMS and jam - simple change.
Close a group in test_dset, before the file can be properly closed.
This should fix the problem on OpenVMS.
Platforms tested:
Linux/32 2.6 (jam) with GNU compilers
SunOS 5.11 (emu)
There seem to be some objects still left open, so the file was not closed
properly and caused failure on OpenVMS, because on that platform, more than
one file cannot be opened at the same time (according to Ray.)
Added setFcloseDegree(H5F_CLOSE_STRONG) to test_dset() to eliminate the
failure temporarily, until the opened objects can be located and closed properly.
Platforms tested:
Linux/32 2.6 (jam) with GNU compilers
SunOS 5.11 (emu)
Description:
- Passing the c_str() of an std string into a C function caused failure
on OpenVMS. Added a work around using temporary string.
- Passing incorrect file access property list caused test_datasize() to
fail. Fixed.
Platforms tested:
Linux/32 2.6 (jam) with PGI compilers
Linux/32 2.6 (jam) with GNU compilers
SunOS 5.11 (emu)
Description:
Applied the fix for HDFFV-8067 and the minor cleanups from the trunk.
Platforms tested:
Linux/32 2.6 (jam) with PGI compilers
Linux/32 2.6 (jam) with GNU compilers
Linux/64 2.6 (koala) with ICC compilers
SunOS 5.10 (emu)