From 6050e2ac8f34e5be90ce5e2f73fdcd7971adf32c Mon Sep 17 00:00:00 2001 From: Maksym Malyhin Date: Tue, 13 Jul 2021 10:24:46 -0400 Subject: [PATCH] Ues __extension__ to make runtime availability check --- GoogleUtilities/Logger/GULSignpostLogger.m | 10 +++-- .../GoogleUtilities/GULSignpostLogger.h | 39 +++++++++++++------ 2 files changed, 34 insertions(+), 15 deletions(-) diff --git a/GoogleUtilities/Logger/GULSignpostLogger.m b/GoogleUtilities/Logger/GULSignpostLogger.m index 486192d..70fcbc7 100644 --- a/GoogleUtilities/Logger/GULSignpostLogger.m +++ b/GoogleUtilities/Logger/GULSignpostLogger.m @@ -18,10 +18,14 @@ gul_os_log_t _gul_default_signpost_log(void) { return _default_signpost_log; } -void _gul_os_signpost_interval_begin(gul_os_log_t log, gul_os_signpost_id_t interval_id, const char *name, ...) { +gul_os_signpost_id_t gul_os_signpost_id_generate(gul_os_log_t log) { +#if __has_include() if (@available(iOS 12.0, *)) { - os_signpost_interval_begin(log, interval_id, name, "" __VA_ARGS__); + return os_signpost_id_generate(log); } else { - // Fallback on earlier versions + return 0; } +#else // __has_include() + return 0; +#endif // __has_include() } diff --git a/GoogleUtilities/Logger/Public/GoogleUtilities/GULSignpostLogger.h b/GoogleUtilities/Logger/Public/GoogleUtilities/GULSignpostLogger.h index 689f713..5fbea08 100644 --- a/GoogleUtilities/Logger/Public/GoogleUtilities/GULSignpostLogger.h +++ b/GoogleUtilities/Logger/Public/GoogleUtilities/GULSignpostLogger.h @@ -13,36 +13,50 @@ typedef os_log_t gul_os_log_t; typedef os_signpost_id_t gul_os_signpost_id_t; -// See `os_signpost_id_generate`. -#define gul_os_signpost_id_generate(log) \ - os_signpost_id_generate(log) - // See `os_signpost_interval_begin`. #define gul_os_signpost_interval_begin(log, interval_id, name, ...) \ - _gul_os_signpost_interval_begin(log, interval_id, name, ##__VA_ARGS__) + __extension__({ \ + if (@available(iOS 12.0, *)) { \ + os_signpost_interval_begin(log, interval_id, name, "" __VA_ARGS__); \ + } \ + }) // See `os_signpost_interval_end`. #define gul_os_signpost_interval_end(log, interval_id, name, ...) \ - os_signpost_interval_end(log, interval_id, name, ##__VA_ARGS__) + __extension__({ \ + if (@available(iOS 12.0, *)) { \ + os_signpost_interval_end(log, interval_id, name, "" __VA_ARGS__); \ + } \ + }) // See `os_signpost_interval_end`. #define gul_os_signpost_interval_emit(log, event_id, name, ...) \ - os_signpost_interval_emit(log, event_id, name, ##__VA_ARGS__) + __extension__({ \ + if (@available(iOS 12.0, *)) { \ + os_signpost_interval_end(log, event_id, name, "" __VA_ARGS__); \ + } \ + }) // See `_gul_default_signpost_log`. #define gul_default_signpost_log() \ _gul_default_signpost_log() + +#define _gul_os_signpost_interval_begin(log, interval_id, name, ...) \ + __extension__({ \ + if (@available(iOS 12.0, *)) { \ + os_signpost_interval_begin(log, interval_id, name, "" __VA_ARGS__); \ + } \ + }) + #else // __has_include() // Placeholders for the signpost API methods and types when it's not available. typedef void gul_os_log_t; -typedef void gul_os_signpost_id_t; +typedef uint64_t gul_os_signpost_id_t; -#define gul_os_signpost_id_generate(log) - -//#define gul_os_signpost_interval_begin(log, interval_id, name, ...) +#define gul_os_signpost_interval_begin(log, interval_id, name, ...) #define gul_os_signpost_interval_end(log, interval_id, name, ...) @@ -56,4 +70,5 @@ typedef void gul_os_signpost_id_t; /// @return A default instance of `gul_os_log_t`. gul_os_log_t _gul_default_signpost_log(void); -void _gul_os_signpost_interval_begin(gul_os_log_t log, gul_os_signpost_id_t interval_id, const char *name, ...); +// See `os_signpost_id_generate`. +gul_os_signpost_id_t gul_os_signpost_id_generate(gul_os_log_t log);