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