2 * Copyright (C) 2024 Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 * SPDX-License-Identifier: LGPL-2.1-only
8 #ifndef LTTNG_TESTS_UTILS_BT2_PLUGINS_FMT_H
9 #define LTTNG_TESTS_UTILS_BT2_PLUGINS_FMT_H
11 #include <common/format.hpp>
13 #include <babeltrace2/babeltrace.h>
16 * Due to a bug in g++ < 7.1, this specialization must be enclosed in the fmt namespace,
17 * see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56480.
21 struct formatter<bt_field_class_type> : formatter<std::string> {
22 template <typename FormatContextType>
23 typename FormatContextType::iterator format(const bt_field_class_type field_class_type,
24 FormatContextType& ctx)
28 switch (field_class_type) {
29 case BT_FIELD_CLASS_TYPE_BOOL:
32 case BT_FIELD_CLASS_TYPE_BIT_ARRAY:
35 case BT_FIELD_CLASS_TYPE_INTEGER:
38 case BT_FIELD_CLASS_TYPE_UNSIGNED_INTEGER:
39 name = "UNSIGNED_INTEGER";
41 case BT_FIELD_CLASS_TYPE_SIGNED_INTEGER:
42 name = "SIGNED_INTEGER";
44 case BT_FIELD_CLASS_TYPE_ENUMERATION:
47 case BT_FIELD_CLASS_TYPE_UNSIGNED_ENUMERATION:
48 name = "UNSIGNED_ENUMERATION";
50 case BT_FIELD_CLASS_TYPE_SIGNED_ENUMERATION:
51 name = "SIGNED_ENUMERATION";
53 case BT_FIELD_CLASS_TYPE_REAL:
56 case BT_FIELD_CLASS_TYPE_SINGLE_PRECISION_REAL:
57 name = "SINGLE_PRECISION_REAL";
59 case BT_FIELD_CLASS_TYPE_DOUBLE_PRECISION_REAL:
60 name = "DOUBLE_PRECISION_REAL";
62 case BT_FIELD_CLASS_TYPE_STRING:
65 case BT_FIELD_CLASS_TYPE_STRUCTURE:
68 case BT_FIELD_CLASS_TYPE_ARRAY:
71 case BT_FIELD_CLASS_TYPE_STATIC_ARRAY:
72 name = "STATIC_ARRAY";
74 case BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY:
75 name = "DYNAMIC_ARRAY";
77 case BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY_WITHOUT_LENGTH_FIELD:
78 name = "DYNAMIC_ARRAY_WITHOUT_LENGTH_FIELD";
80 case BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY_WITH_LENGTH_FIELD:
81 name = "DYNAMIC_ARRAY_WITH_LENGTH_FIELD";
83 case BT_FIELD_CLASS_TYPE_OPTION:
86 case BT_FIELD_CLASS_TYPE_OPTION_WITHOUT_SELECTOR_FIELD:
87 name = "OPTION_WITHOUT_SELECTOR_FIELD";
89 case BT_FIELD_CLASS_TYPE_OPTION_WITH_SELECTOR_FIELD:
90 name = "OPTION_WITH_SELECTOR_FIELD";
92 case BT_FIELD_CLASS_TYPE_OPTION_WITH_BOOL_SELECTOR_FIELD:
93 name = "OPTION_WITH_BOOL_SELECTOR_FIELD";
95 case BT_FIELD_CLASS_TYPE_OPTION_WITH_INTEGER_SELECTOR_FIELD:
96 name = "OPTION_WITH_INTEGER_SELECTOR_FIELD";
98 case BT_FIELD_CLASS_TYPE_OPTION_WITH_UNSIGNED_INTEGER_SELECTOR_FIELD:
99 name = "OPTION_WITH_UNSIGNED_INTEGER_SELECTOR_FIELD";
101 case BT_FIELD_CLASS_TYPE_OPTION_WITH_SIGNED_INTEGER_SELECTOR_FIELD:
102 name = "OPTION_WITH_SIGNED_INTEGER_SELECTOR_FIELD";
104 case BT_FIELD_CLASS_TYPE_VARIANT:
107 case BT_FIELD_CLASS_TYPE_VARIANT_WITHOUT_SELECTOR_FIELD:
108 name = "VARIANT_WITHOUT_SELECTOR_FIELD";
110 case BT_FIELD_CLASS_TYPE_VARIANT_WITH_SELECTOR_FIELD:
111 name = "VARIANT_WITH_SELECTOR_FIELD";
113 case BT_FIELD_CLASS_TYPE_VARIANT_WITH_INTEGER_SELECTOR_FIELD:
114 name = "VARIANT_WITH_INTEGER_SELECTOR_FIELD";
116 case BT_FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_INTEGER_SELECTOR_FIELD:
117 name = "VARIANT_WITH_UNSIGNED_INTEGER_SELECTOR_FIELD";
119 case BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_INTEGER_SELECTOR_FIELD:
120 name = "VARIANT_WITH_SIGNED_INTEGER_SELECTOR_FIELD";
126 return format_to(ctx.out(), name);
129 } /* namespace fmt */
131 #endif /* LTTNG_TESTS_UTILS_BT2_PLUGINS_FMT_H */