2012-06-24 11 views
6

Cのデータ構造からCのHDF5読み書きコードを生成できるツールがあるのだろうかと思っていました。HDF5 Cコード生成

私はこのツールを使ってCヘッダーファイルを解析し、対応するC HDF5読み取り/書き込みコードを生成したいと考えています。

静的割り当てと動的割り当ての場合を区別できます。 初めて、私は静的割り当てにのみ興味があります。

たとえば、構造体sensor_tの定義から次のコードを生成したいと思います.1つのintと2つの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); 

私はいくつかの

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

答えて

2

興味深いPerlスクリプトでHDF4のために試してみました知っている成功

http://www.hdfgroup.org

なしHDFのウェブサイト上で見てきました。 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: 

その後、あなたはそれのうち、netCDFのCコードを行うことができます。

ncgen -c mine.cdl 

それはあなたが望むものではありません。それは本当にあなたが望むものではありませんが、おそらくあなたが今すぐに得ることができる最も近いでしょう。