Files
build/tools/aconfig/templates/cpp_exported_header.template
Dennis Shen e398144643 aconfig: cpp codegen update: Move server_configurable_flags header include
Move server_configurable_flags header include away from exported header,
instead put it in the flag provider headers. Otherwise, it can cause
compilation error if the source code who wants to use the generated c flag lib has
not added dependency on server_configurable_flags yet.

Bug: b/279483801
Test: atest aconfig.test
Change-Id: Ib75877ee88f995caf72b3fd2554c3da195032c14
2023-07-10 18:19:44 +00:00

46 lines
1.1 KiB
Plaintext

#ifndef {header}_HEADER_H
#define {header}_HEADER_H
#include <string>
#include <memory>
namespace {cpp_namespace} \{
class flag_provider_interface \{
public:
virtual ~flag_provider_interface() = default;
{{ for item in class_elements}}
virtual bool {item.flag_name}() = 0;
{{ endfor }}
virtual void override_flag(std::string const&, bool) \{}
virtual void reset_overrides() \{}
};
extern std::unique_ptr<flag_provider_interface> provider_;
{{ for item in class_elements}}
extern std::string const {item.uppercase_flag_name};{{ endfor }}
{{ for item in class_elements}}
inline bool {item.flag_name}() \{
{{ if for_prod }}
{{ if not item.readwrite- }}
return {item.default_value};
{{ -else- }}
return provider_->{item.flag_name}();
{{ -endif }}
{{ -else- }}
return provider_->{item.flag_name}();
{{ -endif }}
}
{{ endfor }}
inline void override_flag(std::string const& name, bool val) \{
return provider_->override_flag(name, val);
}
inline void reset_overrides() \{
return provider_->reset_overrides();
}
}
#endif