From 51e61f06e6242de402f2c96a067f09d0418df120 Mon Sep 17 00:00:00 2001 From: Philippe Proulx Date: Mon, 12 Aug 2019 18:15:04 -0400 Subject: [PATCH] sink.text.pretty: print option fields The component prints `` when there's no current optional field, and does the same as a variant field otherwise (printing the optional field's value between `{` and `}`). Signed-off-by: Philippe Proulx Change-Id: I7a42ca31d68562fa0994945b32dbb2935aa92ee4 Reviewed-on: https://review.lttng.org/c/babeltrace/+/1899 Tested-by: jenkins Reviewed-by: Francis Deslauriers --- src/plugins/text/pretty/print.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/plugins/text/pretty/print.c b/src/plugins/text/pretty/print.c index 1fd168c5..ea0b165c 100644 --- a/src/plugins/text/pretty/print.c +++ b/src/plugins/text/pretty/print.c @@ -915,6 +915,35 @@ end: return ret; } +static +int print_option(struct pretty_component *pretty, + const bt_field *option, bool print_names) +{ + int ret = 0; + const bt_field *field = NULL; + + field = bt_field_option_borrow_field_const(option); + if (field) { + bt_common_g_string_append(pretty->string, "{ "); + pretty->depth++; + if (print_names) { + // TODO: find tag's name using field path + // print_field_name_equal(pretty, tag_choice); + } + ret = print_field(pretty, field, print_names); + if (ret != 0) { + goto end; + } + pretty->depth--; + bt_common_g_string_append(pretty->string, " }"); + } else { + bt_common_g_string_append(pretty->string, ""); + } + +end: + return ret; +} + static int print_variant(struct pretty_component *pretty, const bt_field *variant, bool print_names) @@ -1009,6 +1038,8 @@ int print_field(struct pretty_component *pretty, } case BT_FIELD_CLASS_TYPE_STRUCTURE: return print_struct(pretty, field, print_names); + case BT_FIELD_CLASS_TYPE_OPTION: + return print_option(pretty, field, print_names); 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: -- 2.34.1