X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=tests%2Futils%2Fbt2_plugins%2Ffmt.hpp;fp=tests%2Futils%2Fbt2_plugins%2Ffmt.hpp;h=d5c0857da497d648ffb959427ad68141d6c582fd;hb=9f2636716abf0d6cc188fed380ba77a621a370c1;hp=0000000000000000000000000000000000000000;hpb=7e547df6a875230134157556398e767574a3da69;p=lttng-tools.git diff --git a/tests/utils/bt2_plugins/fmt.hpp b/tests/utils/bt2_plugins/fmt.hpp new file mode 100644 index 000000000..d5c0857da --- /dev/null +++ b/tests/utils/bt2_plugins/fmt.hpp @@ -0,0 +1,131 @@ +/* + * Copyright (C) 2024 Jérémie Galarneau + * + * SPDX-License-Identifier: LGPL-2.1-only + * + */ + +#ifndef LTTNG_TESTS_UTILS_BT2_PLUGINS_FMT_H +#define LTTNG_TESTS_UTILS_BT2_PLUGINS_FMT_H + +#include + +#include + +/* + * 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 : formatter { + template + 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 */