blob: afa56cff81ea17ac2713c0bb63dfafc3a931f2ab [file] [log] [blame]
Dennis Shen8d544f72023-06-29 00:45:42 +00001#ifndef {header}_flag_provider_HEADER_H
2#define {header}_flag_provider_HEADER_H
3#include "{header}.h"
4
Dennis Shene3981442023-07-10 18:15:42 +00005{{ if readwrite }}
6#include <server_configurable_flags/get_flags.h>
7using namespace server_configurable_flags;
8{{ endif }}
9
Dennis Shen8d544f72023-06-29 00:45:42 +000010#include <unordered_map>
Dennis Shen8d544f72023-06-29 00:45:42 +000011
12namespace {cpp_namespace} \{
13class flag_provider : public flag_provider_interface \{
14private:
15 std::unordered_map<std::string, bool> overrides_;
Dennis Shen8d544f72023-06-29 00:45:42 +000016
17public:
18 flag_provider()
Dennis Shen17a08eec2023-07-14 01:32:50 +000019 : overrides_()
20 \{}
21
Dennis Shen8d544f72023-06-29 00:45:42 +000022 {{ for item in class_elements}}
23 virtual bool {item.flag_name}() override \{
Dennis Shen17a08eec2023-07-14 01:32:50 +000024 auto it = overrides_.find("{item.flag_name}");
Dennis Shen8d544f72023-06-29 00:45:42 +000025 if (it != overrides_.end()) \{
26 return it->second;
27 } else \{
28 {{ if item.readwrite- }}
29 return GetServerConfigurableFlag(
30 "{item.device_config_namespace}",
31 "{item.device_config_flag}",
32 "{item.default_value}") == "true";
33 {{ -else- }}
34 return {item.default_value};
35 {{ -endif }}
36 }
37 }
Dennis Shen8d544f72023-06-29 00:45:42 +000038
Dennis Shen17a08eec2023-07-14 01:32:50 +000039 virtual void {item.flag_name}(bool val) override \{
40 overrides_["{item.flag_name}"] = val;
41 }
42 {{ endfor }}
43
44 virtual void reset_flags() override \{
Dennis Shen8d544f72023-06-29 00:45:42 +000045 overrides_.clear();
46 }
47};
48}
49#endif