Problem:
Step 8 failed because H5Pcreate_simple expects size_t dimension
array but the code used an int array. (In IRIX64 -64 mode, size_t
is a 64bit unsigned long but ints are only 32 bits long.) casting
it to size_t* just avoided warning message but did not change the
data type.
Solution:
Throw in a kludge by using a temporary dimension array of size_t.
Can't change the type of h_size since it is also used for the hyperslab
routine which expects an int dimension array. The Hyperslab routine
will be changed. Put in a patch for now.
----------------------
./INSTALL
./INSTALL_MAINT
./README
Updated installation instructions for hdf-5.0.0a.
./RELEASE
Updated release notes. Needs more work.
./bin/release
The tarballs include the name of the root directory like
hdf-5.0.0a so it doesn't have to be explicitly created when
the files are extracted.
----------------------
./config/freebds2.2.1
./config/irix64
./config/linux
Added -DH5T_DEBUG to the debugging flags. Also changed `true'
to `:' for the Irix64 ranlib program. This turns on printing
of data type conversion statistics when the program exits.
./html/Datatypes.html
Fixed documentation for data conversion functions and updated
examples.
./src/H5D.c
The I/O pipeline updates data type conversion statistics.
./src/H5T.c
./src/H5Tconv.c
./src/H5Tpkg.h
./src/H5Tpublic.h
Cleaned up data type conversion registration interface.
----------------------
./MANIFEST
Added new files.
./bin/Makefile.dist [NEW]
This file becomes the default top-level Makefile which invokes
configure with no arguments and then re-runs make. It's for
those people that don't read the INSTALL file.
./bin/release [NEW]
Build HDF release tarballs. Arguments are a list of tarball
types and are: tar, compress, gzip, or bzip2. The default is
gzip. If the only argument is `all' then all types of tarballs
are created. The results are put in the `releases' directory.
Make sure you keep MANIFEST up to date. This program requires
perl-5.003 or better.
./src/H5AC.c
Fixed a printf format.
----------------------
./src/H5P.c
Removed H5Pcreate()
./src/H5Psimp.c
Copy int[] return value from H5P_get_hyperslab() to size_t[]
argument to pass to other hyperslab functions.
./test/dsets.c
Added a call to H5Eprint() to help track down Alberts O2k bug.
----------------------
./MANIFEST
Added new config files.
./src/H5private.h
Changed FUNC_ENTER() so it calls H5Eclear() for all API
functions but not for any private functions. It also prints
the names of all API functions on file 55 (just for the
prototype) so we can get a list of API functions called with
the Bourne shell commands like:
./testhdf5 55>api_list or
./testhdf5 55>&1 1>/dev/null 2>&1 | less
Otherwise the names are silently discarded.
./src/H5.c
./src/H5C.c
./src/H5D.c
./src/H5F.c
./src/H5G.c
./src/H5M.c
./src/H5P.c
./src/H5T.c
Removed `H5ECLEAR' from lots of places in the source code.
./src/H5E.c
./src/H5Eprivate.h
Recursion is a problem here, so to disable a call to
H5Eclear() from FUNC_ENTER just define a local variable like
this before you call FUNC_ENTER:
const H5E_clearable_g = FALSE;
Unfortunately this results in a warning: declaration of
`H5E_clearable_g' shadows global declaration. Good thing it's
only used in two places.
Changed interface to the H5P..hyperslab functions to 'int' instead of 'size_t'.
Cleaned up lots of warnings on IRIX 6.2 platform. Minor other tweaks to get
to a mostly clean build on the SGI. It still whines about 'long long' being
non-standard and some "pointless comparison of unsigned with 0" but those
aren't big problems.
----------------------
./config/conclude.in
The maintainer-clean target removes Emacs backup files,
mirroring backup and contrib files, core files, and profile
output files in addition to what it used to remove.
./src/H5D.c
Fixed a buffer allocation bug in the output pipeline.
./src/H5Gnode.c
Fixed a comparison against size_t
./test/Makefile.in
Added the other temporary h5 files to the `MOSTLYCLEAN' var.
./test/cmpd_dset.c
Added four tests for partial I/O. Don't you just love it when
something works on the first try!
----------------------
./src/H5D.c
./src/H5Dpublic.c
Added H5Dget_space().
./src/H5Gstab.c
./src/H5H.c
Fixed a comparison with size_t against <0.
./src/H5P.c
./src/H5Pprivate.h
./src/H5Ppublic.h
Changed `intn' to `int' for public function args and
returns. H5Pget_hyperslab() returns the dimensionality.
./test/testhdf5.h
Clears error stack more frequently.
./src/H5Psimp.c
./test/cmpd_dset.c
Impelementing data space conversion.
Problem: Some *.h5 files are left behind after tests.
Solution: Added the MOSTLYCLEAN line for those few .h5 to be removed
if "make clean" is called. Did not use "*.h5" because of concern that
it may blow away legitimate .h5 files. Though it is possible to put
legitimate .h5 in a subdirectory, it is better to play it safe this
way.
----------------------
./Makefile.in
./config/commence.in
With GNU make you can now use `-j' and `-l' options and things
get built correctly. I can do a `make -j -l6 test' from a
clean hdf5 source tree (after configure) in 45 seconds (8 to
build dependencies, 26 to compile everything, and 11 to run
the tests).
./src/H5Gnode.c
Removed a comment that no longer applies.
./src/H5P.c
./src/H5Pprivate.h
./src/H5Ppublic.h
Changed H5Pselect_hyperslab() to H5Pset_hyperslab() and added
H5Pget_hyperslab() and H5P_get_hyperslab().
Replaced a couple short memset() calls with a for loop.
Removed `if (foo!=NULL)' from around H5MM_xfree() calls.
Clear hslab_def when the hyperslab disappears.
./src/H5Tpublic.h
Removed trailing enum comma.
to the HDF4 SDwritedata routine: start, count & stride. The start indicates
the base location of the hyperslab, count indicates the number of elements in
the hyperslab and stride indicates the packing of the hyperslab. The hyperslab
is assumed to be the same rank as the dataspace it is located within. The
hyperslab is stored for future use, no I/O occurs in this routine.
----------------------
./MANIFEST
Added new files.
./config/linux
Added `-pipe' to the default GCC flags since this is supposed
to result in better performance on a multi-processor machine.
./html/Datasets.html
./html/dataset_p1.gif [NEW]
./html/dataset_p1.obj [NEW]
Updated to match source. The things which aren't part of the
Feb-1 prototype are marked in bold. Added an example for
partial I/O.
./html/Groups.html [NEW]
./html/group_p1.gif [NEW]
./html/group_p1.obj [NEW]
./html/group_p2.gif [NEW]
./html/group_p2.obj [NEW]
./html/group_p3.gif [NEW]
./html/group_p3.obj [NEW]
New documentation for groups.
./html/H5.sample_code.html
Updated two examples to match code.
----------------------
./src/H5D.c
./src/H5T.c
./src/H5Tconv.c
./src/H5Tpkg.h
./src/H5Tprivate.h
./src/H5Tpublic.h
./test/cmpd_dset.c
Added support to turn background buffer on/off to help speed
up conversions. Currently, every type of conversion turns it
off except compound-->compound conversions which always turn
it on. In the future the compound-->compound conversions
might be more frugal.
----------------------
./MANIFEST
Added new files.
./src/H5D.c
Added support for partial datatype I/O which is needed when
merging struct members between file and disk. This isn't the
efficient version because the merge requires an extra gather
(step 1b in my pipeline diagram) that isn't turned off when it
isn't needed.
./src/H5T.c
./src/H5Tpkg.h
./src/H5Tprivate.h
./src/H5Tpublic.h
Conversion functions take an extra argument which is a pointer
to a blob of private data that can be used by the conversion
function to save anything that's expensive to compute and
is constant for a particular conversion path.
./src/H5Tconv.c
Compound data type conversion is beginning to work! We can
handle conversions between compound types that have members
which are not arrays. It also supports partial conversion so
we can omit certain members of the source and not clobber
extra members in the destination.
./test/Makefile.in
./test/cmpd_dset.c [NEW]
Added a test case that demonstrates how to use compound data
types in a dataset. The output doesn't match the output of
the other test cases yet, the the entire example is more
readable and written entirely with the API.
----------------------
./src/H5.c
./src/H5B.c
./src/H5Bprivate.h
Changed `new' to something else in 6 places for Fabio.
./src/H5T.c
./src/H5Tconv.c
Beginning to work on compound data type conversion. Don't look
yet :-)
----------------------
./src/*.h
Fixed indentation where indent(1) screwed up. This isn't by
any means the final say, but it's better than it was.
./src/H5A.c
./src/H5Aprivate.h
./src/H5Apublic.h
./src/H5C.c
./src/H5D.c
./src/H5E.c
./src/H5F.c
./src/H5G.c
./src/H5M.c
./src/H5P.c
./src/H5T.c
./src/H5Tconv.c
./src/debug.c
./test/dtypes.c
./test/istore.c
./test/theap.c
./test/tohdr.c
./test/tstab.c
Removed some atom functions from the API and made them
library-scope. Also changed some names by removing the
redundant `atom' from the name and by adding a `_' after the
`H5A'.
----------------------
./Makefile.in
Added more dependencies to .PHONY.
./src/H5D.c
The write side of the I/O pipeline is implemented now too.
Things are looking good for the prototype and it's just a
matter of populating the library with the data type and data
space conversion functions.
./src/H5Farray.c
./src/H5Fprivate.h
./test/istore.c
Changed the order of the arguments for H5F_arr_read() and
H5F_arr_write().
./src/H5P.c
./src/H5Pprivate.h
Changed the names of the arguments of H5P_find(). Fleshed out
the mgath and fscat callback types.
./src/H5Psimp.c
Added stubs for H5P_simp_mgath() and H5P_simp_fscat() that
operate on the entire data space. Quincey, once you have the
data space hyperslab stuff in place let me know and I'll
finish the H5P_simp_*() functions to do partial I/O. Or you
can take a look at it too if you like; there's some comments
in there for you.
./src/H5V.c
./src/H5Vprivate.h
Changed dimensionality arguments from `size_t' to `intn' to be
consistent with the rest of the library and to get rid of
warnings on 64-bit Irix.
----------------------
./MANIFEST
./src/H5Psimp.c [NEW]
./src/Makefile.in
Added H5Psimp.c and populated it with some conversion
functions. Eventually the parts of H5P.c that operate on
simple data spaces will be migrated to H5Psimp.c and other
files will be created for other types of data spaces.
./src/H5D.c
The read pipeline, H5Dread(), has been updated to handle data
space conversion although the actual simple data space
conversion functions don't do anything yet. But we're getting
really close!
./src/H5P.c
./src/H5Pprivate.h
Added H5P_find() to locate data space conversion functions.
Added typedefs for structs related to data space conversion.
----------------------
./src/H5AC.c
./src/H5ACprivate.h
./src/H5B.c
./src/H5D.c
./src/H5Farray.c
./src/H5Fprivate.h
./src/H5V.c
./src/H5Vprivate.h
Fixed indent oopses.
./src/H5D.c
./src/H5Fprivate.h
./src/H5Farray.c
./test/istore.c
We can now perform partial I/O on contiguous storage
transferring between a hyperslab of file storage and a
hyperslab of memory. However, partial I/O hasn't been added
to the I/O pipeline yet in H5D.c
----------------------
./html/Datasets.html
Removed some archaic comments about data spaces. Fixed example
code.
./MANIFEST
./html/H5.format.html
./src/H5O.c
./src/H5Oprivate.h
./src/H5Ocstore.c [DELETED]
./src/H5Oistore.c [DELETED]
./src/H5Olayout.c [NEW]
./src/Makefile.in
./test/istore.c
Replaced H5O_CSTORE and H5O_ISTORE messages with a more
general H5O_LAYOUT message.
./src/H5D.c
./src/H5Dprivate.h
./src/H5Dpublic.h
A little more work on the pipeline. Access to the file data
is through the new H5F_arr_read() and H5F_arr_write() which do
I/O on hyperslabs of byte arrays and don't depend on data
layout. This should simplify the I/O pipeline quite a bit.
I also added another argument to H5Dread() and H5Dwrite() to
describe the hyerslab of the file array on which I/O is
occuring. We discussed this at last week's meeting.
./src/H5Farray.c [NEW]
Added functions that sit on top of H5F_block_read() and
H5F_istore_read() and implement a common set of functions
between all layouts. This means I/O of hyperslabs of
byte-arrays in the file to arrays of bytes in memory. When
operating on arrays of elements (>1byte) then we just add
another dimension. That is, a 10x20 array of int32 becomes a
10x20x4 array of bytes.
[This is the area I'll be working on most of next week to
implement partial I/O for contiguous data and to improve
performance for chunked data.]
./src/H5Fistore.c
./src/H5Fprivate.h
Replaced the H5F_istore_t data type with the layout message
H5O_layout_t which looks almost the same. Eventually I'd like
to rename `istore' to `chunked' everywhere and use `istore'
for 1-d storage where the chunks are all different sizes like
in the small object heap where each object is a chunk.
./src/H5V.c
Changed ISTORE to LAYOUT in one place.
./test/dsets.c
Fixed for extra argument to H5Dread() and H5Dwrite().