write_compound_member_name(ctx,
bt_field_class_variant_option_get_name(option));
- if (fc_type == BT_FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_SELECTOR) {
- const bt_field_class_variant_with_selector_unsigned_option *spec_opt =
- bt_field_class_variant_with_selector_unsigned_borrow_option_by_index_const(
+ if (fc_type == BT_FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_INTEGER_SELECTOR) {
+ const bt_field_class_variant_with_selector_integer_unsigned_option *spec_opt =
+ bt_field_class_variant_with_selector_integer_unsigned_borrow_option_by_index_const(
fc, index);
orig_ranges =
- bt_field_class_variant_with_selector_unsigned_option_borrow_ranges_const(
+ bt_field_class_variant_with_selector_integer_unsigned_option_borrow_ranges_const(
spec_opt);
is_signed = false;
- } else if (fc_type == BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_SELECTOR) {
- const bt_field_class_variant_with_selector_signed_option *spec_opt =
- bt_field_class_variant_with_selector_signed_borrow_option_by_index_const(
+ } else if (fc_type == BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_INTEGER_SELECTOR) {
+ const bt_field_class_variant_with_selector_integer_signed_option *spec_opt =
+ bt_field_class_variant_with_selector_integer_signed_borrow_option_by_index_const(
fc, index);
orig_ranges =
- bt_field_class_variant_with_selector_signed_option_borrow_ranges_const(
+ bt_field_class_variant_with_selector_integer_signed_option_borrow_ranges_const(
spec_opt);
is_signed = true;
}
case BT_FIELD_CLASS_TYPE_SIGNED_ENUMERATION:
type = "Signed enumeration";
break;
- case BT_FIELD_CLASS_TYPE_REAL:
- type = "Real";
+ case BT_FIELD_CLASS_TYPE_SINGLE_PRECISION_REAL:
+ type = "Single-precision real";
+ break;
+ case BT_FIELD_CLASS_TYPE_DOUBLE_PRECISION_REAL:
+ type = "Double-precision real";
break;
case BT_FIELD_CLASS_TYPE_STRING:
type = "String";
case BT_FIELD_CLASS_TYPE_DYNAMIC_ARRAY:
type = "Dynamic array";
break;
- case BT_FIELD_CLASS_TYPE_OPTION:
- type = "Option";
+ case BT_FIELD_CLASS_TYPE_OPTION_WITHOUT_SELECTOR:
+ type = "Option (no selector)";
+ break;
+ case BT_FIELD_CLASS_TYPE_OPTION_WITH_BOOL_SELECTOR:
+ type = "Option (boolean selector)";
+ break;
+ case BT_FIELD_CLASS_TYPE_OPTION_WITH_UNSIGNED_INTEGER_SELECTOR:
+ type = "Option (unsigned integer selector)";
+ break;
+ case BT_FIELD_CLASS_TYPE_OPTION_WITH_SIGNED_INTEGER_SELECTOR:
+ type = "Option (signed integer selector)";
break;
case BT_FIELD_CLASS_TYPE_VARIANT_WITHOUT_SELECTOR:
type = "Variant (no selector)";
break;
- case BT_FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_SELECTOR:
- type = "Variant (unsigned selector)";
+ case BT_FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_INTEGER_SELECTOR:
+ type = "Variant (unsigned integer selector)";
break;
- case BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_SELECTOR:
- type = "Variant (signed selector)";
+ case BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_INTEGER_SELECTOR:
+ type = "Variant (signed integer selector)";
break;
default:
abort();
plural(mapping_count));
break;
}
- case BT_FIELD_CLASS_TYPE_REAL:
- if (bt_field_class_real_is_single_precision(fc)) {
- g_string_append(ctx->str, " (Single precision)");
- } else {
- g_string_append(ctx->str, " (Double precision)");
- }
-
- break;
case BT_FIELD_CLASS_TYPE_STRUCTURE:
{
uint64_t member_count =
}
break;
- case BT_FIELD_CLASS_TYPE_OPTION:
+ case BT_FIELD_CLASS_TYPE_OPTION_WITH_BOOL_SELECTOR:
+ case BT_FIELD_CLASS_TYPE_OPTION_WITH_UNSIGNED_INTEGER_SELECTOR:
+ case BT_FIELD_CLASS_TYPE_OPTION_WITH_SIGNED_INTEGER_SELECTOR:
{
const bt_field_path *selector_field_path =
- bt_field_class_option_borrow_selector_field_path_const(fc);
-
- if (selector_field_path) {
- g_string_append(ctx->str, " (Selector field path ");
- write_field_path(ctx, selector_field_path);
- g_string_append_c(ctx->str, ')');
- }
+ bt_field_class_option_with_selector_borrow_selector_field_path_const(
+ fc);
+ g_string_append(ctx->str, " (Selector field path ");
+ write_field_path(ctx, selector_field_path);
+ g_string_append_c(ctx->str, ')');
break;
}
case BT_FIELD_CLASS_TYPE_VARIANT_WITHOUT_SELECTOR:
- case BT_FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_SELECTOR:
- case BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_SELECTOR:
+ case BT_FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_INTEGER_SELECTOR:
+ case BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_INTEGER_SELECTOR:
{
uint64_t option_count =
bt_field_class_variant_get_option_count(fc);
const bt_field_path *sel_field_path = NULL;
- if (fc_type == BT_FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_SELECTOR ||
- fc_type == BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_SELECTOR) {
+ if (fc_type == BT_FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_INTEGER_SELECTOR ||
+ fc_type == BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_INTEGER_SELECTOR) {
sel_field_path =
bt_field_class_variant_with_selector_borrow_selector_field_path_const(
fc);
write_field_class(ctx,
bt_field_class_array_borrow_element_field_class_const(fc));
break;
- case BT_FIELD_CLASS_TYPE_OPTION:
+ case BT_FIELD_CLASS_TYPE_OPTION_WITHOUT_SELECTOR:
+ case BT_FIELD_CLASS_TYPE_OPTION_WITH_BOOL_SELECTOR:
+ case BT_FIELD_CLASS_TYPE_OPTION_WITH_UNSIGNED_INTEGER_SELECTOR:
+ case BT_FIELD_CLASS_TYPE_OPTION_WITH_SIGNED_INTEGER_SELECTOR:
+ {
+ const void *ranges = NULL;
+ bool selector_is_signed = false;
+
if (wrote_user_attrs) {
write_nl(ctx);
} else {
g_string_append(ctx->str, ":\n");
}
+ if (fc_type == BT_FIELD_CLASS_TYPE_OPTION_WITH_BOOL_SELECTOR) {
+ write_bool_prop_line(ctx, "Selector is reversed",
+ bt_field_class_option_with_selector_bool_selector_is_reversed(fc));
+ } else if (fc_type == BT_FIELD_CLASS_TYPE_OPTION_WITH_UNSIGNED_INTEGER_SELECTOR) {
+ ranges = bt_field_class_option_with_selector_integer_unsigned_borrow_selector_ranges_const(fc);
+ } else if (fc_type == BT_FIELD_CLASS_TYPE_OPTION_WITH_SIGNED_INTEGER_SELECTOR) {
+ ranges = bt_field_class_option_with_selector_integer_signed_borrow_selector_ranges_const(fc);
+ selector_is_signed = true;
+ }
+
+ if (ranges) {
+ GArray *sorted_ranges = range_set_to_int_ranges(
+ ranges, selector_is_signed);
+ uint64_t i;
+
+ BT_ASSERT(sorted_ranges);
+ BT_ASSERT(sorted_ranges->len > 0);
+ write_prop_name_line(ctx, "Selector ranges");
+
+ for (i = 0; i < sorted_ranges->len; i++) {
+ write_sp(ctx);
+ write_int_range(ctx,
+ int_range_at(sorted_ranges, i),
+ selector_is_signed);
+ }
+
+ write_nl(ctx);
+ g_array_free(sorted_ranges, TRUE);
+ }
+
write_prop_name_line(ctx, "Content");
write_sp(ctx);
write_field_class(ctx,
bt_field_class_option_borrow_field_class_const(fc));
break;
+ }
case BT_FIELD_CLASS_TYPE_VARIANT_WITHOUT_SELECTOR:
- case BT_FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_SELECTOR:
- case BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_SELECTOR:
+ case BT_FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_INTEGER_SELECTOR:
+ case BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_INTEGER_SELECTOR:
{
uint64_t option_count =
bt_field_class_variant_get_option_count(fc);
break;
}
- case BT_FIELD_CLASS_TYPE_REAL:
+ case BT_FIELD_CLASS_TYPE_SINGLE_PRECISION_REAL:
+ write_sp(ctx);
+ write_float_prop_value(ctx, bt_field_real_single_precision_get_value(field));
+ break;
+ case BT_FIELD_CLASS_TYPE_DOUBLE_PRECISION_REAL:
write_sp(ctx);
- write_float_prop_value(ctx, bt_field_real_get_value(field));
+ write_float_prop_value(ctx, bt_field_real_double_precision_get_value(field));
break;
case BT_FIELD_CLASS_TYPE_STRING:
write_sp(ctx);
decr_indent(ctx);
break;
}
- case BT_FIELD_CLASS_TYPE_OPTION:
+ case BT_FIELD_CLASS_TYPE_OPTION_WITHOUT_SELECTOR:
+ case BT_FIELD_CLASS_TYPE_OPTION_WITH_BOOL_SELECTOR:
+ case BT_FIELD_CLASS_TYPE_OPTION_WITH_UNSIGNED_INTEGER_SELECTOR:
+ case BT_FIELD_CLASS_TYPE_OPTION_WITH_SIGNED_INTEGER_SELECTOR:
{
const bt_field *content_field =
bt_field_option_borrow_field_const(field);
break;
}
case BT_FIELD_CLASS_TYPE_VARIANT_WITHOUT_SELECTOR:
- case BT_FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_SELECTOR:
- case BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_SELECTOR:
+ case BT_FIELD_CLASS_TYPE_VARIANT_WITH_UNSIGNED_INTEGER_SELECTOR:
+ case BT_FIELD_CLASS_TYPE_VARIANT_WITH_SIGNED_INTEGER_SELECTOR:
write_field(ctx,
bt_field_variant_borrow_selected_option_field_const(
field), NULL);