2012-06-24 17 views
6

मैं सोच रहा था कि सी एचडीएफ 5 बनाने और सी डेटा संरचना से कोड लिखने में सक्षम उपकरण था या नहीं।एचडीएफ 5 सी कोड पीढ़ी

मैं उस उपकरण को सी हेडर फ़ाइल को पार्स करना चाहता हूं और इसी सीडीएफ 5 को पढ़ने/लिखने के कोड उत्पन्न करना चाहता हूं।

कोई स्थिर आवंटन और गतिशील आवंटन के मामले को अलग कर सकता है। पहली बार, मुझे केवल स्थिर आवंटन में रुचि होगी।

उदाहरण के लिए, मैं संरचना सेंसर_टी की परिभाषा से निम्नलिखित कोड उत्पन्न करना चाहता हूं, जिसमें एक int और दो युगल शामिल हैं। प्रदर्शित कोड सीडी एचडीएफ 5 संरचना में एक टाइपपीफ सी स्ट्रक्चर का प्रत्यक्ष रूपांतरण है।

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.hdfgroup.org

बिना HDF वेबसाइट पर ध्यान दिया है मैं जानता हूँ कि कुछ एक पर्ल स्क्रिप्ट

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

उत्तर

2

दिलचस्प साथ HDF4 के लिए कोशिश की है। नेटसीडीएफ भूमि में "ncgen" है। नेटसीडीएफ -4 ने यौगिक प्रकारों के विचार को पेश किया। नेटसीडीएफ 4 अंतर्निहित कंटेनर प्रारूप के रूप में एचडीएफ 5 फ़ाइल प्रारूप का भी उपयोग कर सकता है।

इसलिए, यह एक सी हेडर फाइल नहीं लगेगा, लेकिन 'सीडीएल' मार्कअप बहुत सरल है:

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

// global attributes: 

तो फिर तुम कि से बाहर netcdf सी कोड बना सकते हैं:

ncgen -c mine.cdl 

यह वही नहीं है जो आप चाहते हैं। यह वास्तव में आप वास्तव में नहीं चाहते हैं, लेकिन यह शायद सबसे निकटतम है जिसे आप अभी प्राप्त कर सकते हैं।

संबंधित मुद्दे