g4tools  5.4.0
atb
Go to the documentation of this file.
1 // Copyright (C) 2010, Guy Barrand. All rights reserved.
2 // See the file tools.license for terms.
3 
4 #ifndef tools_hdf5_atb
5 #define tools_hdf5_atb
6 
7 // The below is internal methods in the HDF5 lib.
8 
9 #include "hdf5_h"
10 
11 #include <cstring>
12 
13 namespace tools {
14 namespace hdf5 {
15 
16 inline herr_t H5LT_get_attribute_mem(hid_t obj_id,const char *attr_name,hid_t mem_type_id,void *data ) {
17  hid_t attr_id;
18  if ( ( attr_id = ::H5Aopen_name( obj_id, attr_name ) ) < 0 ) return -1;
19  if ( ::H5Aread( attr_id, mem_type_id, data ) < 0 ) {
20  ::H5Aclose( attr_id );
21  return -1;
22  }
23  if ( ::H5Aclose( attr_id ) < 0 ) return -1;
24  return 0;
25 }
26 
27 inline herr_t find_attr( hid_t loc_id, const char *name, void *op_data) {
28  int ret = 0;
29  char *attr_name = (char*)op_data;
30  if( ::strcmp( name, attr_name ) == 0 ) ret = 1;
31  (void)loc_id;
32  return ret;
33 }
34 
35 inline herr_t H5LT_find_attribute( hid_t loc_id, const char* attr_name ) {
36  unsigned int attr_num;
37  attr_num = 0;
38  return tools_H5Aiterate( loc_id, &attr_num, find_attr, (void *)attr_name );
39 }
40 
41 inline herr_t H5LT_get_attribute_disk( hid_t loc_id,const char *attr_name,void *attr_out ) {
42  hid_t attr_id;
43  if ( ( attr_id = ::H5Aopen_name( loc_id, attr_name ) ) < 0 ) return -1;
44 
45  hid_t attr_type;
46  if ( (attr_type = ::H5Aget_type( attr_id )) < 0 ) {
47  ::H5Tclose( attr_type );
48  ::H5Aclose( attr_id );
49  return -1;
50  }
51 
52  if ( ::H5Aread( attr_id, attr_type, attr_out ) < 0 ) {
53  ::H5Tclose( attr_type );
54  ::H5Aclose( attr_id );
55  return -1;
56  }
57 
58  if ( ::H5Tclose( attr_type ) < 0 ) {
59  ::H5Tclose( attr_type );
60  ::H5Aclose( attr_id );
61  return -1;
62  }
63 
64  if ( ::H5Aclose( attr_id ) < 0 ) return -1;
65 
66  return 0;
67 
68 }
69 
70 }}
71 
72 #endif
tools::hdf5::H5LT_find_attribute
herr_t H5LT_find_attribute(hid_t loc_id, const char *attr_name)
Definition: atb:35
tools_H5Aiterate
#define tools_H5Aiterate
Definition: hdf5_h:32
tools
inlined C code : ///////////////////////////////////
Definition: aida_ntuple:26
tools::hdf5::find_attr
herr_t find_attr(hid_t loc_id, const char *name, void *op_data)
Definition: atb:27
tools::hdf5::H5LT_get_attribute_disk
herr_t H5LT_get_attribute_disk(hid_t loc_id, const char *attr_name, void *attr_out)
Definition: atb:41
tools::hdf5::H5LT_get_attribute_mem
herr_t H5LT_get_attribute_mem(hid_t obj_id, const char *attr_name, hid_t mem_type_id, void *data)
Definition: atb:16
hdf5_h