Light HDF5 Library

Light HDF5 Library

Green-h5pp

Light implementation for common routines to access hdf5 files. Interface uses same representation of complex numbers as in h5py.

Basic usage

green-h5pp is a C++ library that provides basic routines to operate with HDF5 data. It uses operator << and operator >> to write and read data. It will automatically create dataset and all the whole tree of parent groups this dataset belongs to.

To add this library into your project, first

Include(FetchContent)

FetchContent_Declare(
        green-h5pp
        GIT_REPOSITORY https://github.com/Green-Phys/green-h5pp.git
        GIT_TAG origin/main # or a later release
)
FetchContent_MakeAvailable(green-h5pp)

Add predefined alias GREEN::H5PP it to your target:

target_link_libraries(<target> PUBLIC GREEN::H5PP)

And then simply include the following header:

#include <green/h5pp/archive.h>

Here is a small example of some possible operations:

using namespace green::h5pp;

// Open file for write (file will be purged if previously available)
archive ar("filename", "w")

// Create group 'test' and dataset 'data' and write scalar into it
ar["test/data"] << 10.0;

// If datatype has method 'shape()' it will be considered as multidimensional data.
// If datatype has method 'size()' it will be cosidered as a one-dimensional data.

// Here we create vector with 100 elements and write it into dataset 'vector'
std::vector<double> vector(100);
ar["test/vector"] << vector;

// For std::complex types it will create a composite type for <real, imag> pairs

std::complex<double> complex;
ar["test/complex"] << complex;