* SOFTWARE.
*/
+#include "translate-ctf-ir-to-tsdl.h"
+
#include <babeltrace2/babeltrace.h>
#include "common/macros.h"
#include <stdio.h>
g_string_append(ctx->tsdl, "x");
break;
default:
- abort();
+ bt_common_abort();
}
g_string_append_c(ctx->tsdl, ';');
NULL, NULL, false);
}
+static
+void append_bit_array_field_class(struct ctx *ctx,
+ struct fs_sink_ctf_field_class_bit_array *fc)
+{
+ /*
+ * CTF 1.8 has no bit array field class type, so this component
+ * translates it to an unsigned integer field class with an
+ * hexadecimal base.
+ */
+ append_integer_field_class_from_props(ctx, fc->size,
+ fc->base.alignment, false,
+ BT_FIELD_CLASS_INTEGER_PREFERRED_DISPLAY_BASE_HEXADECIMAL,
+ NULL, NULL, false);
+}
+
static
void append_integer_field_class(struct ctx *ctx,
struct fs_sink_ctf_field_class_int *fc)
{
const bt_field_class *ir_fc = fc->base.base.ir_fc;
bt_field_class_type type = bt_field_class_get_type(ir_fc);
- bool is_signed = type == BT_FIELD_CLASS_TYPE_SIGNED_ENUMERATION ||
- type == BT_FIELD_CLASS_TYPE_SIGNED_INTEGER;
+ bool is_signed = bt_field_class_type_is(type,
+ BT_FIELD_CLASS_TYPE_SIGNED_INTEGER);
- if (type == BT_FIELD_CLASS_TYPE_UNSIGNED_ENUMERATION ||
- type == BT_FIELD_CLASS_TYPE_SIGNED_ENUMERATION) {
+ if (bt_field_class_type_is(type, BT_FIELD_CLASS_TYPE_ENUMERATION)) {
g_string_append(ctx->tsdl, "enum : ");
}
bt_field_class_integer_get_preferred_display_base(ir_fc),
NULL, NULL, false);
- if (type == BT_FIELD_CLASS_TYPE_UNSIGNED_ENUMERATION ||
- type == BT_FIELD_CLASS_TYPE_SIGNED_ENUMERATION) {
+ if (bt_field_class_type_is(type, BT_FIELD_CLASS_TYPE_ENUMERATION)) {
uint64_t i;
g_string_append(ctx->tsdl, " {\n");
{
unsigned int mant_dig, exp_dig;
- if (bt_field_class_real_is_single_precision(fc->base.base.ir_fc)) {
+ if (bt_field_class_get_type(fc->base.base.ir_fc) ==
+ BT_FIELD_CLASS_TYPE_SINGLE_PRECISION_REAL) {
mant_dig = 24;
exp_dig = 8;
} else {
ctx->indent_level++;
for (i = 0; i < var_fc->options->len; i++) {
- struct fs_sink_ctf_named_field_class *named_fc =
+ struct fs_sink_ctf_named_field_class *option_named_fc =
fs_sink_ctf_field_class_variant_borrow_option_by_index(
var_fc, i);
append_indent(ctx);
g_string_append_printf(ctx->tsdl,
"\"%s\" = %" PRIu64 ",\n",
- named_fc->name->str, i);
+ option_named_fc->name->str, i);
}
append_end_block(ctx);
append_indent(ctx);
g_string_append(ctx->tsdl,
"/* The integer field class below was a trace IR boolean field class. */\n");
+ } else if (fc->type == FS_SINK_CTF_FIELD_CLASS_TYPE_BIT_ARRAY) {
+ append_indent(ctx);
+ g_string_append(ctx->tsdl,
+ "/* The integer field class below was a trace IR bit array field class. */\n");
}
append_indent(ctx);
case FS_SINK_CTF_FIELD_CLASS_TYPE_BOOL:
append_bool_field_class(ctx, (void *) fc);
break;
+ case FS_SINK_CTF_FIELD_CLASS_TYPE_BIT_ARRAY:
+ append_bit_array_field_class(ctx, (void *) fc);
+ break;
case FS_SINK_CTF_FIELD_CLASS_TYPE_INT:
append_integer_field_class(ctx, (void *) fc);
break;
append_variant_field_class(ctx, (void *) fc);
break;
default:
- abort();
+ bt_common_abort();
}
}
level = 14;
break;
default:
- abort();
+ bt_common_abort();
}
g_string_append_printf(ctx->tsdl, "%u;\n", level);
* This is checked in
* translate_trace_trace_ir_to_ctf_ir().
*/
- abort();
+ bt_common_abort();
}
g_string_append(tsdl, ";\n");