- int ret;
- bt_field_class *ir_fc;
- uint64_t i;
- bt_field_class *ir_tag_fc = NULL;
-
- if (fc->tag_path.root != CTF_SCOPE_PACKET_HEADER &&
- fc->tag_path.root != CTF_SCOPE_EVENT_HEADER) {
- ir_tag_fc = borrow_ir_fc_from_field_path(ctx, &fc->tag_path);
- BT_ASSERT(ir_tag_fc);
- }
-
- ir_fc = bt_field_class_variant_create(ctx->ir_tc, ir_tag_fc);
- BT_ASSERT(ir_fc);
-
- for (i = 0; i < fc->options->len; i++) {
- struct ctf_named_field_class *named_fc =
- ctf_field_class_variant_borrow_option_by_index(fc, i);
- bt_field_class *option_ir_fc;
-
- BT_ASSERT(named_fc->fc->in_ir);
- option_ir_fc = ctf_field_class_to_ir(ctx, named_fc->fc);
- BT_ASSERT(option_ir_fc);
-
- if (ir_tag_fc) {
- /*
- * At this point the trace IR selector
- * (enumeration) field class already exists if
- * the variant is tagged (`ir_tag_fc`). This one
- * already contains range sets for its mappings,
- * so we just reuse the same, finding them by
- * matching a variant field class's option's
- * _original_ name (with a leading underscore,
- * possibly) with a selector field class's
- * mapping name.
- */
- if (fc->tag_fc->base.is_signed) {
- const bt_field_class_enumeration_signed_mapping *mapping =
- (bt_field_class_enumeration_signed_mapping *)
- find_ir_enum_field_class_mapping_by_label(
- ir_tag_fc,
- named_fc->orig_name->str, true);
- const bt_integer_range_set_signed *range_set;
-
- BT_ASSERT(mapping);
- range_set =
- bt_field_class_enumeration_signed_mapping_borrow_ranges_const(
- mapping);
- BT_ASSERT(range_set);
- ret = bt_field_class_variant_with_selector_field_integer_signed_append_option(
- ir_fc, named_fc->name->str,
- option_ir_fc, range_set);
- } else {
- const bt_field_class_enumeration_unsigned_mapping *mapping =
- (bt_field_class_enumeration_unsigned_mapping *)
- find_ir_enum_field_class_mapping_by_label(
- ir_tag_fc,
- named_fc->orig_name->str,
- false);
- const bt_integer_range_set_unsigned *range_set;
-
- BT_ASSERT(mapping);
- range_set =
- bt_field_class_enumeration_unsigned_mapping_borrow_ranges_const(
- mapping);
- BT_ASSERT(range_set);
- ret = bt_field_class_variant_with_selector_field_integer_unsigned_append_option(
- ir_fc, named_fc->name->str,
- option_ir_fc, range_set);
- }
- } else {
- ret = bt_field_class_variant_without_selector_append_option(
- ir_fc, named_fc->name->str, option_ir_fc);
- }
-
- BT_ASSERT(ret == 0);
- bt_field_class_put_ref(option_ir_fc);
- }
-
- return ir_fc;
+ int ret;
+ bt_field_class *ir_fc;
+ uint64_t i;
+ bt_field_class *ir_tag_fc = NULL;
+
+ if (fc->tag_path.root != CTF_SCOPE_PACKET_HEADER &&
+ fc->tag_path.root != CTF_SCOPE_EVENT_HEADER) {
+ ir_tag_fc = borrow_ir_fc_from_field_path(ctx, &fc->tag_path);
+ BT_ASSERT(ir_tag_fc);
+ }
+
+ ir_fc = bt_field_class_variant_create(ctx->ir_tc, ir_tag_fc);
+ BT_ASSERT(ir_fc);
+
+ for (i = 0; i < fc->options->len; i++) {
+ struct ctf_named_field_class *named_fc =
+ ctf_field_class_variant_borrow_option_by_index(fc, i);
+ bt_field_class *option_ir_fc;
+
+ BT_ASSERT(named_fc->fc->in_ir);
+ option_ir_fc = ctf_field_class_to_ir(ctx, named_fc->fc);
+ BT_ASSERT(option_ir_fc);
+
+ if (ir_tag_fc) {
+ /*
+ * At this point the trace IR selector
+ * (enumeration) field class already exists if
+ * the variant is tagged (`ir_tag_fc`). This one
+ * already contains range sets for its mappings,
+ * so we just reuse the same, finding them by
+ * matching a variant field class's option's
+ * _original_ name (with a leading underscore,
+ * possibly) with a selector field class's
+ * mapping name.
+ */
+ if (fc->tag_fc->base.is_signed) {
+ const bt_field_class_enumeration_signed_mapping *mapping =
+ (bt_field_class_enumeration_signed_mapping *)
+ find_ir_enum_field_class_mapping_by_label(ir_tag_fc,
+ named_fc->orig_name->str, true);
+ const bt_integer_range_set_signed *range_set;
+
+ BT_ASSERT(mapping);
+ range_set = bt_field_class_enumeration_signed_mapping_borrow_ranges_const(mapping);
+ BT_ASSERT(range_set);
+ ret = bt_field_class_variant_with_selector_field_integer_signed_append_option(
+ ir_fc, named_fc->name->str, option_ir_fc, range_set);
+ } else {
+ const bt_field_class_enumeration_unsigned_mapping *mapping =
+ (bt_field_class_enumeration_unsigned_mapping *)
+ find_ir_enum_field_class_mapping_by_label(ir_tag_fc,
+ named_fc->orig_name->str, false);
+ const bt_integer_range_set_unsigned *range_set;
+
+ BT_ASSERT(mapping);
+ range_set =
+ bt_field_class_enumeration_unsigned_mapping_borrow_ranges_const(mapping);
+ BT_ASSERT(range_set);
+ ret = bt_field_class_variant_with_selector_field_integer_unsigned_append_option(
+ ir_fc, named_fc->name->str, option_ir_fc, range_set);
+ }
+ } else {
+ ret = bt_field_class_variant_without_selector_append_option(ir_fc, named_fc->name->str,
+ option_ir_fc);
+ }
+
+ BT_ASSERT(ret == 0);
+ bt_field_class_put_ref(option_ir_fc);
+ }
+
+ return ir_fc;