What started as a small fix & refactor for iterators and contains procedures, turned into the biggest change in months.
This adds distinct types for the different use cases of hid_t in the HDF5 library, which allows us a much saner, clearer handling of all the funny little identifiers that are used. It gives us the ability to nicely write close procedures for each type as well as helps a bit to finally add =destroy hooks to the library (thanks to them working on refc as well now).
It includes two breaking changes:
the depth argument to iterators now starts at 0, meaning "same level". This wasn't possible previously. The default behavior is the same as before. To still yield all levels, hand -1
the shape_raw and dset_raw arguments to the create_dataset procedures have been renamed to simply shape and dset as the details are irrelevant and no one can remember these suffixes.
Aside from that it includes a lot of clean up, in particular of construction / opening of datasets and groups, plus the below.
Slightly modified version of the original text in this PR:
In addition it includes a bunch of refactors to better separate the modules by what might be needed commonly in other modules. Main problem structuring the existing code is the need to access other procs in other modules, quickly leading to recursive imports.
This helps somewhat, among other things it separates out code that is not needed in other procs (as it's mostly user facing).
In addition it fixes a bug with iterators & groups not knowing about their datasets.
What started as a small fix & refactor for iterators and
contains
procedures, turned into the biggest change in months.This adds distinct types for the different use cases of
hid_t
in the HDF5 library, which allows us a much saner, clearer handling of all the funny little identifiers that are used. It gives us the ability to nicely writeclose
procedures for each type as well as helps a bit to finally add=destroy
hooks to the library (thanks to them working on refc as well now).It includes two breaking changes:
depth
argument to iterators now starts at0
, meaning "same level". This wasn't possible previously. The default behavior is the same as before. To still yield all levels, hand-1
shape_raw
anddset_raw
arguments to thecreate_dataset
procedures have been renamed to simplyshape
anddset
as the details are irrelevant and no one can remember these suffixes.Aside from that it includes a lot of clean up, in particular of construction / opening of datasets and groups, plus the below.
Slightly modified version of the original text in this PR:
In addition it includes a bunch of refactors to better separate the modules by what might be needed commonly in other modules. Main problem structuring the existing code is the need to access other procs in other modules, quickly leading to recursive imports. This helps somewhat, among other things it separates out code that is not needed in other procs (as it's mostly user facing).
In addition it fixes a bug with iterators & groups not knowing about their datasets.