H5pp Versions Save

A C++17 interface for HDF5

v1.11.2

3 months ago

Highlights

  • Updated dependency spdlog to 1.13.0
  • Add support for C++20 and use concepts when available
  • Minor fix: dynamic resizing of Eigen Tensors was broken on Clang compilers
Git Log
  • c7f0e9c - Fix h5pp::format and h5pp::print for fmt versions < 8
  • fca5b41 - Fix resizeData() using clang compilers
  • f255645 - Start using concepts in compilers that support it
  • ded9ccc - Use fmt:: namespace to solve ambiguous call to format_to in c++20
  • 7a42edc - Add support for C++20
  • ed7aca1 - Bumped to spdlog 1.13

v1.11.1

4 months ago

Highlights

Features

  • Added support for __float128 and quadmath. c872043 e930258 cb46921 8301fb0
  • (opt-in) Use CMAKE_PROJECT_TOP_LEVEL_INCLUDES to select package provider for find_package() calls. This currently supports CMake and Conan package managers. 59c0630 d67313c

Updated dependencies

  • HDF5 1.14.3
  • spdlog 1.12.0
  • CMake-Conan integration c53fbf5
  • Updated conanfile.py to support conan v2 817f24e

Fixes

  • Use the data hyperslab dimensions, if present, when appending/extending a dataset. 20f38f4
  • Many stability improvements to CMake configuration on different platforms. 1feffe3 78f07c1
  • CMake warnings. ec4c9aa d4c5930
  • Transmit property lists through all function calls. 3888555
  • Fix a leak in varr_t<T> that occurs when the inner type is also iterable. 196fdb0
  • Fix byte size detection of std::vectorstd::string when writing variable-length arrays with string elements. a53d2a7
Git Log

929c7c2 - Ignore .vs b0bcfef - Fix libaec compilation on windows edb07c6 - Updated the CMake-Conan integration cd41c84 - Updated dependencies in the CMake package installer d761b19 - Updated fmt to 1.10.1 on cmake builds d3f46e9 - Updated documentation build scripts e97f935 - Updated CMakePresets.json for windows 6f019e6 - Verbose ctest output on ci ab7b62b - Add missing include for using h5ppType.h independently 196fdb0 - Fix a leak in varr_t<T> that occurs when the inner type is also iterable. 08b5d3b - fix a typo in h5ppHdf5.h (#20) 269632b - Added a missing include for safe type casting 16a5da8 - Avoid warning in MSVC 600326c - Bump versions for dependencies in conanfile.py 44355aa - Remove const from the custom format signature for in fmt < 9.0.0 92e7c1d - Update hdf5 version compatibility to 1.14.2 c4c7ab5 - Update h5pp version efc9a0d - Clean compiler version log during cmake-conan configuration 48d543f - Updated dependencies b2867e3 - h5ppFstr: Use the type constructor instead of casting when returning 0 941e2e7 - Reverted spdlog due to the custom formatter no longer working for __float128 ee4ea74 - Added a custom fmt formatter for h5pp::fstr_t efce926 - Updated versions of hdf5 and spdlog af59592 - Added custom fmt formatters for h5pp::varr_t and h5pp::vstr_t 1f7f081 - Simplified std::complex formatting a53d2a7 - Fix byte size detection of std::vectorstd::string when writing variable-length arrays with string elements 20f38f4 - Use the data hyperslab dimensions, if present, when appending/extending a dataset 537aa3d - Clarify error message on mismatching bytes per element 45e2590 - Added support for std::array as elements in std::vector, and an accompanying exmaple a9d84c0 - Build tests and examples in release mode also 9208fab - Merge branch 'dev' ae8cd7f - Specify config in multi-config builds ab67985 - Use separaet cache keys for each workflow 3a4d52f - Avoid enforcing static linkage type if HDF5_USE_STATIC_LIBRARIES is not set ddd075d - Fixing minor issues with ci runners fcf4fa3 - New workflow for macos 12 59c975e - Fixed compatibility with older versions of fmt 4c1c78c - Reduce verbosity of tests 2cd600f - Fixed github actions builds 7fd5a77 - Simplified version handling of fmt and spdlog find_package modules 9bd7409 - Deprecated ubuntu 18 github actions workflow c20ad30 - Update apt before installing on the github action runners 2442a8c - Removed version range handling from find_package calls to support a wider version range f17d3fe - Clearer CMake-conan messages 3ec9f70 - Simplified fmt and spdlog find modules 05264c7 - Disable plain find_package build on mac a105183 - Only use the fmt complex formatter for fmt v9 and up 3faaf65 - Only use __float128 when H5PP_USE_FLOAT128 is defined a09ff7a - Removed conan v1 code from conanfile.py 2289953 - Append the module dir if not present d6080ac - Simplified CMake installation and moved to using the new CMake dependency provider mechanism a668e21 - Vastly simplified github actions routines 78f07c1 - Move code for expanding targets to PrintTargetInfo.cmake 507beb9 - Simpler estimate of number of cores using d67313c - Simplified CMake installation and moved to using the new CMake dependency provider mechanism d886ea4 - Fixed and added some of the CMake Presets. Deprecated use of conan v1 8301fb0 - Use #if defined() to detect support for FLOAT128 d4c5930 - Fixed a CMake dev warning about DOWNLOAD_EXTRACT_TIMESTAMP when using CMake 3.24 40801a0 - Updated some wording and installation instructions using CMake Presets 632615a - Default initialize hvl_t to {0, nullptr} to avoid access to uninitialized data afe9af6 - Add support for fstr_t in existing utility functions b4f2204 - Added a fixed-size string wrapper that can convert to and from floating point. ca69a65 - Implementing fstr_t wrapping fix-length string data da4c060 - Revert putting debug_vstr_t into the vstr_t class d337621 - Log resize of std::vectorstd::byte when reading table records a96b10d - Make sure to de-allocate contained types in h5pp::varr_t before deallocating self 24dba7d - Pass dset transfer property list to all H5Dread/write calls cb46921 - Added support for __float128 and quadmath b927c20 - Added new type detection for arrays type and native types in h5pp::type::getH5TypeName eeb8f89 - New free function h5pp::type::getH5ClassName to get the class of a type id. 0ed354a - Added include h5ppEnums.h to allow the inclusion of just h5ppLogger.h 9eec9c8 - Use dataspace instead of dsetspace when tracking vlen reclaims e930258 - Check if the macro H5PP_USE_FLOAT128 is defined instead of == 1 or 0. 412e043 - Added support for casting h5pp::vstr_t to/from floating point. d3982ae - Stricter checks of ptr in vstr_t d9b7b6a - Prettier printing of compound type fields 13760d8 - Added debug development logging when tracking memory reclaim 1d7fef5 - Use dataspace instead of dsetspace when tracking vlen reclaims c941dba - H5TInfo: added memberClass field listing the hdf5 classes of a type id a9e6b26 - constexpr detection of using vlen_type in structs/compound datatypes 63c3682 - Simplify version selection cc8bc04 - Add support for varr_t<vstr_t> to mimic std::vectorstd::string 8b0a1e2 - Use calloc to zero allocated memory in varr_t. 9ab86c1 - Safer preprocessor macros for detecting zlib dd7be0e - Updated github actions to support conan v2 817f24e - Updating conanfile to support conan v2 6840591 - Improved fmt formatter for std::complex c872043 - Added support for __float128 b32d03b - Update versions 1feffe3 - Update the fmt cmake module 3888555 - Transmit property lists through all function calls 848c4d7 - Implement safe casting of integral types with runtime checks for range validity bba5354 - Fixed chunk dimension test that wasn't actually testing chunking 59c0630 - Use CMakePresets.json to simplify installation and to enable conan with the new CMake dependency provider feature 0784f85 - Removed unnecessary const qualifier causing a warning in gcc-12 7182507 - Clarified error message when attributes are created on non-existing links ec4c9aa - Fixed new warnings in CMake 3.25 about missing imported library location c4c182d - Fixed some typos in README.md

v1.11.0.1

10 months ago

Fixes an issue with a test in FindFilesystem.cmake not passing after installing h5pp.

v1.11.0

1 year ago

New features

  • New wrappers h5pp::varr_t<> and h5pp::vstr_t to hold variable-length data in structs for compound types or table fields. See examples 01d, 04c and 04e.
    • a597dd9 - Add .size() support for varr_t and other minor improvements:
    • e85246e - Add ostream operators to vstr_t and add .size() member to varr_t
    • 69c5f00 - Added simpler examples showing the new vlen types
    • 748d2e0 - Added tests for the new varr_t and vstr_t types
    • e2e3f39 - Improved support for variable-length arrays and strings
    • 38edec3 - Minor tweaks to vlen wrappers 9d25d58 - New set of member functions h5pp::File::vlen???(...) to control tracking of variable-length data allocations made by HDF5. Users can enable/disable tracking and call h5pp::File::vlenReclaim() to free all allocated memory in one go if tracking is enabled.
  • 6f91fb8 - New member function h5pp::File::deleteAttribute(...)

Minor updates

  • 33577b1 - Added a custom fmt formatter for complex types
  • 94f490a d511fef - Update HDF5 to 1.13.1 on conan builds, 1.13.2 on other builds (the link to 1.13.1 has been removed)
  • Optimized type detection:
    • 08dc1c9 aff4ec7 - Refactored type detection
    • 4c899d6 - More efficient type equality checks for compound types (complex, scalar2, scalar3)
    • 221153d - More efficient HDF5 <--> C++ type matching
    • 4b8d110 - Shorten the H5T_NATIVE type list to check
  • cc5f8d8 - Add more metadata fields to LinkInfo struct
  • e681348 - Enable automatic creation intermediate groups when making soft/hard/external links

Updated dependencies

  • Updated HDF5 1.12 to 1.13
  • Updated spdlog 1.10.0 to 1.11.0

Bug fixes

  • 0172f9e - Fixed bug in automatic estimation of chunk size for very big table records
  • 58cbf0f - Return (do nothing) if extent == 0 when reading table records or fields
  • c708efe - Use h5pp:: namespace for enum2str to avoid collisions
  • 41c720e - Wrap all steps in FindFilesystem.cmake in a function to avoid local variables leaking out. This should fix https://github.com/DavidAce/h5pp/issues/16
  • f292750 - Take all hyperslabs into account when resizing datasets
  • 9e5f41f - Fixed bug caused by H5TBget_field_info not being able to calculate the size of table types correctly when a field has an enum.
  • a1d8f08 - Fixed issues with iterating/recursing through nodes in an HDF5 file, when given relative paths

v1.10.0

2 years ago

Breaking changes

  • ecb5089 Changed the order of arguments for attribute functions for consistency: The new convention is to always use linkPath before attrName.
    auto A = file.readAttribute<T>("nameOfAttribute", "path/to/link");
    // Changes to
    auto A = file.readAttribute<T>("path/to/link", "nameOfAttribute");
    
    If this type of mistake is detected, h5pp will throw a runtime exception with a message like:
    Could not read attribute [nameOfAttribute] in link [path/to/link]: Link does not exist.
    NOTE: h5pp v1.10 and above requires the 'linkPath' argument before 'attrName'
    
  • 047f7fd Dropped support for compilers without <filesystem> or <experimental/filesystem>

New features

  • 6a2c033 New object TableFieldInfo (and related functions) for more efficient interaction with table fields. The old TableInfo still exists and now derives from TableFieldInfo
    • 02bc055 New function h5pp::File::getTableFieldInfo to get table field information such as names, sizes and offsets.
    • 96d998a New function h5pp::File::fieldExists to check if table fields exist by name or index.
  • 08adc5c ab1bf62 Added support for reading into an std::optional<T>. E.g. auto A = file.readDataset<std::optional<double>>("some/dataset"), which returns std::nullopt if some/dataset does not exist on file (instead of throwing an exception).
  • 6c0318d Added support for deleting links/soft links. Note that this does not recover storage space!
  • ba15d79 Add overload to read attributes using only h5pp::Options, and for reading as a custom h5Type.
  • 2bc2354 Add support for checking if an attribute exists in a link (by name): h5pp::File::attributeExists(...).
  • fda82de Added support for reading any dataset into an std::byte container.
  • 23a6d51 e57e949 10d14b4 Added support for index wrapping over unsigned types: E.g. use index -1 to read the last element of a table (as in python).
  • e54c2ae Add appendTableRecords overload taking an existing TableInfo object
  • 6d18873 Added support for creating soft/hard/external links
  • c2996ae New h5pp::File::FileHandleToken to keep the file handle alive during batch IO using RAII
  • 4e9747f Added support for reading object header information with h5pp::File::getLinkInfo(linkpath)

Bug fixes

  • 74d35a4 Fixed h5pp::File::readTableField which did not return data at end of scope
  • 7df1ff2 cdb17c1 Fixed some minor issues with header includes of spdlog and fmt.
  • c6770a9 Allow changing log level in const context
  • 1461eee Fixed error with changing file close degree in the default property list
  • 2980fe5 Fixed minor bug with reference counts
  • f2f115f Fixed issues with chunk compression detection
  • 1d097cc Updated find of std::filesystem to work on macos11

Minor changes

  • 59de93f Renamed h5pp::FilePermission to h5pp::FileAccess. The old name still works though.
  • bec90b2 37c7b0c Clarified logs and error messages
  • bfa7de8 Check return values for error on all HDF5 calls
  • 9257778 Speed up hyperslab selection

Updated dependencies

  • Updated HDF5 1.12.0 to 1.12.1 on conan installs (1.13.1 otherwise).
  • Updated spdlog 1.9.2 to 1.10.0.
  • Updated fmt 8.0.1 to 8.1.1

h5pp should remain compatible with older versions of these dependencies.

Solved issues

  • Issue #6: Mention necessary compile flags for MSVC in documentation. Thanks @Fokatu.
  • Issue #10: Clarified examples on writing structs. Thanks @FG-TUM.
  • Issue #11: Fixed incompatibility with HDF5 1.13. Thanks @OlafHartwig.
  • Issue #12: Fixed serious bug with circular includes when spdlog is disabled. Thanks @gayverjr.

Other

  • Expanded documentation
  • Simplified readme: Moved detailed installation instructions from README.md to documentation
  • A whole lot of work to install/link/find HDF5 robustly on all versions and platforms.
  • cc653bd 644370a 7a538ce Updated the CMake+Conan integration workflow. Now using the cmake_find_package_multi generator by default.
  • aeec201 Added example showing how to traverse attributes.
  • 11660cb Added example showing compound types with variable-length arrays.
  • 6c771c1 Updated option for setting cmake verbosity (E.g. call CMake with --loglevel=DEBUG to get more information during CMake configuration)

v1.9.0

2 years ago

This update brings some bug fixes and many improvements to the internals of h5pp, in particular to the initialization of a file. In addition, many changes have been made to the CMake build/install process of h5pp itself and its handling of dependencies.

Highlights

C++

  • Fixed bug where multiple file handles would remain opened after repeated calls to setKeepFileOpened()
  • Added support for all fixed width integers (int8_t, int16_t, ...)
  • Initialize and detect std::complex, Scalar2 and Scalar3 much more efficiently.
  • Fix warnings from -Wpedantic and include headers required on some platforms
  • Rename fields in enum h5pp::ResizePolicy to shorter ones

CMake

  • Improved compatibility of CMake build/install with MSVC. Linking to h5pp should now work properly.
  • Improved propagation of build configuration to dependencies
  • Many many minor improvements to the CMake configuration/build/install process. Installed artifacts have been tested to work properly and importing find_package(h5pp) should now successfully import a target h5pp::h5pp in all the different configurations.
  • New opt-in package manager: CPM
  • Re-release: Reduce minimum required cmake version to 3.18
  • Re-re-release: Reduced cmake version requirement further down to 3.15 for compatibility with conan-center index.

Changelog

79ddb1b Added new example showing how to copy datasets between files e111340 Updated spdlog 1.8.2 -> 1.8.5 9939add Rewrite of compound data type detection: std::complex, Scalar2, Scalar3 3719bca Added coverage support 3fe9273 use std::begin/std::end in templated contexts 97eb1d8 Add ghc::filesystem to cpm-mode 8f3ba74 Add [[maybe_unused]] to avoid warning 47d2ac6 Add support for the CPM package manager 5ae1f8d More robust version checking in Findspdlog.cmake and Findfmt.cmake c8e5047 Fixing the custom Find<PackageName> modules to find local dependencies b0a7c5f Fixed setting REQUIRED flag on find_package when H5PP_PACKAGE_MANAGER=find f2bdc63 Add H5PP_DEPS_INSTALL_DIR as HINTS to find<PackageName> modules 87e9823 Drop support for conda packages. 5b72f2a Fail if HDF5 is not found when H5PP_PACKAGE_MANAGER=find 459bfc8 include cstddef for std::byte f6d4777 Updated hdf5 build on fetch-mode 76a801e Updated github actions matrix de10161 More complete CMake configure message dd817b0 Give find_library/find_path correct hints and path suffixes when finding zlib f7ae546 Avoid warning with -Wpedantic 85090d9 Add check_required_components(h5pp) to config.in as is recommended 53be358 Improved deprecation notice for old options e087007 Refactor SetupSearchPaths.cmake to SetupPaths.cmake since it has more general purposes now 602875c Rename H5PP_DEPS_IN_SUBDIR -> H5PP_PREFIX_ADD_PKGNAME 8f39549 Use <PackageName>_ROOT mechanism to find ZLIB and SZIP when building HDF5 612c9c9 Default H5PP_DEPS_INSTALL_DIR to CMAKE_INSTALL_PREFIX 323c8ea * Rename H5PP_DEPS_IN_SUBDIR -> H5PP_PREFIX_ADD_PKGNAME * Windows: Collect binaries in the same build directory f30ccda Clarify purpose for setting CMAKE_FIND_LIBRARY_SUFFIXES as a cache variable 0472d06 Use standard path /lib/cmake/h5pp for config files 29316bc Pass CMake policies to dependency builds f664b62 Add branch in InstallPackage.cmake to handle multi-config generators 99e3d97 More robust search for zlib before building HDF5 622200e Make sure szip builds both static and shared components 48c21cf Help find_library find szip on MSVC 9d8824a Improved examples in README.md ad93862 Help find_library find zlib on MSVC 7dcb566 Fix test and example target name on MSVC 960ad56 Add description for new mode H5PP_PACKAGE_MANAGER=fetch c34b9c5 Update cmake minimum requirement in readme 7edd190 Add zlib libname for windows compatibility 0bd0574 Fix HDF5 install during H5PP_PACKAGE_MANAGER=fetch e2d6043 More careful inclusion of fmt and spdlog headers 3638931 Do not cache dependency builds 2c32e5c Major rework of mode H5PP_PACKAGE_MANAGER=cmake e903683 Simplified external build of HDF5 2cf6e05 Minor refactoring of PrintTargetInfo.cmake 5bff663 Remove the need for setting explicit policies by raising the required CMake version instead 5230af5 Update PrintTargetProperties.cmake to support LOCATION on INTERFACE IMPORTED libraries bbf0766 Replace libaec by libszip for HDF5 compression 93169a5 Update CMake minimum version requirement to 3.19 4ce05b9 Make sure <PackageName>_FOUND is true after find_package 1c0ce91 Add rpath settings for dependency libraries built by h5pp afc67c3 Simpler overrideable settings for cxx standard in dependency builds a8e2ec2 Simplified build externalproject_add call by adding variables to initial cache instead 0670039 Updated build of ghc::filesystem adaffc4 Make sure find_library() finds static/shared libraries correctly based on BUILD_SHARED_LIBS 9185156 Replace backslash in windows paths with forward slashes to avoid unintended escape 46b6df8 Let CMake autodetect the language during dependency builds d3398a0 Simplified get_num_threads. 3191264 Rename BuildDependency.cmake to InstallPackage.cmake 35d8e84 Prepend h5pp- to target names for tests and examples ac150e3 Use the initial-cache feature of CMake to propagate the build configuration to subprocesses ff06fab Corrected home directory on windows10.yml 25de94d Debugging FindHDF5.cmake on CI 93815ad Add PATH_SUFFIXES to find_library call so that aec/szip/zlib can be found also when H5PP_DEPS_IN_SUBDIR=OFF 7dd5276 Print install message for aec and zlib 130d155 Transmit -fPIC to depedendency builds d241d6d Simpler preemption of Threads::Threads ea1e3cd More careful use of NO_CMAKE_... flags when searching for HDF5 40ed005 Add option H5PP_PACKAGE_MANAGER=fetch to h5ppConfig.cmake a149a64 Set <PackageName>_ROOT in for dependencies built by h5pp using H5PP_PACKAGE_MANAGER=cmake in generated h5ppConfig.cmake b94de58 H5PP_PACKAGE_MANAGER=cmake will now handle ZLIB and SZIP dependencies of HDF5 properly afdcce7 Refactor the setup of std::filesystem to avoid code duplication 8ee6dd4 Set CXX standard when H5PP_PACKAGE_MANAGER=fetch 5b1783d Refactor the setup of std::filesystem to avoid code duplication 3ecc4c7 Github actions: Test some new build configurations 763edb6 Updated steps for preempting the target Thread::Thread in h5ppConfig.cmake.in f153c6d Updated script for getting the drop-in replacement ghc::filesystem if std::filesystem is missing 639f66f Faster check of std::optional header using try_compile, which works without global variable CMAKE_CXX_STANDARD 81f2044 Set CMAKE_CXX_STANDARD to 17 when building dependencies (if no standard has been set already) de3eb16 H5PP_PACKAGE_MANAGER=cmake will now handle ZLIB and SZIP dependencies of HDF5 properly 1e20890 Updated check for whether h5pp is being used as subproject (i.e. with add_subdirectory from another project) 870c5c5 New H5PP_PACKAGE_MANAGER option: fetch d2f9812 Updated dependency build scripts 8a4a23d Fix unusual error when printing target properties on edge-case imported interface libraries. 522db66 Deprecate use of variables <PackageName>_DIRECTORY_HINTS bcb89e7 When using -DH5PP_PACKAGE_MANAGER=cmake, use variables H5PP_DEPS_BUILD_DIR and H5PP_DEPS_INSTALL_DIR to control the dependency build/install locations 61f35a0 Updated modules Findspdlog.cmake and Findfmt.cmake to enable checking library versions directly on targets ae18d93 Renamed all targets with a "h5pp-" prefix to avoid target name collisions with other libraries when using FetchContent 09e2bdf Updated dependencies to latest versions ce68bff Correctly check whether a target is imported so that its location can be queried without failure. 4cfc8ec Stop checking and modifying the default CMAKE_INSTALL_PREFIX. 6c6569f Move headers from "h5pp/include/h5pp/..." to just include/h5pp/..." ac5e3b6 Rename ResizePolicy enum members to more compact ones 163de06 Fix subtle leak of filehandle on repeated calls to "setKeepFileOpened()"

v1.8.6

3 years ago

Maintenance release

This is a minor release before a larger upgrade to h5pp 1.9.0 coming soon. The most important change is the change of variable H5PP_DOWNLOAD_METHOD --> H5PP_PACKAGE_MANAGER

Changelog

596e2b8 Separate fmt and spdlog dependencies 8a98b42 Skip Eigen patch in cmake builds b210e82 Read whole name of object identifier 9ec8516 Added deprecation warning for H5PP_DOWNLOAD_METHOD: Use H5PP_PACKAGE_MANAGER instead 6707f12 Updated spdlog to 1.8.2 96769fe Updated fmt to 7.1.3 18f7c43 Updated naming conventions in CMake for automated installation of external libraries 33eede0 Remove .travis.yml -> move all ci to github actions 86429a2 Catch2 test for new user type versioning. (#5) 330a549 Added support for type override when reading datasets 92fdc67 Get the name of unknown types from the h5t class 56340b7 Added move constructors/assignment operators to h5pp::hid e31bfc0 Added [[nodiscard]] to member functions that read data from file 241a0fa Updated naming conventions in CMake for automated installation of external libraries bf59732 Added support for type override when reading datasets 0eafe21 Get the name of unknown types from the h5t class 86ecf92 Added move constructors/assignment operators to h5pp::hid 79cfd40 Added [[nodiscard]] to member functions that read data from file 8b06093 Updated naming conventions in CMake for automated installation of external libraries 9e8f15a Fix for finding precompiled headers e6ea67e Improve zlib detection/linking when building HDF5 from source and add support for szip 49b45f7 Fix FindHDF5.cmake in the case when the executable wrappers are broken 7dbe5a4 Corrected name of eigen conan package 160e02b Bump versions of spdlog and eigen aa19a4d Clarified examples f5cb3bd Fixing found HDF5 version error f2a3896 Separate fmt find routine from spdlog e901d8c New custom Findfmt.cmake module

v1.8.5

3 years ago

Highlights

  • New function h5pp::File::setKeepFileOpened() and h5pp::File::setKeepFileClosed() to keep h5pp from closing the file between operations. This can greatly improve throughput of batch operations.
  • Better handling of hyperslabs (i.e. read/write subset of datasets)
  • New examples describing hyperslab usage
  • New functions .writeHyperslab() and .readHyperslab()
  • Speed-ups from skipped logging and re-use of expensive HDF5 identifiers
  • Many changes in naming convention both internal and public-facing to be more consistent and self-explanatory
  • More efficient scanning of types, in particular when reusing metadata.
  • Faster search for datasets/groups in file

Changelog

Changes that affect users are in bold:

ae403b8 Updated bundled FindHDF5.cmake to support CMake 3.19+ ccda1d5 Clearer error message on failure to append to dataset 939181e Updated resizing of datasets and data buffers to account for hyperslab selections 06c1ffc Reorganized routine for selection of hyperslabs and added h5pp::File::readHyperslab and h5pp::File::writeHyperslab functions interact with parts of datasets c3b126a Properly delete constructors in OptDimsType and DimsType to avoid ambiguity e948625 Deleted some constructors in h5pp::Hyperslab to avoid ambiguities 2c4b172 Renamed ResizeMode --> ResizePolicy 49c7734 Added examples showing usage of hyperslabs f324a7c static_cast away compiler warning for implicit conversion a373e73 Replaced usage of strnlen and strncpy with the constructor of string_view 578e091 Added MSVC /EHsc compiler flag to avoid warning 79c2e33 Removed unnecessary include 421c15c Fixed printing of complex range in fmt 7.1.2 c90a593 Improved handling of hyperslab selection 09f2051 Make sure not to shrink a dataset to fit data when writing data to a hyperslab selection on dataset c27a065 Updated static_assert function names 32ee358 Fixed local fileHandle shadowing optional h5pp::File::fileHandle variable 3ce8722 Set default H5F_CLOSE_STRONG as in h5py 7712675 Faster iterator when finding links in a group fb45a26 Speedup by avoiding string composition for logging when not needed d594ae2 A table's parent group has to be checked for existence and created every time ce1ba28 More thorough check for table existence before creating a81367b Use [[nodiscard]] to make sure optional parameters have been set afba3af Check that optional h5type is defined before using cdf92d9 Use the faster attribute link check whenever possible f96cb80 Allow population or creation of new info objets 27e664f Only set info members if they are not not defined yet 22dc86f Assign optionals instead of moving 69e1252 Changed name h5pp::hdf5::checkIfAttributeExists --> h5pp::hdf5::checkIfAttrExists 3245b05 Stopped using short-circuit pattern when checking for existence of links 182a90a Scan missing metadata efficiently when using Info objects directly 36166a4 Allow to keep file open in const contexts b514202 Added feature h5pp::File::setKeepFileOpened() and h5pp::File::setKeepFileClosed() to avoid expensive operations opening and closing the file handle e.g. when doing batch operations in for loops 99112ff Add createTable(TableInfo) to follow the convention on other create___ functions cf9c8b7 No need to assert options when scanning attribute metadata eb39897 Return the AttrInfo object when writing attributes c98ef30 Select appropriate scan function in createDataset d11c9c9 Select appropriate scan function in writeDataset 5934a75 Rename h5pp::scan::makeDsetInfo --> h5pp::scan::makeDsetInfo to clarify intent 6b4646a Rename h5pp::scan::makeAttrInfo --> h5pp::scan::makeAttrInfo to clarify intent db97ed2 Rename h5pp::scan::getTableInfo --> h5pp::scan::makeTableInfo to clarify intent c30d105 Rename h5pp::scan::fillTableInfo --> h5pp::scan::readTableInfo to clarify intent 8bd0c50 New function infers attribute info based entirely on given options ca84694 Rename h5pp::scan::fillDataInfo --> h5pp::scan::scanDataInfo to clarify intent eee3dc5 Rename h5pp::scan::getDsetInfo --> h5pp::scan::inferDsetInfo to clarify intent 742ee41 Rename h5pp::scan::getDsetInfo --> h5pp::scan::inferDsetInfo to clarify intent 75623aa Rename h5pp::scan::fillAttrInfo --> h5pp::scan::readAttrInfo to clarify intent 99835a5 Rename h5pp::scan::fillDsetInfo --> h5pp::scan::readDsetInfo to clarify intent ab84d77 swapped function signature of fillDataInfo to follow convention 619edb7 Improved handling of options when populating metadata 9584baa Renamed some TableInfo members to follow convention on other Info structs 3e0d847 Rename TableInfo::getTableLocId() -> TableInfo::getLocId() 8f440da Permit passing options for interpreting data c9c034d Use path from either info or option to maximize chances of populating metadata 333594e Renamed some TableInfo members to follow convention on other Info structs f37e99b Improved handling of AttrInfo 5893ec3 Improved handling of location ID

v1.8.4

3 years ago

Changelog

This update mainly improves usage of tables. Most notably, h5pp now supports copying/moving records between tables on the same or different HDF5 files.

Changes that affect users are in bold:

093c865 Improved examples 25dbaa3 Fixes to pass CI tests a10cd61 New options to enable precompiled headers and/or ccache to speed up compilation of examples and tests 5c32254 Use std::filesystem::path where applicable 69fc060 Reverted hid::h5f comparison of file id's to stop using H5Iget_file_id() (performance) 9a943ac New sanity check when reading tables: Just return if there are no records to read e22e140 Changed std::string_view on h5pp::File constructor to an std::filesystem::path for broader compatibility e31b75f Updated internal type detection logic and compile time error messages. a442cba Removed unnecessary compile time check 00fa83a Fixed test by making sections independent b08b752 Log warning when passing empty data container to tables accd0f8 Fixed compression level detection for tables and datasets 84d97ab Fixed some sfinae detection of h5 objects 9308449 Safer checks for when two file_id's point to the same file b6a3705 Add static assert when checking log level type ce26a9b Fixed function call when copying/moving to and from location 4095f7d Added support for moving links within and between files 98318b2 Construct Names/Indices on assigmnent 3e98387 Added error message if no field names or indices are given 94fd1b7 Implement a subset of variant instead of using full variant for name/index argument wrapper ce2309f Continued transition to catch2 for testing 7ef07d7 Reduce log level in test 14ce0b8 Use std::begin/std::end to detect iterables instead of member functions .begin/.end 39b4067 New helper constants for failing static asserts ee6d66c Separate setting of numFields and numRecords when scanning table metadata ec2a16b New wrapper class for taking field indices or names in a flexible way f771897 Make sure hyperslab selection succeeds or throws error 22e5bf2 Added support for reading table records using table selection (like in appendTableRecords) 7a4d411 Added support for reading one or multiple columns of tables by specifying field indices or names 812a5ad Use std::begin()/std::end() instead of dims.begin()/dims.end(), and copy these using the std::vector constructor taking iterators to support more types 620133e Trying out packing and alignment in msvc/gcc/clang 4f54087 Fixing type detection of field names or indices f86d978 clang-format 26fefbe Improving examples f56df2d Reduced width 0cb60e5 Require that fieldNames and fieldTypes are defined before reading from a table ab681b7 Fixed reading table field entries and added support for reading multiple table columns 1c78831 Throw error on failure to read table field 4df65fe Fixed bug when reading individual table fields 69598d1 Simplify example on README.md 672971e Mention new h5du: https://github.com/DavidAce/h5du 2dffcae Add links to conan-center 186ded6 Updated quickstart examples

v1.8.3

3 years ago

Minor update: Small changes to the build process to conform with conan-center-index