From f068347b1419213be20e3647f5d4f1d505bdcba4 Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Thu, 29 Dec 2022 17:38:04 +0000 Subject: [PATCH] gvariant: Factor out some common calls to g_variant_get_type_string() When printing a `GVariant`. This introduces no functional changes, but should speed things up a little bit when printing out arrays. Signed-off-by: Philip Withnall --- glib/gvariant.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/glib/gvariant.c b/glib/gvariant.c index 95904bd38..8f0c237db 100644 --- a/glib/gvariant.c +++ b/glib/gvariant.c @@ -2213,15 +2213,16 @@ g_variant_print_string (GVariant *value, GString *string, gboolean type_annotate) { + const gchar *value_type_string = g_variant_get_type_string (value); + if G_UNLIKELY (string == NULL) string = g_string_new (NULL); - switch (g_variant_classify (value)) + switch (value_type_string[0]) { case G_VARIANT_CLASS_MAYBE: if (type_annotate) - g_string_append_printf (string, "@%s ", - g_variant_get_type_string (value)); + g_string_append_printf (string, "@%s ", value_type_string); if (g_variant_n_children (value)) { @@ -2265,7 +2266,7 @@ g_variant_print_string (GVariant *value, * if the first two characters are 'ay' then it's a bytestring. * under certain conditions we print those as strings. */ - if (g_variant_get_type_string (value)[1] == 'y') + if (value_type_string[1] == 'y') { const gchar *str; gsize size; @@ -2307,7 +2308,7 @@ g_variant_print_string (GVariant *value, * dictionary entries (ie: a dictionary) so we print that * differently. */ - if (g_variant_get_type_string (value)[1] == '{') + if (value_type_string[1] == '{') /* dictionary */ { const gchar *comma = ""; @@ -2316,8 +2317,7 @@ g_variant_print_string (GVariant *value, if ((n = g_variant_n_children (value)) == 0) { if (type_annotate) - g_string_append_printf (string, "@%s ", - g_variant_get_type_string (value)); + g_string_append_printf (string, "@%s ", value_type_string); g_string_append (string, "{}"); break; } @@ -2353,8 +2353,7 @@ g_variant_print_string (GVariant *value, if ((n = g_variant_n_children (value)) == 0) { if (type_annotate) - g_string_append_printf (string, "@%s ", - g_variant_get_type_string (value)); + g_string_append_printf (string, "@%s ", value_type_string); g_string_append (string, "[]"); break; }