tests: Replace babelstats.pl with bt2 plugins
[lttng-tools.git] / tests / utils / bt2_plugins / fmt.hpp
diff --git a/tests/utils/bt2_plugins/fmt.hpp b/tests/utils/bt2_plugins/fmt.hpp
new file mode 100644 (file)
index 0000000..d5c0857
--- /dev/null
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2024 Jérémie Galarneau <jeremie.galarneau@efficios.com>
+ *
+ * SPDX-License-Identifier: LGPL-2.1-only
+ *
+ */
+
+#ifndef LTTNG_TESTS_UTILS_BT2_PLUGINS_FMT_H
+#define LTTNG_TESTS_UTILS_BT2_PLUGINS_FMT_H
+
+#include <common/format.hpp>
+
+#include <babeltrace2/babeltrace.h>
+
+/*
+ * Due to a bug in g++ < 7.1, this specialization must be enclosed in the fmt namespace,
+ * see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56480.
+ */
+namespace fmt {
+template <>
+struct formatter<bt_field_class_type> : formatter<std::string> {
+       template <typename FormatContextType>
+       typename FormatContextType::iterator format(const bt_field_class_type field_class_type,
+                                                   FormatContextType& ctx)
+       {
+               const char *name;
+
+               switch (field_class_type) {
+               case BT_FIELD_CLASS_TYPE_BOOL:
+                       name = "BOOL";
+                       break;
+               case BT_FIELD_CLASS_TYPE_BIT_ARRAY:
+                       name = "BIT_ARRAY";
+                       break;
+               case BT_FIELD_CLASS_TYPE_INTEGER:
+                       name = "INTEGER";
+                       break;
+               case BT_FIELD_CLASS_TYPE_UNSIGNED_INTEGER:
+                       name = "UNSIGNED_INTEGER";
+                       break;
+               case BT_FIELD_CLASS_TYPE_SIGNED_INTEGER:
+                       name = "SIGNED_INTEGER";
+                       break;
+               case BT_FIELD_CLASS_TYPE_ENUMERATION:
+                       name = "ENUMERATION";
+                       break;
+               case BT_FIELD_CLASS_TYPE_UNSIGNED_ENUMERATION:
+                       name = "UNSIGNED_ENUMERATION";
+                       break;
+               case BT_FIELD_CLASS_TYPE_SIGNED_ENUMERATION:
+                       name = "SIGNED_ENUMERATION";
+                       break;
+               case BT_FIELD_CLASS_TYPE_REAL:
+                       name = "REAL";
+                       break;
+               case BT_FIELD_CLASS_TYPE_SINGLE_PRECISION_REAL:
+                       name = "SINGLE_PRECISION_REAL";
+                       break;
+               case BT_FIELD_CLASS_TYPE_DOUBLE_PRECISION_REAL:
+                       name = "DOUBLE_PRECISION_REAL";
+                       break;
+               case BT_FIELD_CLASS_TYPE_STRING:
+                       name = "STRING";
+                       break;
+               case BT_FIELD_CLASS_TYPE_STRUCTURE:
+                       name = "STRUCTURE";
+                       break;
+               case BT_FIELD_CLASS_TYPE_ARRAY:
+                       name = "ARRAY";
+                       break;
+               case BT_FIELD_CLASS_TYPE_STATIC_ARRAY:
+                       name = "STATIC_ARRAY";
+                       break;
+               case BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY:
+                       name = "DYNAMIC_ARRAY";
+                       break;
+               case BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY_WITHOUT_LENGTH_FIELD:
+                       name = "DYNAMIC_ARRAY_WITHOUT_LENGTH_FIELD";
+                       break;
+               case BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY_WITH_LENGTH_FIELD:
+                       name = "DYNAMIC_ARRAY_WITH_LENGTH_FIELD";
+                       break;
+               case BT_FIELD_CLASS_TYPE_OPTION:
+                       name = "OPTION";
+                       break;
+               case BT_FIELD_CLASS_TYPE_OPTION_WITHOUT_SELECTOR_FIELD:
+                       name = "OPTION_WITHOUT_SELECTOR_FIELD";
+                       break;
+               case BT_FIELD_CLASS_TYPE_OPTION_WITH_SELECTOR_FIELD:
+                       name = "OPTION_WITH_SELECTOR_FIELD";
+                       break;
+               case BT_FIELD_CLASS_TYPE_OPTION_WITH_BOOL_SELECTOR_FIELD:
+                       name = "OPTION_WITH_BOOL_SELECTOR_FIELD";
+                       break;
+               case BT_FIELD_CLASS_TYPE_OPTION_WITH_INTEGER_SELECTOR_FIELD:
+                       name = "OPTION_WITH_INTEGER_SELECTOR_FIELD";
+                       break;
+               case BT_FIELD_CLASS_TYPE_OPTION_WITH_UNSIGNED_INTEGER_SELECTOR_FIELD:
+                       name = "OPTION_WITH_UNSIGNED_INTEGER_SELECTOR_FIELD";
+                       break;
+               case BT_FIELD_CLASS_TYPE_OPTION_WITH_SIGNED_INTEGER_SELECTOR_FIELD:
+                       name = "OPTION_WITH_SIGNED_INTEGER_SELECTOR_FIELD";
+                       break;
+               case BT_FIELD_CLASS_TYPE_VARIANT:
+                       name = "VARIANT";
+                       break;
+               case BT_FIELD_CLASS_TYPE_VARIANT_WITHOUT_SELECTOR_FIELD:
+                       name = "VARIANT_WITHOUT_SELECTOR_FIELD";
+                       break;
+               case BT_FIELD_CLASS_TYPE_VARIANT_WITH_SELECTOR_FIELD:
+                       name = "VARIANT_WITH_SELECTOR_FIELD";
+                       break;
+               case BT_FIELD_CLASS_TYPE_VARIANT_WITH_INTEGER_SELECTOR_FIELD:
+                       name = "VARIANT_WITH_INTEGER_SELECTOR_FIELD";
+                       break;
+               case BT_FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_INTEGER_SELECTOR_FIELD:
+                       name = "VARIANT_WITH_UNSIGNED_INTEGER_SELECTOR_FIELD";
+                       break;
+               case BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_INTEGER_SELECTOR_FIELD:
+                       name = "VARIANT_WITH_SIGNED_INTEGER_SELECTOR_FIELD";
+                       break;
+               default:
+                       abort();
+               }
+
+               return format_to(ctx.out(), name);
+       }
+};
+} /* namespace fmt */
+
+#endif /* LTTNG_TESTS_UTILS_BT2_PLUGINS_FMT_H */
This page took 0.02489 seconds and 4 git commands to generate.