blob: e244de3d6210538bede181bf7b8e31d612fe0bad [file] [log] [blame]
Dennis Shen8d544f72023-06-29 00:45:42 +00001#ifndef {header}_HEADER_H
2#define {header}_HEADER_H
3
4#include <string>
5#include <memory>
6{{ if readwrite }}
7#include <server_configurable_flags/get_flags.h>
8using namespace server_configurable_flags;
9{{ endif }}
10namespace {cpp_namespace} \{
11
12class flag_provider_interface \{
13public:
14 virtual ~flag_provider_interface() = default;
15 {{ for item in class_elements}}
16 virtual bool {item.flag_name}() = 0;
17 {{ endfor }}
18 virtual void override_flag(std::string const&, bool) \{}
19
20 virtual void reset_overrides() \{}
21};
22
23extern std::unique_ptr<flag_provider_interface> provider_;
24{{ for item in class_elements}}
25extern std::string const {item.uppercase_flag_name};{{ endfor }}
26{{ for item in class_elements}}
27inline bool {item.flag_name}() \{
28 {{ if for_prod }}
29 {{ if not item.readwrite- }}
30 return {item.default_value};
31 {{ -else- }}
32 return provider_->{item.flag_name}();
33 {{ -endif }}
34 {{ -else- }}
35 return provider_->{item.flag_name}();
36 {{ -endif }}
37}
38{{ endfor }}
39inline void override_flag(std::string const& name, bool val) \{
40 return provider_->override_flag(name, val);
41}
42
43inline void reset_overrides() \{
44 return provider_->reset_overrides();
45}
46
47}
48#endif