Update configuration
Description:
Now that we've split the tree (Yea!), change the main trunk back to debug
on and production off.
Also, change the version # to 1.7.0
Changed enable-production as the default for release.
Platforms tested:
Only in eirene using pgcc and pgCC.
Did not use h5committest since the change is trivial
and Elena will test it at once. :-)
Misc. update:
update for release
Description:
Set the version information to 1.6.0-pre1 to get ready for
v1.6 release.
Platforms tested:
h5committested.
Misc. update:
Purpose:
Bug Fix
Description:
Changes needed to make "pmake" work on Modi4.
Solution:
Needed to add some null macro defines in the commence.in files.
Needed to remove a dependence on LIBH5TEST in the fortran make
since LIBH5TEST isn't used in the fortran stuff.
Platforms tested:
Modi4 (small change)
Misc. update:
Purpose: Maintenance
Description: I added three new configuration files in c++/config
directory for Cray SV1, T3E and T90IEEE
Solution:
Platforms tested: I used BlankForm in c++/config directory to create
new configuration files for Crays. Only test
on T3E is finally completed successfully. Two other
Crays are still running, and running, and running.
I am checking files in since they will not affect
any other platforms.
Binh-Minh and Bill,
could you please take a look since I made minimum changes
just to make it to work. I am not sure that everything is correct
even if it works.
Thanks!
Misc. update:
Bug fix
Description:
Missing returning error for failures occur in C++ examples.
Solution:
Added "return -1;" when an exception is caught.
Also, turned off automatic error printing so that the C++ API
will catch and handle the failures.
Platforms:
SunOS 5.7 (arabica)
Linux 2.4 (eirene)
IRIX 6.5.11 (modi4)
Purpose: Maintenance
Description: Bumped the version number to 1.5.62 after creating
a tar ball for the fourth round of testing.
Solution: run bin/h5vers -s scipt on arabica
Platforms tested: N/A
Misc. update:
Bug Fix
Description:
Quincey discovered that the new compiler on SOL needs the
-features=tmplife flag. However, this flag is only available for
version 5.3 of the compiler (and up, we're assuming).
Solution:
Add this flag only if the version of the compiler is 5.3 or greater.
Platforms tested:
Sol and Arabica (only affects solaris machines)
Misc. update:
Improvement
Description:
If $CXX is not defined, configure will try a list of possible
C++ compiler name. That is not always desireable.
Solution:
Change configure to combine all powerpc-ibm-aix* to one version.
Add xlC as the default $CXX value.
Platforms tested:
Tested in Copper only since the change affect AIX machine only.
Misc. update:
Purpose:
Bug Fix
Description:
There was another GNU-make-ism in the C++ examples Makefile.in
that I didn't clean up.
Solution:
Changed the "$<" to the name of the file to compile.
Platforms tested:
Copper (Small fix...problem was on Copper).
Misc. update:
Bug Fix
Description:
On Kelgia, the h5c++ script file needs to be explicitly chmod'ed to
executable.
Solution:
Placed this at the end of the configure script (just like in the
other configure scripts).
Platforms tested:
Kelgia (Very small fix...only needed to test it on one platform).
Misc. update:
Purpose: Maintenance for the third round of testing
Description: Increased the version number to 1.5.59 after creating
a tar ball for testing.
Solution:
Platforms tested:
Misc. update:
Bug fix
Description:
Corrected an omission of a module needed by the testhdf5 program.
Platforms tested:
Only in modi4 as the change is small.
Misc. update:
Text cleanup
Description:
Re-worded some informative and error messages.
Remove/Updated outdated comments.
Platforms:
Linux 2.4 (eirene)
IRIX 6.5.11 (modi4)
Purpose:
Code cleanup
Description:
Moved a utility function out so other tests can use the same
function and avoid code duplication. Future utility functions
can also benefit from this move.
Platforms tested:
SunOS 5.7 (arabica)
Linux 2.4 (eirene)
IRIX 6.5.11 (modi4)
HPUX 11.00 (kelgia)
Cleanup
Description:
Remove h5c++ when distclean is called.
Solution:
Platforms tested:
Tested only in copper since the change is trivial.
Misc. update:
Bug fix and minor code enhancement
Description:
Missing methods to read/write C++ String for an attribute and
a dataset.
Solution:
Added overloaded functions read and write to H5::Attribute and
H5::DataSet.
Also, added another constructor StrType so the need to separately
set the length of the string type can be eliminated. It's minor
but convenient.
Made some minor changes to make error messages more readable.
Platforms:
SunOS 5.7 (arabica)
Linux 2.4 (eirene)
IRIX 6.5.11 (modi4)
HPUX 11.00 (kelgia)
Utility Addition
Description:
Added h5c++ script file to compile HDF5 C++ applications.
Modified so that these are compiled only during a make check-install
action and then only with the h5c++ script.
Platforms tested:
Verbena (Fortran & C++)
Arabica (Fortran & C++)
Modi4 (Fortran & Parallel)
Misc. update:
API tweak.
Description:
The H5Sget_select_bounds() API call was using hsize_t arrays for retrieving
the 'start' and 'end' coordinates, which is counter to the rest of the dataspace
API.
Solution:
Change the arrays to be hssize_t instead.
Platforms tested:
FreeBSD 4.8 (sleipnir) w/C++
FreeBSD 4.8 (sleipnir) w/parallel
h5committested
Misc. update:
Updated all docs for this change.
Added 1.4 compatibility #ifdef's
Purpose: Maintenance for the second round of testing
Description: Used bin/h5vers to change version number to 1.5.55
Solution:
Platforms tested: arabica
Misc. update:
Code Cleanup
Description:
Warning messages were being produced by the "make" program because
the "docdir" was being specified twice as a target in the generated
Makefiles. This is because the "EXAMPLESDIR" was also defined as
"docdir".
Solution:
Made "EXAMPLESDIR" unique for C, Fortran, and C++ in the commence.in
file and removed EXAMPLESDIR from the Makefile.ins
Platforms tested:
Dangermouse (only affects make system, not code).
Misc. update:
Purpose: Maintenance
Description: I changed release version to 1.5.54.
Email about tetsing of 1.5.53 will be send after this checkins.
Solution: used bin/h5vers -s to change the version number
Platforms tested: Done on arabica
Misc. update:
Bug fix and feature
Description:
The patch to Makefile.in failed if an empty directory of fortran/examples
was left behind by a previous build.
Solution:
Attempted to put it in config/conclude.in just became a mess since
it is hard to predict when we will include examples in the subdirs
or not.
Borrow the structure of install-examples and do some handcode per
interface. The Makefile.in of each interface (C, Fortran, C++)
controls everything. Not very systematic but pretty clean for this
case.
Platforms tested:
h5committested.
Also tested in modi4 with various combinations of fortran, c++
enabled.
Misc. update:
Adding new platform support
Description:
Added support for the C++ API on hpux11.00 with the compiler aCC.
Because aCC doesn't use "std," a new macro H5_NO_STD is provided
and used where "std" is presented in the library.
In addition, changed several cout's when reporting errors to cerr's.
Platforms tested:
HPUX 11.00 (kelgia)
Linux 2.2x (eirene)
IRIX 6.5.11 (modi4)
SunOS 5.7 (arabica) - by Elena
Misc. update:
Adding new platform support
Description:
Added the config file to support the C++ API on hpux11.00 with
the compiler aCC.
Platforms tested:
HPUX 11.00 (kelgia)
Linux 2.2x (eirene)
IRIX 6.5.11 (modi4)
SunOS 5.7 (arabica) - by Elena
Misc. update:
Will update MANIFEST and release_docs/RELEASE for new features.
Bug Fix
Description:
"using namespace std" isn't supported on HP-UX. We ahve the H5_NO_STD
flag begin set, but it wasn't being used.
Solution:
Added the check to the #ifdef line to see if H5_NO_STD is defined
before trying to use it in the program.
Platforms tested:
Kelgia
Bug Fix
Description:
Kelgia needs the old header file format for #includes.
Solution:
Conditionally include the old header file format if
OLD_HEADER_FILENAME is defined.
Platforms tested:
Kelgia
so_locations was not removed during distclean.
Added it to the distclean targets.
Platforms tested:
Tested h5committest {arabica (fortran), eirene (fortran, C++)
modi4 (parallel, fortran)}? No
[If no, why not?] Tested in modi4 and eirene with C++ enabled..
Update
Description:
Updated the configure scripts. Fortran and C++ didn't have proper
checks for Linux LFS support. Also needed to remove the "-g" flag
from the compile line if --enable-production is set. For that, I took
how it's being done in HDF5 Lite...
Platforms tested:
Linux
new functions
Description:
Added these member functions to class Group per the new C functions
H5Gget_num_objs, H5Gget_objname_by_idx and H5Gget_objtype_by_idx:
// Returns the number of objects in the group.
hsize_t getNumObjs() const;
// Retrieves the name of an object in a given group by giving index
ssize_t getObjnameByIdx(hsize_t idx, string& name, size_t size) const;
// Returns the type of an object in a given group by giving index;
// the overloaded function also provided the object type in text as
// "group" for H5G_GROUP
// "dataset" for H5G_DATASET
// "datatype" for H5G_TYPE
int getObjTypeByIdx(hsize_t idx) const;
int getObjTypeByIdx(hsize_t idx, string& type_name) const;
Platforms:
SunOS 5.7 (arabica)
Linux 6.2 (eirene)
IRIX 6.5.11 (modi4)
Purpose:
use H5_DLLCPP to replacer __DLLCPP__ for c++ interfaces.
Description:
Solution:
Platforms tested:
linux 2.2.18smp, IRIX64, solaris 2.7, windows 2000
Update, Bug Fix, and Feature Add
Description:
- Updated how AC_{ENABLE,WITH} help messages were being generated.
Autoconf now gives you an AC_HELP_STRING macro to use to create
them.
- Fixed the problem with Linux LFS on RedHat 7.3 machines. It wasn't
finding getdents64(), so we can't rely on that being present
anymore...
- Added GPFS detection and setting.
- Updated how compression is specified. It's no longer necessary to
test for HAVE_ZLIB_H, HAVE_LIBZ, and HAVE_COMPRESS2. The one macro
{H5_}HAVE_COMPRESSION takes care of all of these.
Solution:
Changed the check for Linux LFS from looking for getdents() to
looking at the version number of the kernel (using the uname -r
command). You can still override with the --enable-linux-lfs switch
if you really believe that your <2.4 kernel has LFS support.
Platforms tested:
Linux (2.2 and 2.4)
Bug Fix
Description:
C++ uses the "off_t" type for external files as well. I'm assuming
that there's going to be a problem with 4 byte off_ts and 8 byte
off_ts in the C++ code as well. I compiled everything on Linux and it
worked, but I don't think we have a check for this bug in the library
yet...
Platforms tested:
Linux
Bug fix
Description:
H5Ewalk_cb was being called from a C++ API, when it really is an
internal routine to the H5E interface.
Solution:
Removed C++ API wrapper for it.
Platforms tested:
FreeBSD 4.5 (sleipnir)
Purpose:
New Feature - per library change
Description:
Added the new member function getMemberIndex to classes EnumType and
CompType to match the new C API H5Tget_member_index. Given the name
of a member of an enumeration or compound datatype, this new function
queries the index of the member.
Platforms:
SunOS 5.7 (arabica)
Linux 6.2 (eirene)
New Feature - per library change
Description:
Added new member function DataSet::fillMemBuf for the new
C API H5Dfill. Quincey's description of H5Dfill is as followed:
Added new H5Dfill() routine to fill the elements in a selection for a
memory buffer with a fill value. This is a user API wrapper around some
internal routines which were needed for the fill-value modifications
from Raymond as well as Pedro's code for reducing the size of a chunked
dataset.
Platforms:
SunOS 5.7 (arabica)
Linux 6.2 (eirene)
Update
Description:
Changed so that the Fortran and C++ configures are named "HDF5
Fortran" and "HDF5 C++" resp. instead of just "HDF5.
Solution:
Add an extra parameter to the subroutine which generates the new
configure.in files.
Platforms tested:
Linux
Update
Description:
Updated the h5vers script to automatically update the configure.in
files so that they reflect the correct version in the AC_INIT line.
Platforms tested:
Linux
Update
Description:
Updated the way we used the AC_INIT macros so that it's current to
the new standard way and not deprecated anymore.
Also, added a test for some functions during parallel Fortran
configure. This required the creation of an H5config_fortran.h file
so that we can test for these...
Platforms tested:
Elena is going to test the changes to the fortran after she checks in
her other code. I will test on SDSC machines after getting her code.
The other changes were tested on Linux.
Feature Update
Description:
Modified the AC_OUTPUT macro to coincide with the now-standard
way of doing things. I.e., you put all of the files you want to
generate into the AC_CONFIG_FILES macro and invode AC_OUTPUT with
no parameters.
Platforms tested:
Linux
Autotools Update
Description:
I've updated autoconf, automake, and libtool to the latest/greatest
versions; 2.53, 1.6, and 1.4.2 resp.
Many changes come with the new versions:
- ltconfig is no longer used
- acconfig.h is no longer used (#define values are declared with
the macro)
- regeneration of all of the aclocal.m4, configure, and
H5config.h.in files.
- new config.{guess,sub} files
- new ltmain.sh file
Platforms tested:
AIX (blue), and Linux
Purpose:
Code cleanup
Description:
DataType::convert: changed the 'nelmts' parameter from size_t to
hsize_t according to hdf5 library change.
Platforms tested:
SunOS 5.7 (arabica)
Linux 6.2 (eirene)
Purpose:
Small bug fixing
Description:
Replaced NULL by 0 for initializing or passing null "string".
The problem showed up on platinum.
Platforms tested:
SunOS 5.7 (arabica)
Linux 6.2 (eirene)
IA-32 Linux Cluster (platinum)
Purpose:
Adding new member function
Description:
Added PropList::copyProp according to the new api H5Pcopy_prop
in the C library. I'm still working on adding more tests so
test for this will be added as well.
Platforms tested:
SunOS 5.7 (arabica)
Linux 6.2 (eirene)
FreeBSD 4.4 (sleipnir)
DLL accommodation
Description:
In the inline constructor below:
DSetCreatPropList() : PropList( H5P_DATASET_CREATE) {}
H5P_DATASET_CREATE causes the famous "unresolved symbol" error
when building the Release version of dsets_cpp with DLL.
H5P_DATASET_CREATE uses H5P_CLS_DATASET_CREATE_g, which is
imported from hdf5dll. The inline constructor used in dsets.cpp
causes the use of H5P_CLS_DATASET_CREATE_g, which is then
considered undefined because dsets_cppdll is not using hdf5dll.
This only occurs in the Release version because the Debug build
disables inline.
Solution:
Made the affected constructor not inlined, i.e., its implementation
went in the cpp file.
Note that this problem does not occur in 1.4 branch because
H5P_DATASET_CREATE was defined differently, i.e., did not involve
external storage.
Platforms tested:
SunOS 5.7 (arabica)
Linux 6.2 (eirene)
Windows 2000
Purpose:
Bug Fix
Description:
C++ examples weren't being removed.
Solution:
We were trying to remove something called "EXAMPLE_DOCS", but we
needed to remove "EXAMPLE_PROGS" instead.
Platforms tested:
Linux
Bug Fix
Description:
The make uninstall-examples wasn't working if fortran or C++ was
built.
Solution:
Added uninstall-examples to the Makefile.
Platforms tested:
Linux
Purpose:
Adding support for dll
Description:
Added __DLLCPP__ to all public classes and templates.
Added #include "H5Include.h" to H5RefCounter.cpp because of the
use of DLLCPP in .h file and it needs the following chain:
H5Include.h/hdf5.h/H5public.h/H5api_adpt.h
Added #pragma warning(disable: 4251) to H5Exception.h to eliminate
this warning on private data members of type 'string.' This
occurs because 'string' is not yet instantiated at compilation
time; however, since the class is exported, the warning is
harmless.
Changed this member function's parameter to be passed as reference.
from:
void CompType::insertMember( const string name,...
to:
void CompType::insertMember( const string& name,...
Platforms tested:
Linux 6.2 (eirene)
Windows 2000
Purpose:
Fix fix
Description:
Moved Binh-Minh's fix of the lack of support for C++ in libtool by
adding the DEFAULT_LIBS macro into the configure.in and
config/commence.in files.
Solution:
Put it into the configure.in and commence.in files. Reran autoconf.
Purpose:
Improvement
Description:
Using LIBS for c++ default library resulted in the library showed up
in two many places.
Solution:
Added new macro DEFAULT_LIBS to specify default library for the
C++ API tests
Platforms tested:
IRIX64 (modi4)
Purpose:
Added platform support
Description:
The current libtool doesn't fully support C++ yet, so until it
does, the default libraries have to be manually specify.
Some minor cleanups needed.
Solution:
Added DEFAULT_LIBS=@DEFAULT_LIBS@ to use new macro for default library.
Added $(DEFAULT_LIBS) to link lines.
Removed inappropriate comments.
Platforms tested:
IRIX64 (modi4)
I'll check out again to make sure I haven't broken anything else.
Purpose:
Added platform support
Description:
The current libtool doesn't fully support C++ yet, so until it
does, the default libraries have to be manually specify.
Some minor cleanups needed.
Solution:
Added DEFAULT_LIBS=@DEFAULT_LIBS@ to use new macro for default library
Added $(DEFAULT_LIBS) to link lines
Removed inappropriate comments, and this extra set, it occurs twice:
## These are our main targets. They should be listed in the order to be
## executed, generally most specific tests to least specific tests.
RUNTEST=$(LT_RUN)
although I'm not sure if it even should be there, so I should leave
it for Bill.
Platforms tested:
IRIX64 (modi4)
I'll check out again to make sure I haven't broken anything else.
Purpose:
Added platform support
Description:
Added new macro DEFAULT_LIBS to specify default library for the
C++ API tests
Platforms tested:
IRIX 6.5 (modi4)
Purpose:
Adding new supported platform
Description:
Added this config file for modi4. Note that, when libtool v1.5
is released and we start using it, the default library libCio can
and should be removed from LIBS. It is there now because previous
versions of libtool do not fully support c++ yet and default
libraries must be manually added to the link line.
Platforms tested:
IRIX64 6.5 (modi4)
Purpose:
Bug fix
Description:
In several if statements, '>' was used in place of '<='. This
caused exceptions thrown inappropriately. Replaced '>' by '<='
where applicable.
Platforms tested:
SunOS 5.7 (arabica)
Windows 98
Purpose:
Feature Rollback
Description:
Shared C++ libraries aren't working on all platforms (read: Arabica).
We need to switch to the old method until we can sort this out.
Solution:
Re-add the "-static" flag to the library creation lines.
Purpose:
Bug Fix
Description:
There were weird "throw()"s which were being placed into the
configure script. Some C++ compilers were barfing on this syntax
(which was akin to "extern int exit(int) throw ();" wonder why?).
Solution:
Ran a different autoconf on the configure file which I'd downloaded
from ftp.gnu.org. It doesn't have those "throw()"s anymore
Platforms tested:
Linux
Purpose:
Bug Fix
Description:
Shared libraries weren't being built for C++.
Solution:
Removed the -static flag from the libtool compile line. This allows
both shared and static libraries to be built instead of just static
ones. After talking with Quincey and Binh-Minh, there shouldn't be
any reason for C++ to be built static only.
Platforms tested:
Linux
Purpose:
Removing warnings
Description:
H5IdComponent::operator= shouldn't be virtual because the subclass'
operator= have different type for the rhs argument. Removed virtual.
Platforms tested:
SunOS 5.7 (arabica)
Linux 6.2 (eirene)
Purpose:
Bug fixing
Description:
H5IdComponent::operator= shouldn't be virtual because the subclass'
operator= have different type for the rhs argument. Removed virtual
Platforms tested:
SunOS 5.7 (arabica)
IRIX64 (modi4) - only tested that the warnings went away, still working
on other configuration problems.
Purpose:
Bug Fix
Description & Solution:
In the test for "namespace", we needed to include the "iostream"
header file to remove errors for strict compilers who need iostream
for namespaces. I moved the test for namespace to after the test for
"old header filenames" to make sure that I'm #including the correct
iostream ("iostream" or "iostream.h").
Platforms tested:
Linux
Code cleanup
Description:
Property that H5P(g|s)et_hyper_cache uses is no longer in use inside the
library.
Solution:
Removed H5P(g|s)et_hyper_cache API functions, except when backward
compatibility is turned on. When backward compatibility is turned on,
the property is defined by the library, but unused internally.
Platforms tested:
FreeBSD 4.4 (sleipnir)
Backward Compatibility Fix
Description:
One of H5P[gs]et_buffer's parameters changed between v1.4 and the
development branch.
Solution:
Added v1.4 compat stuff around H5P[gs]et_buffer implementation and testing
to allow v1.4.x users to continue to use their source code without
modification.
These changes are for everything except the FORTRAN wrappers - I spoke with
Elena and she will make the FORTRAN wrapper changes.
Platforms tested:
FreeBSD 4.4 (hawkwind)
Backward Compatibility Fix
Description:
One of H5P[gs]et_sym_k's parameters changed between v1.4 and the development
branch.
Solution:
Added v1.4 compat stuff around H5P[gs]et_sym_k implementation and testing
to allow v1.4.x users to continue to use their source code without
modification.
These changes are for everything except the FORTRAN wrappers - I spoke with
Elena and she will make the FORTRAN wrapper changes.
Platforms tested:
FreeBSD 4.4 (hawkwind)
Backward Compatibility Fix
Description:
One of H5P[gs]et_cache's parameters changed between v1.4 and the development
branch.
Solution:
Added v1.4 compat stuff around H5P[gs]et_cache implementation and testing
to allow v1.4.x users to continue to use their source code without
modification.
These changes are for everything except the FORTRAN wrappers - I spoke with
Elena and she will make the FORTRAN wrapper changes.
Platforms tested:
FreeBSD 4.4 (hawkwind)
Purpose:
Eliminated warnings
Description:
On IRIX and Windows 98, if a function, that returns a value, throws
an exception in "else" statement, the compiler still complains that
the function doesn't return a value.
Solution:
Replaced:
if (something valid)
return a value
else
throw an exception
with:
if (something invalid)
throw an exception
return a value
Platforms tested:
Windows 98
SunOS 5.7 (arabica)
Linux 6.2 (eirene)
IRIX64 (modi4) - only tested that the warnings went away, still working
on other configuration problems.
Purpose:
Bug fix
Description:
Add the overloaded member function Attribute::getName to return
the attribute name's length as in C API. This functionality was
missing. Note that the current getName that returns "string"
is not removed, for different way of using getName.
Platforms tested:
SunOS 5.7 (arabica)
Windows 98
Purpose:
Fixing found bug
Description:
A data file cannot be removed because the corresponding H5File object
is still in existence, which means the data file is still opened.
Solution:
Moved h5_cleanup to outside of the try block so that the H5File object
will go out of scope and be destroyed before h5_cleanup attempts to
remove the corresponding data file.
Platforms tested:
SunOS 5.7 (arabica)
Windows 98
Purpose:
Switch from old property list to new generic property list.
Description:
Changed C++ according to the new generic property list.
Platforms tested:
FreeBSD, SunOS 5.7.
Purpose:
Bug fixing
Description:
+ added operator= to PredType
+ removed 'using namespace std' from H5RefCounter.cpp because it's not
used and leaving it there requires #include some standard header file
+ added 'using namespace std' in H5Exception.cpp
Platforms tested:
SunOS 5.7 (arabica)
Windows 98
Kludge
Description:
Since we're only about halfway through converting the internal use of
property lists from the "old way" to the generic property lists, we turned
off snapshots to avoid exposing lots of API changes to users, until the
APIs settled down.
Getting the snapshots rolling again seems to have become a priority, so
some changes are going to have to be made now that were going to be
postponed until we were completely finished with the conversion. This
requires that the old API functions be able to deal with both the old
and new property lists smoothly.
Solution:
Kludge together the property list code so that they can transparently handle
dealing with both the old and new property lists
Platforms tested:
FreeBSD 4.4 (hawkwind)
Purpose:
Feature Add
Description:
Added "install-example" and "install-all" to the Makefile system.
The behaviour of the "make install*" options:
make install - Installs binaries, libraries, include
files, and example programs.
make install-examples - Installs only the example programs.
The directories are:
${prefix}/doc/hdf5/examples/{c,c++,fortran}
make install-all - Install the binaries, libraries, include
files, example programs, and
documentation. The whole kit-n'-caboodle.
make uninstall-examples - Get rid of those example files (but not
the ${prefix}/doc/hdf5/examples/...
directories)
There's a new bin/ program which helps create directories which are
deeply nested called "mkdirs". It's a simple shell script.
Platforms tested:
Linux
Code cleanup
Description:
Changed prototype for the buffer in Attribute::write from "void *"
to "const void *"
Platforms tested:
FreeBSD 4.4 (hawkwind)
SunOS 5.7 (arabica)
Linux 6.2 (eirene)
Code cleanup (sorta)
Description:
When the first versions of the HDF5 library were designed, I remembered
vividly the difficulties of porting code from a 32-bit platform to a 16-bit
platform and asked that people use intn & uintn instead of int & unsigned
int, respectively. However, in hindsight, this was overkill and
unnecessary since we weren't going to be porting the HDF5 library to
16-bit architectures.
Currently, the extra uintn & intn typedefs are causing problems for users
who'd like to include both the HDF5 and HDF4 header files in one source
module (like Kent's h4toh5 library).
Solution:
Changed the uintn & intn's to unsigned and int's respectively.
Platforms tested:
FreeBSD 4.4 (hawkwind)
New Features!
Description:
Start migrating the internal use of property lists in the library from the
older implementation to the new generic property lists.
Currently, only the dataset transfer property lists are migrated to the
new architecture, all the rest of the property list types are still using
the older architecture.
Also, the backward compatibility features are not implemented yet, so
applications which use dataset transfer properties may need to make the
following changes:
H5Pcreate(H5P_DATASET_XFER) -> H5Pcreate_list(H5P_DATASET_XFER_NEW)
and
H5Pclose(<a dataset transfer property list>) -> H5Pclose_list(id)
This still may have some bugs in it, especially with Fortran, but I should
be wrapping up those later today.
Platforms tested:
FreeBSD 4.4 (hawkwind)
Purpose:
Bug Fix
Description:
The way we were generating Dependencies and .depend files was broken.
If the $srcdir or other macros began with a ".", then it would match
anything and cause problems since it would then overwrite the
beginning of the header file's path.
Solution:
Wrote a Perl script which can handle this type of weirdness better.
It's only used when the environment is a GNU one with a GCC
compiler...
Platforms tested:
Linux
Bug Fix, Code Cleanup, Code Optimization, etc.
Description:
Fold in the hyperslab speedups, clean up compile warnings and change a
few things from using 'unsigned' or 'hsize_t' to use 'size_t' instead.
Platforms tested:
FreeBSD 4.3 (hawkwind), Solaris 2.7 (arabica), Irix64 6.5 (modi4)
Purpose:
Bug Fix
Description:
We long ago changed the compiler flags to pick out dependencies to
-MM instead of -M so that only #include "filename.h" type headers
will be put into the .depend file.
Solution:
Changed this flag.
Platforms tested:
Linux
Cleanup
Description:
If there isn't anything to "remove" during the cleanup faze. This
stops the "make clean"s from printing out:
rm -f
all of the time.
Solution:
Check if hte macros have anything in them before calling the rm.
Platforms tested:
Linux
Portability changes
Description:
Very quick port to Compaq (nee DEC) Alpha OSF5.
Solution:
Added a new "dec-osf5.x" configuration file and changed configure.in
to look for it.
The local test machine is now passing all the tests, except I can't get
the "-L<path>" stuff to work, so tools which depend on the HDF4 library
around tested.
Platforms tested:
Compaq Alpha 5.1 (compaq.ncsa.uiuc.edu)
Bug Fix
Description:
If we need to specify a -R flag for dynamic libraries (like, in the
case when we specify --with-hdf4), then this flag needs to be added
to the linking line so that it will show up in the generated library
and other programs linking to that library will be able to find the
relevant libraries.
Solution:
Added the DYNAMIC_DIRS macro to the link line.
Platforms tested:
Arabica
Bug Fix
Description:
If the user specifies where to look for a library (like the zlib) on
the commandline, then we add that directory to the LDFLAGS macro.
Solution:
Copied the code which checks for this from the C configure.in. Also
added code which checks for the --with-zlib flag since that wasn't in
there.
Platforms tested:
Linux
Description:
dsets.cpp:
- Added routine's headers to be consistent with the C tests
- Added the following tests (they are not in the C version
test because they are C++ specific):
+ Test copying a user-defined type using DataType::copy
+ Test copying a user-defined type using DataType::operator=
+ Test copying a user-defined int type using DataType::operator=
+ Test copying an integer predefined type using a constructor
+ Test copying an integer predefined type using DataType::operator=
th5s.cpp:
- Added routine's headers to be consistent with the C tests
- Cleanup old couts and statements used during debugging
Platforms tested:
arabica (sparc-sun-solaris 2.7)
Description and Solution:
- Predefined type objects become outdated when the application calls
H5close and then H5open to use the library again.
Solution:
+ Reimplemented PredType using enum type to obtain up-to-date
values for predefined types, i.e. H5T_xxx_yyy's, when they
are used.
+ Added to PredType its own version of getId() to return the
appropriate predefined type id according to the enum value.
+ Made IdComponent::getId() a virtual function
- Since Albert already fixed the "multiply defined RcsId" problem,
removed the now become unnessary "#undef RCSID" from H5Include.h
- Added a check for func_name != NULL in one of the Exception
constructors because seg. fault. might occur in some situations.
- It is more convenient to make a copy of a datatype, dataspace,
or property list by using assignment operator
Solution:
+ Added assignment operator to DataType, DataSpace, and
PropList so that they will invoke H5Tcopy, H5Scopy,
and H5Pcopy, respectively, instead of just simply
copying the data members as for other classes. So,
now a type, space, or property list can be copied by
either :
mytype = original_type, or
mytype.copy(original_type)
Note that copy constructors are still just copying the
data members.
+ Added an assignment operator to DataType that takes a
predefined type.
+ Made IdComponent::operator= a virtual function
Platforms tested:
arabica (sparc-sun-solaris 2.7)
Bug Fix
Description:
Some of the modules weren't being compiled cause they weren't added
to the TEST_OBJ macro.
Solution:
Added them to the TEST_OBJ macro a la the C tests.
Platforms tested:
Linux
Purpose:
Adding data file for testing
Description:
The dataspace test, th5s.cpp, needs this data file.
Solution:
Added the file, using the copy of hdf5/test/th5s.h5
Platforms:
arabica (sparc-sun-solaris 2.7)
Purpose:
Improve C++ API test output appearance
Description:
The C++ API tests are not easy to be spotted because their output
look similar to part of the C tests.
Solution:
Added "C++ API:" in front of the C++ test titles.
Platforms tested:
arabica (sparc-sun-solaris 2.7)
Purpose:
Format and typos mostly
Description:
Changed the "Copyright" header of some files so they will be consistent.
Platforms tested:
arabica (sparc-sun-solaris 2.7)
Purpose: Usability enhancement
Description:
- Added more information about the failure to all the throw's,
i.e, member function name and more detail about the failure, where
appropriate. Also, added exception throws for private functions,
such as p_close to provide more specific details.
- Added two api functions: Exception::getFuncName() and
Exception::getCFuncName() to provide the name of the member
function where failure occurs.
- Fixed some typos, one of which caused segn. fault in some
situations (resetIdComponent was accidentally called twice
in a couple of places :)
Platforms:
arabica (sparc-sun-solaris 2.7)
Purpose:
Test code improvement
Description:
- Added H5_HAVE_ZLIB_H and H5_HAVE_LIBZ to dsets.cpp
- Added the use of new API Exception::getCFuncName to obtain
the name of the function where failure occurs, to various places
in the test code.
Platforms tested:
arabica (sparc-sun-solaris 2.7)
Bug Fix
Description:
Fixed the compile lines for the C++ tests.
Solution:
Added the actual objects to be compiled into the testhdf5 program and
removed the tfile from the TEST_PROGS line since it would try to
create a program from the tfile module, but it didn't have a "main"
function.
Platforms tested:
Linux
Update
Description:
We now have a "real" testing thingy for the C++ code. We don't need
to run things in the examples directory.
Solution:
Commented out the "TEST_SCRIPT" line.
Platforms tested:
Linux
Purpose:
Bug fix
Description:
Compiled error about "RcsId initialized twice"
Solution:
This problem has been taken care of in the C++ API already. However,
because dsets.cpp includes the C++ header file H5Cpp.h after the
C test header files, h5test.h and testhdf5.h, the fix was missed.
Moved H5Cpp.h to before those C header files.
Platforms tested:
arabica (sparc-sun-solaris 2.7)
Purpose:
Bug fix
Description:
The Exception destructor accidently called H5Eprint, which caused
error messages to be printed where they are not supposed to because
the failures are expected.
Solution:
Removed that lousy call!
Platforms tested:
arabica (sparc-sun-solaris 2.7)
Adding Test
Description:
- Add the tests to the Makefile so that they'll be executed.
- Fixed a few bugs in dsets.cpp
* Some buffers should have been char *'s instead of void *'s.
* An iterator for a loop wasn't declared properly.
- Formatting changes
Solution:
- Changed the void *'s to char *'s.
- Declared the loop iterator.
NOTE: Doesn't work just yet. There's a conflict with a C++ keyword
(delete) in the H5Pprivate.h header file. Quincey's looking into
this.
Platforms tested:
Linux
Feasibility improvement
Description:
- Some member functions in class Exception can be called without
an Exception instance exits, but because they are not static, they
cannot.
- Many exception throwings don't provide any information to callers.
Solution:
- Add 'static' to several member functions in class Exception.
- Added <class name::function name> to some exceptions thrown
in H5File.cpp and H5FcreatProp.cpp. I'm trying this for users'
comments. More information may be added later and to all
exceptions.
- Changed the comment line for emacs editor to:
// C++ informative line for the emacs editor: -*- C++ -*-
because... I'd rather not say that the code "may look like C" :-)
Platforms tested:
Linux (gcc version egcs-2.91.66)
Bug Fix
Description:
Wasn't building the test programs if user simply did a build with
``make check'' instead of ``make all && make check''.
Solution:
Put the test programs in the TEST_PROGS macro so that they'd be
built.
Platforms tested:
Linux
Bug Fix
Description:
The RUNSERIAL and RUNPARALLEL macros weren't needed in the C++ stuff
and were messing up some of the testing.
Solution:
Removed them.
Platforms tested:
Linux
Bug Fix
Description:
Added comments to the top of C++ files to indicate that it's a C++
file and not a C source code file. Also added a macro which makes
emacs automagically enter c++-mode. (Recommended by Frank Schimmel
fschimme@monsoon.CAPS.ou.edu)
Adding tests to the C++ API
Description:
The C++ API has no formal testing yet.
Solution:
Added tests for file and dataset interfaces. I'm still working on
other tests.
Platforms tested:
Linux (gcc version egcs-2.91.66)
I temporarily modified the Makefile on my local Linux machine and these
tests work. I need Bill to help adding them permanently before I can
test on an NCSA machine. I checked the files in now so Bill can do that.
Purpose:
Small bug fix
Description:
A stub function has returned type hsize_t but returns -1.
Solution:
Changed returned value from -1 to 0
Platforms tested:
Solaris (arabica)
Fixup
Description:
We were specifying a config file for the C++ stuff and it didn't need
one. This would cause problems with compiling the C++ stuff since it
wouldn't get the correct H5config.h file.
Solution:
Removed support for it.
Platforms tested:
Eirene
Purpose: bug fix
Description:
I found a couple of places where virtual destructors were missing
and could cause small memory leaks. Also, some destructors were
not virtual when they should be.
Solution:
- added virtual destructors, which also free dynamically allocated
memory
- added virtual to several destructors
- also, fixed several typos
Platforms tested:
Solaris 2.7 (arabica)
Fix and improve
Description:
- Put functions that are common to H5File and Group into a
prototype class, CommonFG. I didn't do that before because
of the fear of the consequences of multiple inheritance, since
H5File and Group already inherit from different super classes.
I recently read a C++ book and learned to use MI more safely.
This change reduced some more of code redundancy.
- Added missing const to some function parameters
Platforms tested:
Solaris/CC 5.0 (arabica)
Fix and improve
Description:
- Put functions that are common to H5File and Group into a
prototype class, CommonFG. I didn't do that before because
of the fear of the consequences of multiple inheritance, since
H5File and Group already inherit from different super classes.
I recently read a C++ book and learned to use MI more safely.
This change reduced some more of code redundancy.
- Added missing const to some function parameters
- Added missing return statements for some functions.
Platforms tested:
Solaris/CC 5.0 (arabica)
Doh!
Description:
When adding the examples directory to the testing, forgot to
remove it from the other scripts in the makefile since it would
then be run twice.
Solution:
Removed it (saved the old code)
Platforms tested:
Hey! Trust me :)
Description:
Dec CC compiler doesn't support some new c++ features.
Some typos caused compilation erros on Dec Alpha.
Solution:
- Added macro BOOL_NOTDEFINED to define bool type on Dec
Alpha (gondolin) since its compiler doesn't support bool.
- Added macro NO_STATIC_CAST to prevent the use of the new
c++ feature static_cast since Dec CC compiler doesn't support.
- Added const to parameters of some functions to match the
functions' declaration and definition. Typos errors and
Dec CC complained.
Platform:
Solaris (arabica). Also tried to build on Dec Alpha but still
not linked due to some missing compiler flags; its compilation
went fine though.
Fix
Description:
When not building in the same directory, we needed to tell the
checker wherre to look for files.
Solution:
Put $(srcdir) before things which needed it.
Platforms tested:
Linux
Add
Description:
Adding a small amount of testing to the C++ library until "real"
testing can be created. (We use the examples).
Platforms tested:
Linux
Fix
Description:
Needed to change the extention to the file configure expects to
be in the source directory when Binh-Minh changed the extensions
for all the files.
Solution:
Did just that.
Fix
Description:
Windows couldn't handle the .C extension. The filenames had to be
changed to *.cpp instead.
Solution:
Changed in the Makefiles to accomodate said change.
Platforms tested:
Eyeballed.
Purpose:
Support portability
Description:
I forgot that source file extension .C will not work on Windows.
Solution:
Changed all source file from *.C to *.cpp for portability.
Platforms tested:
arabica (sparc-sun-solaris 2.7)
Description:
The prototype of two C API functions, H5Tget_offset and
H5Sget_simple_extent_npoints was changed to fix bug #446,
resulting in the need for updating the two corresponding
C++ API functions.
Solution:
- Changed the return type of AtomType::getOffset from size_t
to int, and the error return value from 0 to -1.
- Changed the return type of DataSpace::getSimpleExtentNpoints
from hsize_t to hssize_t, and the error value from 0 to -1.
Platforms tested:
arabica (sparc-sun-solaris 2.7)
Improvement
Description:
Made the Makefiles better.
Solution:
Added standard macros concerning where things are place. Like
libraries and so forth.
Platforms tested:
Linux
YABF
Description:
Needed to add the source directory for the built HDF5 library.
Solution:
Added -I../../src to the compile flags.
Platforms tested:
Linux
Bug fix
Description:
When building in a different directory, we weren't picking up the
header files correctly. The -I flag wasn't pointing to the
correct place.
Solution:
Changed the -I flag to point to the C++ source directory.
Platforms tested:
Linux
Reversal of Patch
Description:
I thought that the solaris boxen could handle the -Wc,<flag> flag
(or, rather, that libtool would do the correct thing with their
compilers). However, this isn't the case, apparently.
Solution:
Removed the ``-Wc,-LANG:std'' flag and put it in the CPPFLAGS
macro instead. This should cause it to be passed to the compiler
only...one hopes...
Bug-ish fix
Description:
Spurious warnings would show up if libtool was trying to pass the
-LANG:std flag to the compile line.
Also, if the library is compiled with -all-static, then it would
complain about not finding dlopen and friends.
Solution:
Used the libtool -Wc,<flag> option to pass the -LANG:std flag to
the compile line.
Used ``-dlopen self'' when compiling.
Platforms tested:
Linux
Bug
Description:
Compiler needed both the -instances=global and the -LANG:std flag
to function.
libtools spits out a warning about not being able to find the
ANG:std library directory, but that's okay...it passes it to the
linker anyway.
Platforms tested:
Solaris (Arabica)