Add G_VALUE_INIT

The implementation of GValue is not public or documented.  When
allocated on the stack, initializing a GValue is usually done as
documented with:

GValue value = { 0, };

There is lot code around (including WebKit) that added all the missing
fields, resulting in this ugly and non-obvious:

GValue value = { 0, { { 0 } } };

However, this doesn't play nice with -Wmissing-field-initializers for
example. Thus, G_VALUE_INIT.

http://bugzilla.gnome.org/show_bug.cgi?id=654793
http://bugzilla.gnome.org/show_bug.cgi?id=577231
This commit is contained in:
Marc-André Lureau
2011-07-17 21:18:04 +02:00
committed by Matthias Clasen
parent a9ca74efb1
commit d2ca14c270
3 changed files with 20 additions and 3 deletions

View File

@@ -161,6 +161,22 @@ void g_value_register_transform_func (GType src_type,
*/
#define G_VALUE_NOCOPY_CONTENTS (1 << 27)
/**
* G_VALUE_INIT:
*
* A #GValue must be initialized before it can be used.
* This macro can be used as initializer instead of an explicit
* <literal>{ 0 }</literal> when declaring a variable,
* but it cannot be assigned to a variable.
*
* |[
* GValue value = G_VALUE_INIT;
* ]|
*
* Since: 2.30
*/
#define G_VALUE_INIT { 0, { { 0 } } }
G_END_DECLS