2.003 2025-01-06
- add licence information
2.002 2024-12-09
- install pdldoc, add repo metadata
2.001 2024-12-03
- split out from PDL 2.095
2.0 2006-03-27
- New version I've taken over from the previous authors.
- There has been several minor fixes to the old version that I have fixed over the years,
and I can't remember them all to document here. Any new functionality has been documented,
however.
- "Chunking" functionality added. This is an internal tiling and compression on the SD
datasets done by the HDF library. This is on by default, and can be
inquired/changed through ->Chunking() member function (pass it 0 for off, true for on).
The actual chunking section automatically determines a tile size for the dataset, but
this may not be optimal for some datasets. Down the road I'll provide better control of
this feature.
- I've defuncted several functions that had strange (perhaps French) spellings. The originals
are still there for the time being, but a future version will come with warnings, and
finally be removed from the library even further out.
SDgetvariablename -> SDgetvariablenames
SDgetattribut -> SDgetattribute
SDgetattributname -> SDgetattributenames
SDgetdimsizeunlimit -> SDgetunlimiteddimsize
SDgetdimname -> SDgetdimnames
Vgetchilds -> Vgetchildren
VSgetfieldsnames -> VSgetfieldnames
- Umm... I don't like fortran array dim order, so I use C order. This may be a concern for
you, but I can't verify the problem for everyone since all of my code works fine.
I generally save things as X, Y, Z in my code (think an image, for instance), and then
when I open the HDF with image viewers, everything is fine. That's not how HDF saves
the data, however, so there's a dim reverse in the code for SDget and SDput, but that
should (theoretically) be transparent to you. NOTE: there is no reformatting of memory
necessary (it's time consuming, and has been avoided), since the C style dim order
is how a linear array maps into memory anyways (that's the main reason I like C style
over fortran).
If this causes _huge_ problems for you, then maybe I can make the ordering optional and
you can have it your backwards way if you want :)
- I migrated all of the failure codes to return 'undef' instead of the mix they were returning
before. This should allow old code to be left alone.
- I migrated all of the perl hashes to anonymous hashes.
- I removed and internally doc'd several places where buffer overflows are possible, and did
my best shot at making the buffer overflows impossible, using the new constants below.
NOTE: this is not total elimination of the problem! Look for that in a later version with
updates perlXS code on those function to use the C constants.
The constants used in the code are cool with the HDF4.2r1 version, assuming you didn't
change anything before you compiled the HDF library. The HDF people could theoretically
change those values at a later point, so they should be read directly from the HDF system
headers, rather than hard coded in this module.
- I moved the constants over to 'use constant', so instead of using '$PDL::IO::HDF:DFACC_CREATE',
you now would use : 'PDL::IO::HDF->DFACC_CREATE'. This is how constants work in Perl, so get
over it and fix your old code that uses things the old way.
- I added a couple of constants (all only usefull for allocating memory internally):
MAX_NC_NAME => HDF's constant to hold the max name length for an attr/sds/dim
MAX_VAR_DIMS => HDF's constant to hold the max number of dims for a HDF variable
VNAMELENMAX => HDF's constant for the max length of VS interface names
FAIL => HDF's constant failure return code
- I moved all of the tests over to 'use Test', for easier clarity and to get them working again. I
also modified the tests to clean up their test files when they are no longer needed (some tests
use outputs from earlier tests).
- I added tests for the SDS chunking features.
0.01 13/02/01
- original version