| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
----------------------
./MANIFEST
./src/H5FDmulti.c [NEW]
./src/H5FDmulti.h [NEW]
./src/Makefile.in
./src/hdf5.h
The split driver was reimplemented as a more general "multi"
driver which is capable of splitting data into multiple files
like the family driver except the partioning is done by memory
usage type instead of address. The H5Pset_fapl_split()
function just calls H5Pset_fapl_multi() with arguments which
prepare to split the address space into two files: meta and
raw data.
This is the first version. I plan to allow the open() call to
relax a bit which would allow one to open an hdf5 file when
only the meta-data file is present. This would allow a very
large file to be split and stored on tape and the relatively
small meta file to be mirrored on disk to allow limited
browsing of the file (any request for raw data would fail).
./src/H5private.h
./src/H5F.c
./src/H5FD.c
./src/H5FDprivate.h
./src/H5FDpublic.h
./src/H5FDcore.c
./src/H5FDfamily.c
./src/H5FDmpio.c
./src/H5FDsec2.c
Added the ability for a file driver to store information in
the superblock which would be needed if the file were opened
again later for reading. The format is driver-defined which
allows users to extend it however they like.
./doc/html/H5.format.html
Added information about the new driver information block of
the superblock. This is where file drivers store information
they need in order to reopen the file later.
./src/H5F.c
./src/H5Fprivate.h
./src/H5FD.c
./src/H5FDprivate.h
./src/H5FDpublic.h
./src/H5FDcore.c
./src/H5FDfamily.c
./src/H5FDmpio.c
./src/H5FDsec2.c
./src/H5Fistore.c
./src/H5R.c
The file access properties and the file access property list
were decoupled, which allows the property list to more cleanly
contain properties for various levels of the file and which
allows the property list to be modified more cleanly when
opening files.
./src/H5.c
./src/H5FDpublic.h
Removed H5FD_MEM_META and H5FD_MEM_GROUP since they're never
used.
./src/H5D.c
Changed the way we detect the MPIO driver in all these special
cases.
./src/H5F.c
./src/H5Rpublic.h
./test/tfile.c
The default file sizeof(offset) was changed to be a function
of haddr_t instead of hsize_t.
THE H5RPUBLIC.H DEFINITIONS WILL HAVE PROBLEMS IF THE USER
CREATES A FILE WITH NON-DEFAULT OFFSET AND SIZE SIZES!
./src/H5F.c
Fixed an uninitialized memory access bug in file closing
related to the VFL.
./src/H5T.c
./src/H5Tpublic.h
Added an H5T_NATIVE_HADDR predefined datatype which
corresponds to the `haddr_t' type.
./test/Makefile.in
Reformatted long lines.
./test/big.c
./test/cmpd_dset.c
./test/dsets.c
./test/dtypes.c
./test/extend.c
./test/external.c
Removed the H5F_ACC_DEBUG flag from file creation/open calls.
./test/big.c
Plugged a memory leak.
./test/h5test.c
Added support for the `multi' driver.
Removed #warning about not having the stdio driver. Plans are
to not implement it since the sec2 driver serves the same
purpose and testing didn't show any difference in execution
times between the two.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
----------------------
This extensive change is the virtual file layer implementation. I've
ported and tested the sec2, family, and core drivers and only ported
the mpio driver (Albert will test it). So if you need MPIO I would
recommend sticking with the previous version for a while.
You will get a few compile warnings about split and stdio drivers not
being implemented and possibly tracing information not inserted in
some of the drivers. You can safely ignore them but I plan to fix
them.
I'm still working on the split driver because I just realized that it
needs a part of the VFL that isn't written yet.
Documentation is being updated also because there were some minor
changes (mostly just name changes). It should be available on my web
site later this week.
./MANIFEST
./src/Makefile.in
./src/hdf5.h
./src/H5Flow.c [REMOVED]
./src/H5Fstdio.c [REMOVED]
./src/H5Fsec2.c [REMOVED]
./src/H5Fsplit.c [REMOVED]
./src/H5Fmpio.c [REMOVED]
./src/H5Ffamily.c [REMOVED]
./src/H5Fcore.c [REMOVED]
./src/H5MFpublic.h [REMOVED]
./src/H5FD.c [NEW]
./src/H5FDcore.c [NEW]
./src/H5FDcore.h [NEW]
./src/H5FDfamily.c [NEW]
./src/H5FDfamily.h [NEW]
./src/H5FDmpio.c [NEW]
./src/H5FDmpio.h [NEW]
./src/H5FDprivate.h [NEW]
./src/H5FDpublic.h [NEW]
./src/H5FDsec2.c [NEW]
./src/H5FDsec2.h [NEW]
Removed/added files for virtual file layer.
./bin/trace
./src/H5.c
Removed unused public datatypes and added new VFL public
datatypes.
Changed an error message.
./config/BlankForm
./config/dec-flags
./config/gnu-flags
./config/hpux10.20
./config/hpux9.03
./config/irix5.x
./config/irix6.x
./config/solaris2.x
./config/unicosmk
Removed the H5F_OPT_SEEK and H5F_LOW_DFLT constants from the
configuration since they're no longer applicable. The default
file driver is always the sec2 driver and it always optimizes
calls to lseek() or lseek64().
./config/depend.in
C preprocessor errors generated during automatic dependency
building are sent to /dev/null to prevent them from appearing
twice in the make output.
./src/H5AC.c
./src/H5B.c
./src/H5D.c
./src/H5F.c
./src/H5G.c
./src/H5Gent.c
./src/H5Gnode.c
./src/H5HG.c
./src/H5HL.c
./src/H5O.c
./src/H5Oattr.c
./src/H5Odtype.c
./src/H5Oefl.c
./src/H5Oshared.c
./src/H5T.c
./src/H5detect.c
./test/ohdr.c
Changed H5F_ADDR_UNDEF to HADDR_UNDEF to be more consistent
with the `haddr_t' datatype which is now a public type.
./src/H5D.c
./src/H5P.c
./src/H5Ppublic.h
./src/H5Tconv.c
./test/cmpd_dset.c
./test/dsets.c
./test/overhead.c
./test/tselect.c
./test/tvltypes.c
The H5P_DATASET_XFER constant was changed to H5P_DATA_XFER
because the properties apply to all types of I/O operations,
not just datasets.
./src/H5B.c
./src/H5Bprivate.h
./src/H5D.c
./src/H5Dpublic.h
./src/H5F.c
./src/H5Farray.c
./src/H5Fistore.c
./src/H5Fprivate.h
./src/H5Fpublic.h
./src/H5Gnode.c
./src/H5Gpkg.h
./src/H5HG.c
./src/H5HL.c
./src/H5O.c
./src/H5R.c
./src/H5Sall.c
./src/H5Shyper.c
./src/H5Smpio.c
./src/H5Spoint.c
./src/H5Sprivate.h
./test/big.c
./test/h5test.c
./test/istore.c
./testpar/t_dset.c
./testpar/t_file.c
./tools/h5debug.c
./tools/h5ls.c
Modified to work with the virtual file layer by calling H5FD_*
functions instead of H5F_low_* functions and by passing file
access and data transfer properties by object ID instead of
pointer.
Changed H5D_transfer_t to H5FD_mpio_xfer_t since the
COLLECTIVE vs. INDEPENDENT transfer mode is specific to the
MPIO file driver.
Moved MPIO-specific stuff into the MPIO driver.
./src/H5B.c
./src/H5D.c
./src/H5Fprivate.h
The H5F_mpio_* private functions were renamed and placed in
the H5FDmpio driver except those which appeared in H5Smpio.c.
./src/H5E.c
./src/H5Epublic.h
Added major error number H5E_VFL for virtual file layer
related errors.
./src/H5F.c
./src/H5Fprivate.h
Changed the logic that controls whether the boot block is
written. Instead of assuming that the first call to write the
boot block is only to allocate space, I've added a function
argument which makes this explicit.
Changed the way files are compared so that a driver-defined
comparison function can be called. Files which belong to
different drivers are always considered different.
Removed H5F_driver_t since file drivers are now identified by
object ID instead of a special non-user-extendible datatype.
Removed all the hard-coded low-level file properties which
have been replaced by the various file drivers.
./src/H5I.c
./src/H5Iprivate.h
Added the H5I_inc_ref() which was removed a few months ago
since we finally have a use for it.
./src/H5Ipublic.h
Added the H5I_VFL object ID type to identify file drivers in
the virtual file layer.
./src/H5MF.c
./src/H5MFprivate.h
Moved all the allocation/deallocation code into the virtual
file layer which allows file drivers to override much of it.
./src/H5P.c
./src/H5Ppublic.h
Moved file driver-specific code into the various file driver
files.
The H5Pcopy() and H5Pclose() functions make calls into the
virtual file driver to manage the memory for driver-specific
file access and data transfer properties.
./src/H5private.h
./src/H5public.h
The `haddr_t' type is now public.
./test/tfile.c
Added a few more comments.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
----------------------
./src/H5.c [1.3]
./src/H5AC.c [1.3]
./src/H5ACprivate.h [1.3]
./src/H5B.c [1.3]
./src/H5Bprivate.h [1.3]
./src/H5D.c [1.3]
./src/H5F.c [1.3]
./src/H5Farray.c [1.3]
./src/H5Fcore.c [1.3]
./src/H5Ffamily.c [1.3]
./src/H5Fistore.c [1.3]
./src/H5Flow.c [1.3]
./src/H5Fmpio.c [1.3]
./src/H5Fprivate.h [1.3]
./src/H5Fsec2.c [1.3]
./src/H5Fsplit.c [1.3]
./src/H5Fstdio.c [1.3]
./src/H5G.c [1.3]
./src/H5Gent.c [1.3]
./src/H5Gnode.c [1.3]
./src/H5Gprivate.h [1.3]
./src/H5Gstab.c [1.3]
./src/H5HG.c [1.3]
./src/H5HGprivate.h [1.3]
./src/H5HL.c [1.3]
./src/H5HLprivate.h [1.3]
./src/H5MF.c [1.3]
./src/H5MFprivate.h [1.3]
./src/H5O.c [1.3]
./src/H5Oattr.c [1.3]
./src/H5Ocont.c [1.3]
./src/H5Odtype.c [1.3]
./src/H5Oefl.c [1.3]
./src/H5Olayout.c [1.3]
./src/H5Oprivate.h [1.3]
./src/H5Oshared.c [1.3]
./src/H5Ostab.c [1.3]
./src/H5P.c [1.3]
./src/H5R.c [1.3]
./src/H5Smpio.c [1.3]
./src/H5T.c [1.3]
./src/H5Tvlen.c [1.3]
./src/H5private.h [1.3]
./test/dtypes.c [1.3]
./test/gheap.c [1.3]
./test/istore.c [1.3]
./test/lheap.c [1.3]
./test/ohdr.c [1.3]
./tools/h5debug.c [1.3]
File addresses (the `haddr_t' type) are passed by value
instead of by reference. The type is no longer a struct. This
is one of the preliminary changes needed for the Virtual File
Layer stuff.
./src/H5Fprivate.h [1.3]
./src/H5Flow.c [1.3]
Some address functions were rewritten as macros.
|
|
|
|
|
|
|
|
|
|
|
| |
to accept a
location ID (i.e. a file or group ID) as well as the dataset ID. This should
allow Dave to get the palettes stored in the file correctly and also enable
Bob and/or Bruce's indexing stuff. This change should be folded into the
documentation for these three functions for the release.
Also, I fixed a number of bugs in the hyperslab and point selection
iterators for H5Diterate and they are working correctly now.
|
|
|
|
|
|
| |
currently working
is H5Tvlen_create().
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
----------------------
./doc/html/Datatypes.html
./test/dtypes.c
Added documentation and tests for opaque types.
./tools/h5ls.c
Added a `-x' or `--hexdump' argument which is not fully
implemented (because I want to synchronize h5tools.c first)
but which will eventually print raw data in hexadecimal format
without any translation from disk. This would be useful for
debugging references and VL types.
./tools/h5tools.c
Added support for references (not quite finished yet, but
compiles -- I wanted to sync up this file before Patrick and I
got too far apart...)
./src/H5R.c
Checked for error return value from H5R_get_object_type()
./src/H5A.c
./src/H5D.c
Changed error return values from NULL to FAIL
./test/Makefile.in
./test/trefer.c
Creates trefer1.h5 and trefer2.h5 so that the second test
doesn't clobber the first file since the files might be useful
for debugging.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
----------------------
./tools/h5tools.c
./tools/h5tools.h
Finally fixed a long-standing bug that caused core dumps if
a compound datum rendered to more than some number of
characters (we kept bumping up the limit at the risk of
violating stack size limits on some machines). The fix works
only on systems that have the vsnprintf() function (otherwise
a 4kB limit is imposed, which if violated probably dumps
core). If vsnprintf() is present then the library dynamically
allocates space for the output string.
Also made it possible to control how compound data is rendered
across multiple lines of output by allowing the caller to
specify where optional line-breaks get inserted. The output
functions split up the value at one or more optional
line-breaks to prevent it from wrapping around the screen.
If a datum doesn't fit on the current line but would fit on
the next line then it is printed on the next line regardless
of whether optional line-breaks would have prevent wrapping
around the screen. This makes it easier to find the beginnings
of compound data values. This feature is disabled by default
but can be enabled by the application.
If a datum doesn't fit on the current line and the previous
datum also occupied more than one line then we move to the
next line before printing. This makes it easier to find the
beginnings of compound data values but prevents the output
from looking fragmented if there are only a few long values
among mostly short values. This feature is disabled by
default but can be enabled by the application.
The application can control the printf() formats used for all
the native data types. The defaults are what the library used
to use: %g, %ld, %lu, %d, and %u
./tools/h5ls.c
Compound datatype values can now be split across multiple
lines of output instead of just wrapping. Also, when lots of
compound values are too long they all start at the beginning
of a line. This only required about 10 lines of changes in the
setup for tools library calls (I didn't modify the h5dump
program because it uses its own version of the tools library
that forked off long ago).
Added code for Win32 which is unable to cast `unsigned long
long' to `double'. If the dataset size exceeds (2^63)-1 then
the percent utilization is not displayed (this is easily
possible with chunked datasets). This is untested yet.
./configure.in
./src/H5config.h.in
./src/H5.c
./src/H5private.h
Check for vsnprintf() and provide a simple, stupid definition
if it isn't available. The stupid definition just calls
vsprintf() and ignores the second argument. This can result in
buffer overflows in h5ls and h5dump since vsprintf() is an
unsafe function (and anyone can create an hdf5 file that runs
an arbitrary command from h5ls and h5dump in that case)!
./config/conclude.in
Remove more *.o files for `make clean'
./src/H5A.c
./src/H5D.c
./src/H5F.c
./src/H5I.c
./src/H5Iprivate.h
./src/H5P.c
./src/H5R.c
./src/H5RA.c
./src/H5S.c
./src/H5T.c
./src/H5TB.c
Cleaned up a memory leak during H5_term_library() by allowing
H5I_clear_group() to skip items that couldn't be freed. This
allows the item to remain in the group until we can free it
later.
./src/H5F.c
The H5F_close_all() function fails if a file cannot be closed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
----------------------
./config/commence.in
./examples/Makefile.in
./test/Makefile.in
./testpar/Makefile.in
./tools/Makefile.in
Fixed some dependency problems in Makefiles. If the library
version is updated then everything gets recompiled.
./src/H5G.c
./src/H5R.c
Failure return value for object type functions is now
H5G_UNKNOWN as documented.
./src/H5Shyper.c
./src/H5Spoint.c
Fixed an unused argument warning.
./tools/h5debug.c
Fixed a call to H5F_block_read() since the 4th argument is
different now.
./tools/h5ls.c
Added a space between the object name and class to make the
output readable when the object name is longer than 24
characters.
C
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
----------------------
./config/commence.in
./config/conclude.in
./test/Makefile.in
./tools/Makefile.in
Fixed so private libraries are not installed publicly.
The installation directories `bin', `include', and `lib' are
created mode 755.
./src/H5.c
./src/H5A.c
./src/H5F.c
./src/H5Fcore.c
./src/H5Fistore.c
./src/H5Flow.c
./src/H5Fmpio.c
./src/H5Fsec2.c
./src/H5Fstdio.c
./src/H5G.c
./src/H5Gent.c
./src/H5Gnode.c
./src/H5HG.c
./src/H5HL.c
./src/H5O.c
./src/H5Oattr.c
./src/H5Ocomp.c
./src/H5Ocont.c
./src/H5Odtype.c
./src/H5Oefl.c
./src/H5Ofill.c
./src/H5Olayout.c
./src/H5Omtime.c
./src/H5Oname.c
./src/H5Osdspace.c
./src/H5Oshared.c
./src/H5Ostab.c
./src/H5R.c
./src/H5Sall.c
./src/H5Shyper.c
./src/H5Smpio.c
./src/H5Snone.c
./src/H5Spoint.c
./src/H5T.c
./src/H5Tconv.c
./src/H5Vprivate.h
./src/H5Z.c
./src/H5detect.c
./src/H5private.h
./test/chunk.c
./test/dsets.c
./test/dtypes.c
./test/h5test.c
./test/overhead.c
./test/ragged.c
./test/tattr.c
./tools/h5dump.c
./tools/h5findshd.c
./tools/h5ls.c
Changed `__unused__' to `UNUSED' to fix a conflict with GNU
header files.
./src/H5Tpkg.h
./test/h5test.h
Removed __unused__ from forward function declarations.
./src/H5P.c
Removed a comment about restrictions for the type conversion
temporary buffers. Thanks to Quincey, the comment no longer
applied.
./src/H5T.c
Relaxed the H5Tpack() a little so it would pack compound data
structures that had non-transient atomic members.
./tools/h5ls.c
Added a `-g' (or `--group') flag that causes information to be
printed about the specified group instead of the group's
contents. (sort of like Unix's `ls -d'). The `-g' can be used
in combination with `-r' to print information about the group
and its contents.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
./configure [REGENERATED]
./src/H5D.c
./src/H5O.c
Removed H5AC, H5B, and H5T from the default list of packages
to debug (because they're pretty expensive debugging), and
added H5O. Also fixed a bug for undefined variable in H5D when
H5S debugging is turned on but H5T debugging is turned off.
./config/conclude.in
Fixed installation of header files for building in a directory
other than the source directory. This fixes a bug where
H5config.h wasn't being installed.
./src/H5.c
./src/H5A.c
./src/H5D.c
./src/H5F.c
./src/H5G.c
./src/H5I.c
./src/H5Iprivate.h
./src/H5P.c
./src/H5R.c
./src/H5RA.c
./src/H5S.c
./src/H5T.c
./src/H5TB.c
./src/H5Tprivate.h
./src/H5Z.c
./src/H5detect.c
./src/H5private.h
Changed the way the library shuts down again. Now it handles
cycles between packages and isn't so sensitive to dependencies
between packages. A package might shut down only to be
restarted to process a request from some other package being
shut down. Loops are detected after 100 iteractions and the
shutdown is aborted with a message on standard error. This
also makes it a lot easier to debug.
./src/H5A.c
Fixed H5A_write() and H5A_read() so they pass a non-null
background buffer to the conversion functions. This is
necessary when an attribute has a compound data type.
./src/H5Flow.c
./src/H5Fprivate.h
./src/H5Fsec2.c
Reindented new Win32 stuff.
./src/H5Odtype.c
Fixed a bug when enumeration types are used in a compound data
type. The byte pointer wasn't incremented after the type
information was written.
./tools/h5ls.c
Compound data types display their total size because it's not
always obvious from looking at the members.
Scalar attributes show their space as `scalar' instead of
`{}'.
The index value is not printed for attributes that have only a
few values. Instead the word `Data:' is printed on the first
line of attribute data.
Named types display their data type only if verbose output was
requested.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
----------------------
./Makefile.in
./configure.in
./configure [REGENERATED]
./src/H5config.h.in [REGENERATED]
./config/commence.in
./config/conclude.in
./config/dec-osf4.x
./config/depend.in
./config/freebsd
./config/linux-gnu
./config/linux-gnulibc1
./config/linux-gnulibc2
./config/solaris2.x
./examples/Makefile.in
./src/Makefile.in
./test/Makefile.in
./testpar/Makefile.in
./tools/Makefile.in
./tools/testh5dump.sh
Changes that allow hdf5 to be configured and compiled in a
directory other than the source directory. This is especially
useful if you want to concurrently compile with different
compilers and/or compile flags, or if the hdf5 source is on
read-only media like a CDROM. The changes were surprisingly
easy ;-) Here's what you can do now...
$ mkdir /tmp/build1 # or something
$ cd /tmp/build1
$ /cdrom/hdf5/configure # where ever the source is
$ make
Paul, you'll have to change the testh5toh4 script similar to
the way I changed testh5dump.sh. I started working on it but
then gave up because of a number of problems: (1) I had to
comment out all the tests that let h5toh4 choose the output
file name because it always tried to put the output file in
the same directory as the input file, (2) if path names are
used during the h4 dump then they interfere with the
diff. The test works fine when run in the source directory,
but try this instead:
$ gunzip <hdf5-1.1.67.tar.gz |tar xf -
$ chmod -R ugo-w hdf5-1.1.67
$ mkdir build
$ cd build
$ ../hdf5-1.1.67/configure
$ make check
Dan, I didn't modify the pablo/Makefile.in because I have no
way to test it. I think all you need to do is add a couple
lines before the @COMMENCE@ line and add a couple search
directories for header files. Anyway, it seems like almost an
exact duplicate of the src/Makefile.in, so it shouldn't be a
problem...
./Makefile.in
Removes a few more temporary files during make clean and
distclean.
./configure.in
I fixed the creation of the time-stamp files so that the
initial make doesn't have to regenerated all the makefiles
(only GNU make users will see any change).
./src/H5R.c
Changed a return type from `intn' to `int' for an API
function.
./src/H5detect.c
Added the volatile qualifier to a couple more variables.
./tools/h5tools.c
Fixed a compiler warning about an unused local.
./tools/h5toh4.c
Initialized `optind' to 1 because it's zero on my system. It
should always be one on a unix system.
./tools/testh5toh4
Redirected "broken pipe" messages to /dev/null so outut is
formatted correctly.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
portion of
the block/point-list to be read at a time.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
correctly. Also, there
are five new API functions for querying selections:
H5Sget_select_hyper_nblocks - retrieves the number of hyperslab blocks
in current hyperslab selection for a
dataspace
H5Sget_select_elem_npoints - retrieves the number of element points
in current element selection for a
dataspace
H5Sget_select_hyper_blocklist - retrieves a list of the hyperslab blocks
in current hyperslab selection for a
dataspace
H5Sget_select_elem_pointlist - retrieves a list of the element points
in current element selection for a
dataspace
H5Sget_select_bounds - retrieves a n-dimensional bounding box
containing current selection.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
----------------------
./config/irix64
The old (-32) compiler is now supported by setting envrionment
CC='cc -32'. The -64 compiler is the default or you can set
CC='cc -64'.
./src/H5A.c
./src/H5D.c
./src/H5F.c
./src/H5Fistore.c
./src/H5Flow.c
./src/H5G.c
./src/H5I.c
./src/H5Ocomp.c
./src/H5P.c
./src/H5R.c
./src/H5RA.c
./src/H5T.c
./src/H5Tbit.c
./src/H5Tconv.c
./src/H5Z.c
./src/H5detect.c
./test/big.c
./test/cmpd_dset.c
./test/dsets.c
./test/dtypes.c
./test/enum.c
./test/mtime.c
./test/ohdr.c
./tools/h5ls.c
Fixed lots of warnings on Irix64. Mailed a few remaining
warnings in H5S to Quincey and a few in the dumper to
Ruey-Hsia.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
----------------------
./src/H5F.c
./src/H5private.h
./src/H5Ipublic.h
./src/H5O.c
Fixed a rather nasty bug with file closing that caused the
file boot block to be updated incorrectly, effectively
truncating the file. The bug I fixed was triggered by:
1. Create a file, F
2. Open an object, X
3. Close file F
4. Reopen file F for read/write.
5. Create and close some objects
6. Close file F
7. Close library (exit).
Step 3 pended the close because object X is still open, but
the file ID was removed from the H5I_FILE ID group. Step 4
created a new file because it didn't see any matching file on
the H5I_FILE ID group. Step 5 extends the file. Step 6 writes
the new file boot block to disk. Step 7 closes object X and
completes the close from step 3, writing the old boot block
information to disk.
The new behavior is that step 3 moves the file from the
H5I_FILE group to the H5I_FILE_CLOSING group. Step 4 searches
both groups and finds the file. Step 5 extends the file using
the same H5F_file_t struct as step 3. Step 6 closes the H5F_t
struct opened in step 3 but not the H5F_file_t struct shared
by steps 1 and 3. Step 7 closes object X which closes the
H5F_file_t from step 1, flushing the boot block which was
shared by all steps.
./src/H5F.c
Added some bulletproofing to file reference counting and
removed comments which no longer apply. Added H5F_flush_all()
and H5F_close_all() which apply to all files.
./src/H5A.c
./src/H5D.c
./src/H5F.c
./src/H5G.c
./src/H5I.c
./src/H5Iprivate.h
./src/H5R.c
./src/H5RA.c
./src/H5S.c
./src/H5T.c
Added the new H5I_free_t data type to describe the function
type to be passed as the `free_func' argument to
H5I_init_group().
./src/H5I.c
Bulletproofed the object removal functions. Removed comments
which no longer apply. Changed global variable names so they
don't violate the naming scheme. Added H5I_debug() that prints
the contents of an ID group. Removed H5I_inc_ref() because it
isn't used. Reindented a couple of functions.
./src/H5.c
./src/H5G.c
./src/H5Ipublic.h
Changed H5I_MAXID to H5I_NGROUPS to better relect the fact
that it's the total number of valid ID groups.
./src/H5Shyper.c
Changed hyperslab offset arrays to signed quantities to get
rid of warnings on DEC cluster.
./src/H5Flow.c
./src/H5Fprivate.h
Changed the objno argument of H5F_addr_pack() to be unsigned
to get rid of warnings on DEC cluster.
|
| |
|
|
|
|
|
|
| |
for these
need to be finished and checked in still.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
----------------------
./src/H5.c
./src/H5A.c
./src/H5AC.c
./src/H5B.c
./src/H5D.c
./src/H5E.c
./src/H5F.c
./src/H5Farray.c
./src/H5Fcore.c
./src/H5Ffamily.c
./src/H5Fistore.c
./src/H5Flow.c
./src/H5Fmpio.c
./src/H5Fsec2.c
./src/H5Fsplit.c
./src/H5Fstdio.c
./src/H5G.c
./src/H5Gent.c
./src/H5Gnode.c
./src/H5Gstab.c
./src/H5HG.c
./src/H5HL.c
./src/H5I.c
./src/H5Iprivate.h
./src/H5MF.c
./src/H5MM.c
./src/H5O.c
./src/H5Oattr.c
./src/H5Ocomp.c
./src/H5Ocont.c
./src/H5Odtype.c
./src/H5Oefl.c
./src/H5Ofill.c
./src/H5Olayout.c
./src/H5Omtime.c
./src/H5Oname.c
./src/H5Osdspace.c
./src/H5Oshared.c
./src/H5Ostab.c
./src/H5P.c
./src/H5R.c
./src/H5RA.c
./src/H5S.c
./src/H5Sall.c
./src/H5Shyper.c
./src/H5Smpio.c
./src/H5Snone.c
./src/H5Spoint.c
./src/H5Sselect.c
./src/H5T.c
./src/H5TB.c
./src/H5Tbit.c
./src/H5Tconv.c
./src/H5V.c
./src/H5Z.c
./src/H5detect.c
./src/H5private.h
Most of these changes are because the `interface_initialize_g'
variable change from hbool_t to int. It's a one line change.
Changed the way the library is closed so we have more control
over the order the interfaces are shut down. Instead of
registering an atexit() function for every interface in some
haphazard order we just register one: H5_term_library() which
then calls the H5*_term_interface() functions in a
well-defined order.
If the library is closed and then reopened repeatedly by
calling H5close() and H5open() in a loop we only add one copy
of the library termination functions with atexit().
Termination is a two-step process in order to help detect
programming errors that would cause an infinite loop caused by
the termination of one interface waking up some other
previously terminated interface. The first step terminates
the interface and *marks it as unusable*. After all
interfaces are terminated then we mark them all as usable
again. The FUNC_ENTER() macro has been modified to return
failure or to dump core (depending on whether NDEBUG is
defined) if we try to call an interface while it's shutting
down.
./src/H5.c
The H5dont_atexit() function returns failure if it's called
more than once or if it's called too late. However, the error
stack is not automatically printed on failure because the
library might not be initialized yet
./test/chunk.c
./test/flush1.c
./test/flush2.c
./test/iopipe.c
./test/overhead.c
./test/ragged.c
Changed the extra cast for Win32 so we do floating point
division again -- it was just confusion about precedence and
associativity of casting and the C coercion rules. Removed
extra carriage returns inserted by broken operating system.
./src/H5Ffamily.c
Fixed an bug where H5F_fam_write() lowered the EOF marker for
one of the family members causing H5F_fam_read() to read
zeros.
./test/h5test.h [NEW]
./test/h5test.c [NEW]
./test/Makefile.in
./test/bittests.c
./test/cmpd_dset.c
./test/dsets.c
./test/dtypes.c
./test/extend.c
./test/external.c
Support library for test files. This isn't done yet but
Katie's contractions are ~10 minutes apart so I figured I
better back this stuff up just in case I'm not here next
week...
Eventually all test files will understand HDF5_DRIVER to name
the low level file driver and parameters so we can easily test
various drivers. They will also understand HDF5_PREFIX to
prepend to the beginning of file names which is necessary for
testing ROMIO with various drivers. Also, the cleanup function
will know how to use the file name prefix and will understand
different file driver naming schemes like file families. I'm
not sure they'll understand the `gsf:' type prefixes yet.
Note, the external test is completely commented out because
I'm in the middle of modifying it. It will still compile and
run but it doesn't test anything at the moment.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
----------------------
./INSTALL.parallel [NEW]
We're beginning to unify some of the parallel installation
steps. This file will contain general information for
installing the parallel library. It's not complete yet.
./configure.in
./configure [REGENERATED]
./src/H5config.h.in [REGENERATED]
Check for xdr_int() in libnsl required on Solaris when linking
with hdf4. It's found on the Irix system I tested which
complains that `-lnsl' didn't resolve any symbols. Oh well.
Fixed the order of searching for libdf and libmfhdf for hdf4
linking.
./configure.in
./configure [REGENERATED]
./src/H5config.h.in [REGENERATED]
./src/H5Z.c
Check for compress() in libz in order to find older versions
of the library that will still work for hdf4. Added a
separate check for compress2() that hdf5 will use.
./configure.in
./configure [REGENERATED]
./src/H5config.h.in [REGENERATED]
./src/H5.c
./src/H5private.h
./src/H5A.c
./src/H5B.c
./src/H5Bprivate.h
./src/H5D.c
./src/H5F.c
./src/H5Farray.c
./src/H5Fcore.c
./src/H5Ffamily.c
./src/H5Fistore.c
./src/H5Flow.c
./src/H5Fmpio.c
./src/H5Fprivate.h
./src/H5Fsec2.c
./src/H5Fsplit.c
./src/H5Fstdio.c
./src/H5Gent.c
./src/H5Gnode.c
./src/H5Gpkg.h
./src/H5Gprivate.h
./src/H5HG.c
./src/H5HL.c
./src/H5O.c
./src/H5Oattr.c
./src/H5Ocomp.c
./src/H5Ocont.c
./src/H5Odtype.c
./src/H5Oefl.c
./src/H5Ofill.c
./src/H5Olayout.c
./src/H5Omtime.c
./src/H5Oname.c
./src/H5Oprivate.h
./src/H5Osdspace.c
./src/H5Oshared.c
./src/H5Ostab.c
./src/H5R.c
./src/H5RA.c
./src/H5Sall.c
./src/H5Shyper.c
./src/H5Snone.c
./src/H5Spoint.c
./src/H5Sprivate.h
./src/H5Sselect.c
./src/H5T.c
./src/H5Tbit.c
./src/H5Tconv.c
./src/H5Tpkg.h
./src/H5V.c
./test/bittests.c
./test/gheap.c
./test/hyperslab.c
./test/istore.c
./test/tmeta.c
./test/trefer.c
./test/tselect.c
./tools/h5debug.c
./tools/h5tols.c
Added checks for Posix.1g types like `int8_t'. If not defined
then H5private.h defines them. Changed all `int8' etc. to
`int8_t'.
./src/H5A.c
./src/H5D.c
./src/H5F.c
./src/H5G.c
./src/H5I.c
./src/H5P.c
./src/H5R.c
./src/H5RA.c
./src/H5S.c
./src/H5T.c
./src/H5TB.c
./src/H5Z.c
Calling H5*_term_interface() resets interface_initialize_g to
FALSE so a subsequent call to H5open() (implied or explicit)
reinitializes global variables properly.
./src/H5private.h
./src/H5Oefl.c
./src/H5S.c
Changed MAX_SIZET, MAX_SSIZET, MAX_HSIZET, and MAX_HSSIZET to
SIZET_MAX, SSIZET_MAX, HSIZET_MAX, and HSSIZE_MAX to they
match the Posix.1 constants in <limits.h>.
./src/H5T.c
./src/H5Tconv.c
./src/H5Tpkg.h
./src/H5Tprivate.h
./src/H5detect.c
Added 36 more integer hardware conversion functions to the
type conversion table for conversions to/from `long long' and
`unsigned long long'. The `long long' names will be changed
shortly to make them portable to Win32.
Changed H5T_init() to H5T_native_open() and added an
H5T_native_close() to open and close the predefined native
data types.
Increased the initial size of the type conversion table from
64 to 128 entries.
Reordered the 90 new integer conversion functions so the names
that are printed favor `int' over `short' or `long' when two
of them are the same.
./test/dtypes.c
Added hardware and software integer conversion tests for the
56 functions I added recently but not the additional 36
checked in this time. That will come next.
Call H5close() after each test so type conversion statistics
are easier to follow. Try this: $ HDF5_DEBUG=t ./dtypes
Added more debugging output for when things go wrong.
./src/H5private.h
Removed trailing carriage-returns inserted by broken operating
system ;-)
|
|
|
|
|
|
|
| |
Plugged a memory leak in the union of hyperslabs code.
Checkpointing dataset region references, which are working, but not stored in
file yet.
|
| |
|
|
|
|
|
|
| |
"non-negative/negative"
and also fixed a few more explicit checks against FAIL.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
----------------------
./MANIFEST
./test/th5s.h5 [NEW]
./test/th5s.c
Added a test to make sure that creating a data space with too
large a rank fails.
Added a test to make sure that reading a file that has a
dataset with a space with too large a rank fails. Actually,
this one is a little weird: the code that reads the data space
message assumes the space is scalar if the message cannot be
read. Fortunately the layout message fails also, preventing
the dataset from being opened. However, since the data type
message is still visible h5ls will report that the object is a
named data type.
./test/space_overflow.c [NEW]
This is the little program that makes the th5s.h5 file.
./src/H5A.c
./src/H5R.c
./src/H5Sselect.c
Updated trace info.
./src/H5Olayout.c
./src/H5Osdspace.c
Added code to fail if the dimensionality is too large when
decoding a layout or simple data space message.
./src/H5Oprivate.h
Redefined H5O_LAYOUT_NDIMS in terms of H5S_MAX_RANK.
./src/H5P.c
./src/H5S.c
Check for ndims>H5S_MAX_RANK in API function calls, added
assert to internal functions.
./src/H5V.c
Changed a `<' to an `<=' in an assert.
./test/flush2.c
Includes stdlib.h for getenv().
./tools/h5tools.c
Able to handle up to H5S_MAX_RANK dimensions during output.
|
| |
|
|
|
|
| |
pointers to references
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
----------------------
./MANIFEST
./test/Makefile.in
./test/flush1.c [NEW]
./test/flush2.c [NEW]
Test to see if calling H5Fflush() results in a consistent
file.
./src/H5.c
./src/H5A.c
./src/H5D.c
./src/H5Fistore.c
./src/H5I.c
./src/H5S.c
./src/H5Shyper.c
./src/H5Sselect.c
./src/H5TB.c
Changed comparisons against SUCCEED and FAIL to >=0 and <0 in
about 15 places.
./src/H5.c
./src/H5V.c
./src/H5detect.c
./src/H5private.h
./src/H5public.h
./test/big.c
./test/chunk.c
./test/cmpd_dset.c
./test/dsets.c
./test/dtypes.c
./test/external.c
./test/fillval.c
./test/iopipe.c
./test/links.c
./test/mount.c
./test/mtime.c
./test/ragged.c
./test/shtype.c
./test/unlink.c
Removed ^M from the end of lines inserted on broken OS's ;-)
./src/H5private.h
Changed c++ comments to c comments.
./src/H5R.c
Added tracing macros.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
----------------------
./src/H5.c
Fixed a signed vs. unsigned comparison.
./src/H5D.c
Setting a fill value of all zeros will cause the fill value to
be written to the dataset instead of relying on the low-level
file driver initializing unwritten areas with zero.
./src/H5D.c
./src/H5F.c
./src/H5Fprivate.h
./src/H5G.c
./src/H5Gpkg.h
./src/H5Gprivate.h
./src/H5O.c
./src/H5T.c
More file mounting stuff.
./src/H5I.c
Fixed a bug where trying to close an invalid object id caused
a core dump. For instance, H5Gclose(-1).
./MANIFEST
./test/Makefile.in
./test/mount.c [NEW]
Mounting tests.
./src/H5R.c
Fixed a couple (herr_t)NULL casts.
|
| |
|
|
|
|
|
|
| |
call. Also
checked in H5R skeleton files.
|
|
|
|
| |
reference API.
|
|
|
|
|
|
| |
align with the
library.
|
|
|
|
|
|
| |
H5Gget_objinfo
and renamed internal functions to match up with the renamed API functions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
----------------------
./RELEASE
Updated with important changes I made since the second beta.
./src/H5A.c
./src/H5D.c
./src/H5Dprivate.h
./src/H5G.c
./src/H5Gprivate.h
./src/H5R.c
./src/H5Rprivate.h
./src/H5T.c
./src/H5Tprivate.h
Any API function that used to take an `hid_t loc_id' followed
by a `const char *name' can now take any type of object for
the loc_id as long as the object is somehow associated with a
file. Internally, H5G_loc() was modified to return an
H5G_entry_t* instead of an H5G_t* so it's more general.
Among other things, this allows one to retrieve information
about an object like a named type or dataset without knowing
the name of the type or dataset:
int
get_nlinks (hid_t obj)
{
H5G_stat_t sb;
if (H5Gstat(obj, ".", TRUE, &sb)<0) return -1;
return sb.nlink;
}
./test/gheap.c
./test/istore.c
These files needed a couple of changes because they call some
of the internal functions whose H5G_t arguments changed to
H5G_entry_t.
./src/H5A.c
Got rid of all the switch statements for getting symbol table
entries for varous objects and replaced them with a call to
H5G_loc() allowing attributes to automatically apply to any
type of object that belongs to a file.
./test/Makefile.in
Moved the ragged array tests from the normal list of tests to
the `make timings' target.
./test/ragged.c
Added rewrite tests -- rewrite the rows of a dataset changing
the number of rows and the length of each row.
./test/mtime.c
Added a test that checks that H5Gstat() can be called with a
dataset as the first argument.
./src/H5S.c
Added #ifdef HAVE_PARALLEL around code to check for the
HDF5_MPI_OPT_TYPES environment variable because the global
variable that gets set is #ifdef'd.
./bin/release
bzip2 uses .bz2 as the file extension.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
----------------------
./src/H5G.c
Fixed a link count on groups. Groups were always created with
a link count of zero instead of one.
./src/H5Gpublic.h
Added H5G_NTYPES so applications can easily declare arrays
which are indexed by object type.
./src/H5O.c
Calling `H5O_link(&ent,0)' will succeed when the file is open
for read only because it's the only way to get the object's
current link count.
./tools/h5ls.c
Can take non-group object names on the command line (and
multiple objects). Reorganized to be more extendible. The
link count is displayed for `-v'.
./src/H5F.c
Dumping of cache statistics is controlled by only the
HDF5_DEBUG environment variable and not the H5F_ACC_DEBUG flag
for H5Fopen() and H5Fcreate() since this makes it similar to
the other debugging options.
./src/H5R.c
./test/ragged.c
./test/Makefile.in
Tests pass but still a little work left to be done.
|
|
----------------------
./MANIFEST
./src/H5R.c [NEW]
./src/H5Rprivate.h [NEW]
./src/H5Rpublic.h [NEW]
./src/Makefile.in
./src/hdf5.h
./test/ragged.c [NEW]
Preliminary support for 2d ragged arrays for Mark Miller and
Jim Reus. Not fully implemented yet. The test is not actually
part of `make test' because we still have some memory problems.
./src/H5E.c
./src/H5Epublic.h
Added H5E_RAGGED as a major error number.
./bin/release
Checks the MANIFEST file against `svf ls' on systems that have
it.
./bin/trace
Fixed a bug that caused arguments of type `void *x[]' to not
be handled.
./src/H5.c
Removed unused variables and changed a couple types to
fix compiler warnings.
Added tracing support for ragged array object ID's and arrays
of pointers.
./src/H5D.c
H5Dcreate() will complain if either of the property lists are
invalid (instead of using the default).
./src/H5D.c
./src/H5Dprivate.h
Split H5Dget_space() into an API and internal function so it
can be called from the new ragged array layer.
./src/H5Fistore.c
Fixed warnings about unsigned vs. signed comparisons.
./src/H5Flow.c
Fixed a warning about a variable being shadowed in the MPI-IO
stuff.
./src/H5Iprivate.h
./src/H5Ipublic.h
Added the H5_RAGGED atom group.
./src/H5Shyper.c
Fixed some freeing-free-memory errors that resulted when
certain arrays were freed but the pointers were left in the
data structures. I simply set the pointers to null after they
were freed.
./src/H5Sprivate.h
./src/H5Sselect.c
Split the H5Sselect_hyperslab() function into an API and a
private function so it could be called from the ragged array
layer.
Added H5S_SEL_ERROR and H5S_SEL_N to the switch statements to
get rid or compiler warnings.
./src/H5Tconv.c
Removed a misleading comment.
./test/bittests.c
Fixed a warning about a printf().
./test/cmpd_dset.c
Fixed warnings about unused variables because of test #11
being commented out.
./bin/trace
Shortened the right margin for the output to allow room for
the `);' at the end of the TRACE() macros.
|