Bug 620350 - add g_variant_builder_add_parsed()

A delicious blend of g_variant_new_parsed() and
g_variant_builder_add_value().  Now available in a GLib near you.
This commit is contained in:
Ryan Lortie 2010-06-03 11:24:31 +02:00
parent 44db2b6b74
commit 9562726f35
4 changed files with 49 additions and 0 deletions

View File

@ -2900,6 +2900,7 @@ g_variant_builder_init
g_variant_builder_clear
g_variant_builder_add_value
g_variant_builder_add
g_variant_builder_add_parsed
g_variant_builder_end
g_variant_builder_open
g_variant_builder_close

View File

@ -1811,6 +1811,7 @@ g_variant_byteswap
#if IN_FILE(__G_VARIANT_PARSER_C__)
g_variant_new_parsed
g_variant_new_parsed_va
g_variant_builder_add_parsed
g_variant_parse
g_variant_parser_get_error_quark
#endif

View File

@ -2248,5 +2248,49 @@ g_variant_new_parsed (const gchar *format,
return result;
}
/**
* g_variant_builder_add_parsed:
* @builder: a #GVariantBuilder
* @format: a text format #GVariant
* @...: arguments as per @format
*
* Adds to a #GVariantBuilder.
*
* This call is a convenience wrapper that is exactly equivalent to
* calling g_variant_new_parsed() followed by
* g_variant_builder_add_value().
*
* This function might be used as follows:
*
* <programlisting>
* GVariant *
* make_pointless_dictionary (void)
* {
* GVariantBuilder *builder;
* int i;
*
* builder = g_variant_builder_new (G_VARIANT_TYPE_ARRAY);
* g_variant_builder_add_parsed (builder, "{'width', <%i>}", 600);
* g_variant_builder_add_parsed (builder, "{'title', <%s>}", "foo");
* g_variant_builder_add_parsed (builder, "{'transparency', <0.5>}");
* return g_variant_builder_end (builder);
* }
* </programlisting>
*
* Since: 2.26
**/
void
g_variant_builder_add_parsed (GVariantBuilder *builder,
const gchar *format,
...)
{
va_list ap;
va_start (ap, format);
g_variant_builder_add_value (builder, g_variant_new_parsed_va (format, ap));
va_end (ap);
}
#define __G_VARIANT_PARSER_C__
#include "galiasdef.c"

View File

@ -197,6 +197,9 @@ void g_variant_builder_add_value (GVarian
void g_variant_builder_add (GVariantBuilder *builder,
const gchar *format_string,
...);
void g_variant_builder_add_parsed (GVariantBuilder *builder,
const gchar *format,
...);
GVariant * g_variant_new (const gchar *format_string,
...);