hdf5_utils.cpp
1 #include "hdf5_utils.hpp"
2 #include "utils.hpp"
3 
4 using namespace H5;
5 
6 HDF5Shortcut::HDF5Shortcut(const string& fname):
7  fname_(fname), double_data_(), int_data_() {}
8 
9 HDF5Shortcut& HDF5Shortcut::operator()(const string& field_name,
10  const vector<double>& data_set)
11 {
12  double_data_.push_back(pair<string,vector<double> >
13  (field_name,data_set));
14  return *this;
15 }
16 
17 HDF5Shortcut& HDF5Shortcut::operator()(const string& field_name,
18  const vector<int>& data_set)
19 {
20  int_data_.push_back(pair<string,vector<int> >
21  (field_name,data_set));
22  return *this;
23 }
24 
26 (const Group& file,
27  const vector<double>& data,
28  const string& caption)
29 {
30  FloatType datatype(PredType::NATIVE_DOUBLE);
31  datatype.setOrder(H5T_ORDER_LE);
33  (file,
34  data,
35  caption,
36  datatype);
37 }
38 
40 (const Group& file,
41  const vector<int>& data,
42  const string& caption)
43 {
44  IntType datatype(PredType::NATIVE_INT);
45  datatype.setOrder(H5T_ORDER_LE);
47  (file,
48  data,
49  caption,
50  datatype);
51 }
52 
54 {
55  H5File file(H5std_string(fname_), H5F_ACC_TRUNC);
56  for(size_t i=0;i<double_data_.size();++i)
57  write_std_vector_to_hdf5(file, double_data_[i].second, double_data_[i].first);
58  for(size_t i=0;i<int_data_.size();++i)
59  write_std_vector_to_hdf5(file, int_data_[i].second, int_data_[i].first);
60 }
Various useful functions.
Facilitates writing hdf5 files.
Definition: hdf5_utils.hpp:75
void write_std_vector_to_hdf5(const Group &file, const vector< T > &data, const string &caption, const DataType &dt)
Master function for writing vectors to hdf5 files.
Definition: hdf5_utils.hpp:31
~HDF5Shortcut(void)
Class destructor. This is the stage when the file is written.
Definition: hdf5_utils.cpp:53
Higher level hdf5 utilities.
HDF5Shortcut(const string &fname)
Class constructor.
Definition: hdf5_utils.cpp:6
HDF5Shortcut & operator()(const string &field_name, const vector< double > &data_set)
adds dataset
Definition: hdf5_utils.cpp:9