Geant4 Cross Reference |
1 // Copyright (C) 2010, Guy Barrand. All rights 1 // Copyright (C) 2010, Guy Barrand. All rights reserved. 2 // See the file tools.license for terms. 2 // See the file tools.license for terms. 3 3 4 #ifndef toolx_hdf5_header 4 #ifndef toolx_hdf5_header 5 #define toolx_hdf5_header 5 #define toolx_hdf5_header 6 6 7 #include "tools" 7 #include "tools" 8 #include "T_tools" 8 #include "T_tools" 9 9 10 namespace toolx { 10 namespace toolx { 11 namespace hdf5 { 11 namespace hdf5 { 12 12 13 inline bool write_header(hid_t a_file,int a_ve 13 inline bool write_header(hid_t a_file,int a_version = 1) { 14 hid_t header = toolx_H5Gcreate(a_file,"heade 14 hid_t header = toolx_H5Gcreate(a_file,"header",0); 15 if(header<0) return false; 15 if(header<0) return false; 16 if(!write_atb(header,"writer","exlib")) {::H 16 if(!write_atb(header,"writer","exlib")) {::H5Gclose(header);return false;} 17 if(!write_scalar_atb<int>(header,"data_schem 17 if(!write_scalar_atb<int>(header,"data_schema_version",a_version)) {::H5Gclose(header);return false;} 18 ::H5Gclose(header); 18 ::H5Gclose(header); 19 return true; 19 return true; 20 } 20 } 21 21 22 inline bool read_header(hid_t a_file,std::stri 22 inline bool read_header(hid_t a_file,std::string& a_writer,int& a_data_schema_version) { 23 hid_t header = toolx_H5Gopen(a_file,"header" 23 hid_t header = toolx_H5Gopen(a_file,"header"); 24 if(header<0) {a_writer.clear();a_data_schema 24 if(header<0) {a_writer.clear();a_data_schema_version=0;return false;} 25 if(!read_atb(header,"writer",a_writer)) {::H 25 if(!read_atb(header,"writer",a_writer)) {::H5Gclose(header);a_writer.clear();a_data_schema_version=0;return false;} 26 if(!read_atb(header,"data_schema_version",a_ 26 if(!read_atb(header,"data_schema_version",a_data_schema_version)) { 27 ::H5Gclose(header); 27 ::H5Gclose(header); 28 a_writer.clear();a_data_schema_version=0; 28 a_writer.clear();a_data_schema_version=0; 29 return false; 29 return false; 30 } 30 } 31 ::H5Gclose(header); 31 ::H5Gclose(header); 32 return true; 32 return true; 33 } 33 } 34 34 35 }} 35 }} 36 36 37 #endif 37 #endif