diff --git a/glib/gvariant-core.c b/glib/gvariant-core.c index f0b372f40..cff1b093c 100644 --- a/glib/gvariant-core.c +++ b/glib/gvariant-core.c @@ -666,6 +666,21 @@ g_variant_is_trusted (GVariant *value) return (value->state & STATE_TRUSTED) != 0; } +/* < internal > + * g_variant_get_depth: + * @value: a #GVariant + * + * Gets the nesting depth of a #GVariant. This is 0 for a #GVariant with no + * children. + * + * Returns: nesting depth of @value + */ +gsize +g_variant_get_depth (GVariant *value) +{ + return value->depth; +} + /* -- public -- */ /** diff --git a/glib/gvariant-core.h b/glib/gvariant-core.h index fc19b7ec4..fc04711ac 100644 --- a/glib/gvariant-core.h +++ b/glib/gvariant-core.h @@ -34,4 +34,6 @@ gboolean g_variant_is_trusted (GVarian GVariantTypeInfo * g_variant_get_type_info (GVariant *value); +gsize g_variant_get_depth (GVariant *value); + #endif /* __G_VARIANT_CORE_H__ */ diff --git a/glib/gvariant.c b/glib/gvariant.c index ee1a9c020..77d7e746b 100644 --- a/glib/gvariant.c +++ b/glib/gvariant.c @@ -5948,6 +5948,7 @@ g_variant_byteswap (GVariant *value) serialised.type_info = g_variant_get_type_info (trusted); serialised.size = g_variant_get_size (trusted); serialised.data = g_malloc (serialised.size); + serialised.depth = g_variant_get_depth (trusted); g_variant_store (trusted, serialised.data); g_variant_unref (trusted);