OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
SDDSColumnSet.h
Go to the documentation of this file.
1 #ifndef SDDSWRITERCOLUMNSET_H
2 #define SDDSWRITERCOLUMNSET_H
3 
4 #include "Structure/SDDSColumn.h"
6 
7 #include <string>
8 #include <ostream>
9 #include <vector>
10 #include <map>
11 
13 public:
14  SDDSColumnSet();
15 
16  void addColumn(const std::string& name,
17  const std::string& type,
18  const std::string& unit,
19  const std::string& desc,
20  std::ios_base::fmtflags flags = std::ios_base::scientific,
21  unsigned short precision = 15);
22 
23  template<typename T>
24  void addColumnValue(const std::string& name,
25  const T& val);
26 
27  void writeHeader(std::ostream& os,
28  const std::string& indent) const;
29 
30  void writeRow(std::ostream& os) const;
31 
32  bool hasColumns() const;
33 
34 private:
35  std::vector<SDDSColumn> columns_m;
36  std::map<std::string, unsigned int> name2idx_m;
37 };
38 
39 
40 inline
42 { }
43 
44 
45 template<typename T>
46 void SDDSColumnSet::addColumnValue(const std::string& name,
47  const T& val) {
48 
49  auto it = name2idx_m.find(name);
50  if (it == name2idx_m.end()) {
51  throw OpalException("SDDSColumnSet::addColumnValue",
52  "column name '" + name + "' doesn't exists");
53  }
54 
55  auto & col = columns_m[it->second];
56  col.addValue(val);
57 }
58 
59 
60 inline
62  return !name2idx_m.empty();
63 }
64 
65 
66 #endif
void writeRow(std::ostream &os) const
std::vector< SDDSColumn > columns_m
Definition: SDDSColumnSet.h:35
Definition: rbendmap.h:8
The base class for all OPAL exceptions.
Definition: OpalException.h:28
std::map< std::string, unsigned int > name2idx_m
Definition: SDDSColumnSet.h:36
void addColumnValue(const std::string &name, const T &val)
Definition: SDDSColumnSet.h:46
const std::string name
void addColumn(const std::string &name, const std::string &type, const std::string &unit, const std::string &desc, std::ios_base::fmtflags flags=std::ios_base::scientific, unsigned short precision=15)
void writeHeader(std::ostream &os, const std::string &indent) const
bool hasColumns() const
Definition: SDDSColumnSet.h:61