Prepare H5Easy for `v3`.
There's some outstanding modernization in H5Easy, see #897 for some discussion. My preferred solution would be to completely move all logic out of H5Easy and have it act as a layer of simplifying API, without adding any functionality. The alternative would be to find some minimal set of modernization that can later be transformed without breakage.
Tasks:
- [ ] Remove macros
H5_USE_BOOSTand similar.
I would be all for moving all third-party overloads to the core! It would increase functionality, and provide a much clearer platform to add future plug-ins if we like. I lost track a bit, what would it involve?
Note that one could even consider dropping the H5Easy namespace at some point. In the end, there are just a few functions/classes.
The immediate problem is that XTensor supports arrays that don't have a compile time constant rank. This simply isn't something HighFive anticipated and slightly annoying to fix.
I've been tempted to drop H5Easy, after all functionality has been merged into the core. Mostly because it looks like HighFive improved to the point where easy isn't much more ergonomic anymore. OTOH, it feels too violent of a change for v3; and there's something to be said for API that's suitable for "scripting in C++" tasks. For reading it would be nice to have:
auto x = H5Easy::load<...>("foo.h5", "dset");
without the need to open a file, just pass a path, done. Similar for writing, but there it's important to be able to express truncating vs appending to the file.
Core has support for Eigen, XTensor (#976) and rudimentary OpenCV (#1006). This should allow us to massively simplify Easy making it little more than an API layer.
I'm happy to let Eigen work slightly differently for Easy, i.e. Vectors are 1D in easy and 2D in core.
The system for automatically adding functionality whenever the optional dependency is available can coexist with the new system that requires including a suitable HighFive header.
Not sure there's much more I'd like to do for v3. Therefore, I'll close it for now.