Bug Fix/Code Cleanup/Doc Cleanup/Optimization/Branch Sync :-)
Description:
Generally speaking, this is the "signed->unsigned" change to selections.
However, in the process of merging code back, things got stickier and stickier
until I ended up doing a big "sync the two branches up" operation. So... I
brought back all the "infrastructure" fixes from the development branch to the
release branch (which I think were actually making some improvement in
performance) as well as fixed several bugs which had been fixed in one branch,
but not the other.
I've also tagged the repository before making this checkin with the label
"before_signed_unsigned_changes".
Platforms tested:
FreeBSD 4.10 (sleipnir) w/parallel & fphdf5
FreeBSD 4.10 (sleipnir) w/threadsafe
FreeBSD 4.10 (sleipnir) w/backward compatibility
Solaris 2.7 (arabica) w/"purify options"
Solaris 2.8 (sol) w/FORTRAN & C++
AIX 5.x (copper) w/parallel & FORTRAN
IRIX64 6.5 (modi4) w/FORTRAN
Linux 2.4 (heping) w/FORTRAN & C++
Misc. update:
"bug fix" sort of.
Description:
The current mpicc at TG-NCSA recognizes uint64_t but not
int64_t. hdf5 code rightly assumes when the unsigned type
is defined, the corresponding signed type should be valid
too. So, when it detected uint64_t is valid, it went ahead
using int64_t which ended in compiling failure.
Solution:
Changed the detection to check on int64_t instead. This does
not change any logic, just goes around the mpicc compiler error
at TG-NCSA.
Platforms tested:
h5committested and tested at TG-NCSA (pp) too.
Misc. update:
Add a macro "elif" for the defination of haddr_t on windows.
Description:
There are no H5_SIZEOF_LONG_LONG for windows; instead H5_SIZEOF____int64 is used.
So for the following macro ifdef-block:
#if H5_SIZEOF_HADDR_T ==H5_SIZEOF_INT # define H5_PRINTF_HADDR_FMT "%u" #elif H5_SIZEOF_HADDR_T ==H5_SIZEOF_LONG # define H5_PRINTF_HADDR_FMT "%lu" #elif H5_SIZEOF_HADDR_T ==H5_SIZEOF_LONG_LONG # define H5_PRINTF_HADDR_FMT "%"H5_PRINTF_LL_WIDTH"u" #else # error "nothing appropriate for H5_PRINTF_HADDR_FMT" #endif
The error will be generated.
Solution:
Add another "elif H5_SIZEOF_HADDR_T==H5_SIZEOF___INT64" after the last "elif" above so that it
can generate the correct result on windows.
Platforms tested:
Since the change is so small, only test on windows and linux.
Misc. update: