2012-06-24 4 views
6

C 데이터 구조에서 C HDF5 읽기 및 쓰기 코드를 생성 할 수있는 도구가 있는지 궁금합니다.HDF5 C 코드 생성

나는이 도구를 사용하여 C 헤더 파일을 구문 분석하고 해당 C HDF5 읽기/쓰기 코드를 생성하고 싶습니다.

정적 할당과 동적 할당의 경우를 구별 할 수 있습니다. 처음으로 정적 할당에만 관심이있었습니다.

예를 들어, 하나의 int와 두 개의 double을 포함하는 sensor_t 구조의 정의에서 다음 코드를 생성하고 싶습니다. 표시되는 코드는 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

재미있는 펄 스크립트와 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 

정확히 원하는 것은 아닙니다. 그것은 정말로 당신이 원하는 것만은 아니지만 아마 지금 당신이 얻을 수있는 가장 가까운 것일 것입니다.