Zero  0.1.0
sm_options.h
Go to the documentation of this file.
1 /*
2  * (c) Copyright 2014-, Hewlett-Packard Development Company, LP
3  */
4 
5 #ifndef __SM_OPTIONS_H
6 #define __SM_OPTIONS_H
7 
8 #include <cstdint>
9 #include <string>
10 #include <map>
11 
12 // MG TODO: Rewrite as singleton!
13 
24 class sm_options {
25 public:
27  sm_options();
28 
30  sm_options(const sm_options& other);
31 
38  int64_t get_int_option(const std::string& option_name, int64_t default_value) const;
39 
46  bool get_bool_option(const std::string& option_name, bool default_value) const;
47 
54  const std::string& get_string_option(const std::string& option_name, const std::string& default_value) const;
55 
61  void set_int_option(const std::string& option_name, int64_t value);
62 
68  void set_bool_option(const std::string& option_name, bool value);
69 
75  void set_string_option(const std::string& option_name, const std::string& value);
76 
77 private:
79  std::map<std::string, int64_t> _int_options;
80 
82  std::map<std::string, bool> _bool_options;
83 
85  std::map<std::string, std::string> _string_options;
86 
87  // so far no floating point options. we can use integer with scales.
88 };
89 
90 
91 // old name in Shore-MT just for compatibility.
92 // typedef sm_options option_group_t;
93 
95 
96 inline sm_options::sm_options(const sm_options& other)
97  : _int_options(other._int_options),
100 
101 template<typename V>
103  const std::map<std::string, V>& the_map, const std::string& option_name, const V& default_value) {
104  typename std::map<std::string, V>::const_iterator it = the_map.find(option_name);
105  if (it == the_map.end()) {
106  return default_value;
107  } else {
108  return it->second;
109  }
110 }
111 
112 inline int64_t sm_options::get_int_option(const std::string& option_name, int64_t default_value) const {
113  return get_option_with_default<int64_t>(_int_options, option_name, default_value);
114 }
115 
116 inline bool sm_options::get_bool_option(const std::string& option_name, bool default_value) const {
117  return get_option_with_default<bool>(_bool_options, option_name, default_value);
118 }
119 
120 inline const std::string& sm_options::get_string_option(const std::string& option_name,
121  const std::string& default_value) const {
122  return get_option_with_default<std::string>(_string_options, option_name, default_value);
123 }
124 
125 inline void sm_options::set_int_option(const std::string& option_name, int64_t value) {
126  _int_options[option_name] = value;
127 }
128 
129 inline void sm_options::set_bool_option(const std::string& option_name, bool value) {
130  _bool_options[option_name] = value;
131 }
132 
133 inline void sm_options::set_string_option(const std::string& option_name, const std::string& value) {
134  _string_options[option_name] = value;
135 }
136 
137 #endif // __SM_OPTIONS_H
void set_bool_option(const std::string &option_name, bool value)
Definition: sm_options.h:129
Start-up parameters for the storage engine. See OPTIONS.
Definition: sm_options.h:24
bool get_bool_option(const std::string &option_name, bool default_value) const
Definition: sm_options.h:116
std::map< std::string, std::string > _string_options
Definition: sm_options.h:85
int64_t get_int_option(const std::string &option_name, int64_t default_value) const
Definition: sm_options.h:112
const V & get_option_with_default(const std::map< std::string, V > &the_map, const std::string &option_name, const V &default_value)
Definition: sm_options.h:102
std::map< std::string, int64_t > _int_options
Definition: sm_options.h:79
void set_string_option(const std::string &option_name, const std::string &value)
Definition: sm_options.h:133
void set_int_option(const std::string &option_name, int64_t value)
Definition: sm_options.h:125
std::map< std::string, bool > _bool_options
Definition: sm_options.h:82
const std::string & get_string_option(const std::string &option_name, const std::string &default_value) const
Definition: sm_options.h:120
sm_options()
Definition: sm_options.h:94