yaml_utils.hpp
Go to the documentation of this file.
1 #ifndef RAM_UTILS_YAML_UTILS_HPP
2 #define RAM_UTILS_YAML_UTILS_HPP
3 
4 #include <iostream>
5 #include <yaml-cpp/yaml.h>
6 
7 namespace yaml_parser
8 {
9 inline bool parseDouble(const YAML::Node &node,
10  char const *var_name,
11  double &var_value)
12 {
13  if (!node[var_name])
14  return false;
15 
16  var_value = node[var_name].as<double>();
17  return true;
18 }
19 
20 inline bool parseInt(const YAML::Node &node,
21  char const *var_name,
22  int &var_value)
23 {
24  if (!node[var_name])
25  return false;
26 
27  var_value = node[var_name].as<int>();
28  return true;
29 }
30 
31 inline bool parseUInt(const YAML::Node &node,
32  char const *var_name,
33  unsigned int &var_value)
34 {
35  if (!node[var_name])
36  return false;
37 
38  var_value = node[var_name].as<unsigned int>();
39  return true;
40 }
41 
42 inline bool parseString(const YAML::Node &node,
43  char const *var_name,
44  std::string &var_value)
45 {
46  if (!node[var_name])
47  return false;
48 
49  var_value = node[var_name].as<std::string>();
50  return true;
51 }
52 
53 inline bool parseBool(const YAML::Node &node,
54  char const *var_name,
55  bool &var_value)
56 {
57  if (!node[var_name])
58  return false;
59 
60  var_value = node[var_name];
61  return true;
62 }
63 
64 inline bool parseVectorB(const YAML::Node &node,
65  char const *var_name,
66  std::vector<bool> &var_value)
67 {
68  if (!node[var_name])
69  return false;
70 
71  var_value.clear();
72  const YAML::Node n = node[var_name];
73  for (int i = 0; i < (int)n.size(); i++)
74  {
75  double value;
76  value = n[i].as<bool>();
77  var_value.push_back(value);
78  }
79  return true;
80 }
81 
82 inline bool parseVectorD(const YAML::Node &node,
83  char const *var_name,
84  std::vector<double> &var_value)
85 {
86  if (!node[var_name])
87  return false;
88 
89  var_value.clear();
90  const YAML::Node n = node[var_name];
91  for (int i = 0; i < (int)n.size(); i++)
92  {
93  double value;
94  value = n[i].as<double>();
95  var_value.push_back(value);
96  }
97  return true;
98 }
99 
100 inline const YAML::Node parseNode(const YAML::Node &node,
101  char const *var_name)
102 {
103  if (!node[var_name])
104  std::cout << "Can't parse node " << var_name << std::endl;
105  return (node[var_name]);
106 }
107 
108 inline void parseKeyDValue(YAML::const_iterator &it,
109  std::string &key,
110  double &dvalue)
111 {
112  key = it->first.as<std::string>();
113  dvalue = it->second.as<double>();
114 }
115 
116 inline bool yamlNodeFromFileName(const std::string filename,
117  YAML::Node &ynode)
118 {
119  bool rtn = true;
120  try
121  {
122  ynode = YAML::LoadFile(filename.c_str());
123  }
124  catch (int e)
125  {
126  std::cout << "could not open %s in yamlNodeFromFileName()" << filename << std::endl;
127  rtn = false;
128  }
129  return (rtn);
130 }
131 
132 }
133 
134 #endif
bool parseBool(const YAML::Node &node, char const *var_name, bool &var_value)
Definition: yaml_utils.hpp:53
bool parseVectorD(const YAML::Node &node, char const *var_name, std::vector< double > &var_value)
Definition: yaml_utils.hpp:82
void parseKeyDValue(YAML::const_iterator &it, std::string &key, double &dvalue)
Definition: yaml_utils.hpp:108
bool parseInt(const YAML::Node &node, char const *var_name, int &var_value)
Definition: yaml_utils.hpp:20
const YAML::Node parseNode(const YAML::Node &node, char const *var_name)
Definition: yaml_utils.hpp:100
bool parseString(const YAML::Node &node, char const *var_name, std::string &var_value)
Definition: yaml_utils.hpp:42
bool parseVectorB(const YAML::Node &node, char const *var_name, std::vector< bool > &var_value)
Definition: yaml_utils.hpp:64
bool parseUInt(const YAML::Node &node, char const *var_name, unsigned int &var_value)
Definition: yaml_utils.hpp:31
bool parseDouble(const YAML::Node &node, char const *var_name, double &var_value)
Definition: yaml_utils.hpp:9
bool yamlNodeFromFileName(const std::string filename, YAML::Node &ynode)
Definition: yaml_utils.hpp:116


ram_utils
Author(s): Victor Lamoine - Institut Maupertuis
autogenerated on Mon Jun 10 2019 14:49:54