Dennis Shen | 5c24213 | 2023-07-14 14:57:08 +0000 | [diff] [blame] | 1 | #pragma once |
| 2 | |
Dennis Shen | 8d544f7 | 2023-06-29 00:45:42 +0000 | [diff] [blame] | 3 | #include "{header}.h" |
| 4 | |
Dennis Shen | e398144 | 2023-07-10 18:15:42 +0000 | [diff] [blame] | 5 | {{ if readwrite }} |
| 6 | #include <server_configurable_flags/get_flags.h> |
Dennis Shen | e398144 | 2023-07-10 18:15:42 +0000 | [diff] [blame] | 7 | {{ endif }} |
| 8 | |
Dennis Shen | 8d544f7 | 2023-06-29 00:45:42 +0000 | [diff] [blame] | 9 | #include <unordered_map> |
Dennis Shen | 5c24213 | 2023-07-14 14:57:08 +0000 | [diff] [blame] | 10 | #include <string> |
Dennis Shen | 8d544f7 | 2023-06-29 00:45:42 +0000 | [diff] [blame] | 11 | |
| 12 | namespace {cpp_namespace} \{ |
| 13 | class flag_provider : public flag_provider_interface \{ |
| 14 | private: |
| 15 | std::unordered_map<std::string, bool> overrides_; |
Dennis Shen | 8d544f7 | 2023-06-29 00:45:42 +0000 | [diff] [blame] | 16 | |
| 17 | public: |
| 18 | flag_provider() |
Dennis Shen | 17a08eec | 2023-07-14 01:32:50 +0000 | [diff] [blame] | 19 | : overrides_() |
| 20 | \{} |
| 21 | |
Dennis Shen | 8d544f7 | 2023-06-29 00:45:42 +0000 | [diff] [blame] | 22 | {{ for item in class_elements}} |
| 23 | virtual bool {item.flag_name}() override \{ |
Dennis Shen | 17a08eec | 2023-07-14 01:32:50 +0000 | [diff] [blame] | 24 | auto it = overrides_.find("{item.flag_name}"); |
Dennis Shen | 8d544f7 | 2023-06-29 00:45:42 +0000 | [diff] [blame] | 25 | if (it != overrides_.end()) \{ |
| 26 | return it->second; |
| 27 | } else \{ |
| 28 | {{ if item.readwrite- }} |
Dennis Shen | 5c24213 | 2023-07-14 14:57:08 +0000 | [diff] [blame] | 29 | return server_configurable_flags::GetServerConfigurableFlag( |
Dennis Shen | 8d544f7 | 2023-06-29 00:45:42 +0000 | [diff] [blame] | 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 Shen | 8d544f7 | 2023-06-29 00:45:42 +0000 | [diff] [blame] | 38 | |
Dennis Shen | 17a08eec | 2023-07-14 01:32:50 +0000 | [diff] [blame] | 39 | 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 Shen | 8d544f7 | 2023-06-29 00:45:42 +0000 | [diff] [blame] | 45 | overrides_.clear(); |
| 46 | } |
| 47 | }; |
| 48 | } |