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
46 lines
1.1 KiB
Plaintext
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
|