Add some format_as() functions in the bt2 and bt2c namespaces that will
apply to all wise enums defined in that namespace.
Change-Id: I4952f062fc36e94925d2f0b093ac09d0fae6fdc0
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/12248
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
Tested-by: jenkins <jenkins@lttng.org>
#include "common/common.h"
#include "cpp-common/bt2/message.hpp"
#include "cpp-common/vendor/fmt/format.h" /* IWYU pragma: keep */
#include "common/common.h"
#include "cpp-common/bt2/message.hpp"
#include "cpp-common/vendor/fmt/format.h" /* IWYU pragma: keep */
+#include "cpp-common/vendor/wise-enum/wise_enum.h"
+namespace internal {
+
+template <typename T>
+using EnableIfIsWiseEnum =
+ typename std::enable_if<wise_enum::is_wise_enum<T>::value, const char *>::type;
+
+} /* namespace internal */
+
+template <typename T>
+::internal::EnableIfIsWiseEnum<T> format_as(const T val) noexcept
+{
+ return wise_enum::to_string<T>(val);
+}
+
inline const char *format_as(const MessageType type)
{
return bt_common_message_type_string(static_cast<bt_message_type>(type));
inline const char *format_as(const MessageType type)
{
return bt_common_message_type_string(static_cast<bt_message_type>(type));
+template <typename T>
+::internal::EnableIfIsWiseEnum<T> format_as(const T val) noexcept
+{
+ return wise_enum::to_string<T>(val);
+}
+
inline std::string format_as(const UuidView uuid)
{
return uuid.str();
inline std::string format_as(const UuidView uuid)
{
return uuid.str();