HDF5 C代码生成

Gui*_*not 6 c api code-generation hdf5

我想知道是否有工具能够从C数据结构生成C HDF5读写代码.

我希望该工具解析C头文件并生成相应的C HDF5读/写代码.

可以区分静态分配和动态分配的情况.在第一次,我只对静态分配感兴趣.

例如,我想从结构sensor_t的定义生成以下代码,其中包含一个int和两个double.显示的代码是将typedef C结构直接转换为C HDF5结构.

typedef struct {
    int     serial_no;
    double  temperature;
    double  pressure;
} sensor_t;

#include "hdf5.h"
hid_t memtype;
herr_t      status;
memtype = H5Tcreate (H5T_COMPOUND, sizeof (sensor_t));
status = H5Tinsert (memtype, "serial_no",    HOFFSET (sensor_t, serial_no), H5T_NATIVE_INT);
status = H5Tinsert (memtype, "temperature",  HOFFSET (sensor_t, temperature), H5T_NATIVE_DOUBLE);
status = H5Tinsert (memtype, "pressure",     HOFFSET (sensor_t, pressure), H5T_NATIVE_DOUBLE);


sensor_t    wdata[1];
status = H5Dread (dset, memtype, H5S_ALL, H5S_ALL, H5P_DEFAULT, rdata);
status = H5Dwrite (dset, memtype, H5S_ALL, H5S_ALL, H5P_DEFAULT, wdata);
Run Code Online (Sandbox Code Playgroud)

我查看了hdf网站但没有成功

http://www.hdfgroup.org

我知道有些人尝试过使用Perl脚本的HDF4

http://www.srl.caltech.edu/ACE/ASC/exhdfgen/index.htm

Rob*_*ham 2

有趣的。在 NetCDF 土地上有“ncgen”。NetCDF-4 引入了复合类型的概念。NetCDF4 还可以使用 HDF5 文件格式作为底层容器格式。

因此,它不需要 C 头文件,但“CDL”标记非常简单:

netcdf demo {
types:
  compound mything {
    int id ;
    double d1 ;
    double d2 ;
  }; // mything
dimensions:
        d1 = 1 ;
variables:
        mything v1(d1) ;

// global attributes:
Run Code Online (Sandbox Code Playgroud)

然后你可以用它来编写 netcdf C 代码:

ncgen -c mine.cdl
Run Code Online (Sandbox Code Playgroud)

这不完全是你想要的。这根本不是您真正想要的,但它可能是您现在可以获得的最接近的。