blob: 289e2990967f5b48de84e61a1613d835790a3421 [file] [log] [blame]
Dennis Shen8d544f72023-06-29 00:45:42 +00001#include "{header}.h"
Joe Onoratoac692c52023-07-18 17:29:14 -07002{{ if readwrite }}
3#include <server_configurable_flags/get_flags.h>
4{{ endif }}
Dennis Shen8d544f72023-06-29 00:45:42 +00005
6namespace {cpp_namespace} \{
Joe Onoratoac692c52023-07-18 17:29:14 -07007
8{{ if for_test }}
9 class flag_provider : public flag_provider_interface \{
10 private:
11 std::unordered_map<std::string, bool> overrides_;
12
13 public:
14 flag_provider()
15 : overrides_()
16 \{}
17
18 {{ for item in class_elements}}
19 virtual bool {item.flag_name}() override \{
20 auto it = overrides_.find("{item.flag_name}");
21 if (it != overrides_.end()) \{
22 return it->second;
23 } else \{
24 {{ if item.readwrite- }}
25 return server_configurable_flags::GetServerConfigurableFlag(
26 "{item.device_config_namespace}",
27 "{item.device_config_flag}",
28 "{item.default_value}") == "true";
29 {{ -else- }}
30 return {item.default_value};
31 {{ -endif }}
32 }
33 }
34
35 virtual void {item.flag_name}(bool val) override \{
36 overrides_["{item.flag_name}"] = val;
37 }
38 {{ endfor }}
39
40 virtual void reset_flags() override \{
41 overrides_.clear();
42 }
43 };
44
45{{ -else- }}
46
47 class flag_provider : public flag_provider_interface \{
48 public:
49 {{ for item in class_elements}}
50 virtual bool {item.flag_name}() override \{
51 {{ if item.readwrite- }}
52 return server_configurable_flags::GetServerConfigurableFlag(
53 "{item.device_config_namespace}",
54 "{item.device_config_flag}",
55 "{item.default_value}") == "true";
56 {{ -else- }}
57 return {item.default_value};
58 {{ -endif }}
59 }
60 {{ endfor }}
61 };
62
63
64{{ -endif }}
65
66
Dennis Shen8d544f72023-06-29 00:45:42 +000067std::unique_ptr<flag_provider_interface> provider_ =
68 std::make_unique<flag_provider>();
Joe Onoratoac692c52023-07-18 17:29:14 -070069
Dennis Shen8d544f72023-06-29 00:45:42 +000070}
Joe Onoratoac692c52023-07-18 17:29:14 -070071
72
73{{ for item in class_elements}}
74bool {header}_{item.flag_name}() \{
75 {{ if for_test }}
76 return {cpp_namespace}::{item.flag_name}();
77 {{ -else- }}
78 {{ if not item.readwrite- }}
79 return {item.default_value};
80 {{ -else- }}
81 return {cpp_namespace}::{item.flag_name}();
82 {{ -endif }}
83 {{ -endif }}
84}
85
86{{ if for_test }}
87void set_{header}_{item.flag_name}(bool val) \{
88 {cpp_namespace}::{item.flag_name}(val);
89}
90{{ -endif }}
91{{ endfor -}}
92
93{{ if for_test }}
94void {header}_reset_flags() \{
95 {cpp_namespace}::reset_flags();
96}
97{{ -endif }}
98