1 #pragma once
2 
3 #ifndef ANDROID_UPROBESTATS_MAINLINE_FLAGS
4 #define ANDROID_UPROBESTATS_MAINLINE_FLAGS(FLAG) ANDROID_UPROBESTATS_MAINLINE_FLAGS_##FLAG
5 #endif
6 
7 #ifndef ANDROID_UPROBESTATS_MAINLINE_FLAGS_ENABLE_UPROBESTATS
8 #define ANDROID_UPROBESTATS_MAINLINE_FLAGS_ENABLE_UPROBESTATS false
9 #endif
10 #ifndef ANDROID_UPROBESTATS_MAINLINE_FLAGS_EXECUTABLE_METHOD_FILE_OFFSETS
11 #define ANDROID_UPROBESTATS_MAINLINE_FLAGS_EXECUTABLE_METHOD_FILE_OFFSETS false
12 #endif
13 #ifndef ANDROID_UPROBESTATS_MAINLINE_FLAGS_UPROBESTATS_SUPPORT_UPDATE_DEVICE_IDLE_TEMP_ALLOWLIST
14 #define ANDROID_UPROBESTATS_MAINLINE_FLAGS_UPROBESTATS_SUPPORT_UPDATE_DEVICE_IDLE_TEMP_ALLOWLIST false
15 #endif
16 
17 #ifdef __cplusplus
18 
19 #include <memory>
20 
21 namespace android::uprobestats::mainline::flags {
22 
23 class flag_provider_interface {
24 public:
25     virtual ~flag_provider_interface() = default;
26     virtual bool enable_uprobestats() = 0;
27     virtual bool executable_method_file_offsets() = 0;
28     virtual bool uprobestats_support_update_device_idle_temp_allowlist() = 0;
29 };
30 
31 extern std::unique_ptr<flag_provider_interface> provider_;
32 
33 
enable_uprobestats()34 inline bool enable_uprobestats() {
35     return ANDROID_UPROBESTATS_MAINLINE_FLAGS_ENABLE_UPROBESTATS;
36 }
executable_method_file_offsets()37 inline bool executable_method_file_offsets() {
38     return ANDROID_UPROBESTATS_MAINLINE_FLAGS_EXECUTABLE_METHOD_FILE_OFFSETS;
39 }
uprobestats_support_update_device_idle_temp_allowlist()40 inline bool uprobestats_support_update_device_idle_temp_allowlist() {
41     return ANDROID_UPROBESTATS_MAINLINE_FLAGS_UPROBESTATS_SUPPORT_UPDATE_DEVICE_IDLE_TEMP_ALLOWLIST;
42 }
43 
44 }
45 
46 extern "C" {
47 #endif // __cplusplus
48 
49 
50 bool android_uprobestats_mainline_flags_enable_uprobestats();
51 bool android_uprobestats_mainline_flags_executable_method_file_offsets();
52 bool android_uprobestats_mainline_flags_uprobestats_support_update_device_idle_temp_allowlist();
53 
54 #ifdef __cplusplus
55 } // extern "C"
56 #endif
57 
58