Make the GVariant code compile with a non-gcc compiler

In particular, tested with Microsoft Visual C 2008.
This commit is contained in:
Tor Lillqvist 2010-03-21 11:22:06 +02:00
parent dc51eff2a9
commit 2ab76c5b36
4 changed files with 33 additions and 27 deletions

View File

@ -357,7 +357,7 @@ static void
g_variant_serialise (GVariant *value, g_variant_serialise (GVariant *value,
gpointer data) gpointer data)
{ {
GVariantSerialised serialised = { }; GVariantSerialised serialised = { 0, };
gpointer *children; gpointer *children;
gsize n_children; gsize n_children;

View File

@ -333,7 +333,7 @@ gvs_variable_sized_maybe_needed_size (GVariantTypeInfo *type_info,
{ {
if (n_children) if (n_children)
{ {
GVariantSerialised child = { }; GVariantSerialised child = { 0, };
gvs_filler (&child, children[0]); gvs_filler (&child, children[0]);
@ -414,7 +414,7 @@ static GVariantSerialised
gvs_fixed_sized_array_get_child (GVariantSerialised value, gvs_fixed_sized_array_get_child (GVariantSerialised value,
gsize index_) gsize index_)
{ {
GVariantSerialised child = { }; GVariantSerialised child = { 0, };
child.type_info = g_variant_type_info_element (value.type_info); child.type_info = g_variant_type_info_element (value.type_info);
g_variant_type_info_query (child.type_info, NULL, &child.size); g_variant_type_info_query (child.type_info, NULL, &child.size);
@ -443,7 +443,7 @@ gvs_fixed_sized_array_serialise (GVariantSerialised value,
const gpointer *children, const gpointer *children,
gsize n_children) gsize n_children)
{ {
GVariantSerialised child = { }; GVariantSerialised child = { 0, };
gsize i; gsize i;
child.type_info = g_variant_type_info_element (value.type_info); child.type_info = g_variant_type_info_element (value.type_info);
@ -460,7 +460,7 @@ gvs_fixed_sized_array_serialise (GVariantSerialised value,
static gboolean static gboolean
gvs_fixed_sized_array_is_normal (GVariantSerialised value) gvs_fixed_sized_array_is_normal (GVariantSerialised value)
{ {
GVariantSerialised child = { }; GVariantSerialised child = { 0, };
child.type_info = g_variant_type_info_element (value.type_info); child.type_info = g_variant_type_info_element (value.type_info);
g_variant_type_info_query (child.type_info, NULL, &child.size); g_variant_type_info_query (child.type_info, NULL, &child.size);
@ -620,7 +620,7 @@ static GVariantSerialised
gvs_variable_sized_array_get_child (GVariantSerialised value, gvs_variable_sized_array_get_child (GVariantSerialised value,
gsize index_) gsize index_)
{ {
GVariantSerialised child = { }; GVariantSerialised child = { 0, };
gsize offset_size; gsize offset_size;
gsize last_end; gsize last_end;
gsize start; gsize start;
@ -676,7 +676,7 @@ gvs_variable_sized_array_needed_size (GVariantTypeInfo *type_info,
for (i = 0; i < n_children; i++) for (i = 0; i < n_children; i++)
{ {
GVariantSerialised child = { }; GVariantSerialised child = { 0, };
offset += (-offset) & alignment; offset += (-offset) & alignment;
gvs_filler (&child, children[i]); gvs_filler (&child, children[i]);
@ -706,7 +706,7 @@ gvs_variable_sized_array_serialise (GVariantSerialised value,
for (i = 0; i < n_children; i++) for (i = 0; i < n_children; i++)
{ {
GVariantSerialised child = { }; GVariantSerialised child = { 0, };
while (offset & alignment) while (offset & alignment)
value.data[offset++] = '\0'; value.data[offset++] = '\0';
@ -723,7 +723,7 @@ gvs_variable_sized_array_serialise (GVariantSerialised value,
static gboolean static gboolean
gvs_variable_sized_array_is_normal (GVariantSerialised value) gvs_variable_sized_array_is_normal (GVariantSerialised value)
{ {
GVariantSerialised child = { }; GVariantSerialised child = { 0, };
gsize offsets_array_size; gsize offsets_array_size;
guchar *offsets_array; guchar *offsets_array;
guint offset_size; guint offset_size;
@ -825,7 +825,7 @@ gvs_tuple_get_child (GVariantSerialised value,
gsize index_) gsize index_)
{ {
const GVariantMemberInfo *member_info; const GVariantMemberInfo *member_info;
GVariantSerialised child = { }; GVariantSerialised child = { 0, };
gsize offset_size; gsize offset_size;
gsize start, end; gsize start, end;
@ -936,7 +936,7 @@ gvs_tuple_needed_size (GVariantTypeInfo *type_info,
offset += fixed_size; offset += fixed_size;
else else
{ {
GVariantSerialised child = { }; GVariantSerialised child = { 0, };
gvs_filler (&child, children[i]); gvs_filler (&child, children[i]);
offset += child.size; offset += child.size;
@ -962,7 +962,7 @@ gvs_tuple_serialise (GVariantSerialised value,
for (i = 0; i < n_children; i++) for (i = 0; i < n_children; i++)
{ {
const GVariantMemberInfo *member_info; const GVariantMemberInfo *member_info;
GVariantSerialised child = { }; GVariantSerialised child = { 0, };
guint alignment; guint alignment;
member_info = g_variant_type_info_member_info (value.type_info, i); member_info = g_variant_type_info_member_info (value.type_info, i);
@ -1112,7 +1112,7 @@ static inline GVariantSerialised
gvs_variant_get_child (GVariantSerialised value, gvs_variant_get_child (GVariantSerialised value,
gsize index_) gsize index_)
{ {
GVariantSerialised child = { }; GVariantSerialised child = { 0, };
/* NOTE: not O(1) and impossible for it to be... */ /* NOTE: not O(1) and impossible for it to be... */
if (value.size) if (value.size)
@ -1169,7 +1169,7 @@ gvs_variant_needed_size (GVariantTypeInfo *type_info,
const gpointer *children, const gpointer *children,
gsize n_children) gsize n_children)
{ {
GVariantSerialised child = { }; GVariantSerialised child = { 0, };
const gchar *type_string; const gchar *type_string;
gvs_filler (&child, children[0]); gvs_filler (&child, children[0]);
@ -1184,7 +1184,7 @@ gvs_variant_serialise (GVariantSerialised value,
const gpointer *children, const gpointer *children,
gsize n_children) gsize n_children)
{ {
GVariantSerialised child = { }; GVariantSerialised child = { 0, };
const gchar *type_string; const gchar *type_string;
child.data = value.data; child.data = value.data;

View File

@ -1084,13 +1084,17 @@ const gchar *
g_variant_get_string (GVariant *value, g_variant_get_string (GVariant *value,
gsize *length) gsize *length)
{ {
gconstpointer data;
gsize size;
g_return_val_if_fail (value != NULL, NULL); g_return_val_if_fail (value != NULL, NULL);
g_return_val_if_fail ( g_return_val_if_fail (
g_variant_is_of_type (value, G_VARIANT_TYPE_STRING) || g_variant_is_of_type (value, G_VARIANT_TYPE_STRING) ||
g_variant_is_of_type (value, G_VARIANT_TYPE_OBJECT_PATH) || g_variant_is_of_type (value, G_VARIANT_TYPE_OBJECT_PATH) ||
g_variant_is_of_type (value, G_VARIANT_TYPE_SIGNATURE), NULL); g_variant_is_of_type (value, G_VARIANT_TYPE_SIGNATURE), NULL);
gconstpointer data = g_variant_get_data (value);
gsize size = g_variant_get_size (value); data = g_variant_get_data (value);
size = g_variant_get_size (value);
if (!g_variant_is_trusted (value)) if (!g_variant_is_trusted (value))
{ {

View File

@ -111,33 +111,35 @@ typedef struct
/* Hard-code the base types in a constant array */ /* Hard-code the base types in a constant array */
static const GVariantTypeInfo g_variant_type_info_basic_table[24] = { static const GVariantTypeInfo g_variant_type_info_basic_table[24] = {
#define fixed_aligned(x) x, x - 1 #define fixed_aligned(x) x, x - 1
#define not_a_type 0,
#define unaligned 0, 0 #define unaligned 0, 0
#define aligned(x) 0, x - 1 #define aligned(x) 0, x - 1
/* 'b' */ { fixed_aligned(1) }, /* boolean */ /* 'b' */ { fixed_aligned(1) }, /* boolean */
/* 'c' */ { }, /* 'c' */ { not_a_type },
/* 'd' */ { fixed_aligned(8) }, /* double */ /* 'd' */ { fixed_aligned(8) }, /* double */
/* 'e' */ { }, /* 'e' */ { not_a_type },
/* 'f' */ { }, /* 'f' */ { not_a_type },
/* 'g' */ { unaligned }, /* signature string */ /* 'g' */ { unaligned }, /* signature string */
/* 'h' */ { fixed_aligned(4) }, /* file handle (int32) */ /* 'h' */ { fixed_aligned(4) }, /* file handle (int32) */
/* 'i' */ { fixed_aligned(4) }, /* int32 */ /* 'i' */ { fixed_aligned(4) }, /* int32 */
/* 'j' */ { }, /* 'j' */ { not_a_type },
/* 'k' */ { }, /* 'k' */ { not_a_type },
/* 'l' */ { }, /* 'l' */ { not_a_type },
/* 'm' */ { }, /* 'm' */ { not_a_type },
/* 'n' */ { fixed_aligned(2) }, /* int16 */ /* 'n' */ { fixed_aligned(2) }, /* int16 */
/* 'o' */ { unaligned }, /* object path string */ /* 'o' */ { unaligned }, /* object path string */
/* 'p' */ { }, /* 'p' */ { not_a_type },
/* 'q' */ { fixed_aligned(2) }, /* uint16 */ /* 'q' */ { fixed_aligned(2) }, /* uint16 */
/* 'r' */ { }, /* 'r' */ { not_a_type },
/* 's' */ { unaligned }, /* string */ /* 's' */ { unaligned }, /* string */
/* 't' */ { fixed_aligned(8) }, /* uint64 */ /* 't' */ { fixed_aligned(8) }, /* uint64 */
/* 'u' */ { fixed_aligned(4) }, /* uint32 */ /* 'u' */ { fixed_aligned(4) }, /* uint32 */
/* 'v' */ { aligned(8) }, /* variant */ /* 'v' */ { aligned(8) }, /* variant */
/* 'w' */ { }, /* 'w' */ { not_a_type },
/* 'x' */ { fixed_aligned(8) }, /* int64 */ /* 'x' */ { fixed_aligned(8) }, /* int64 */
/* 'y' */ { fixed_aligned(1) }, /* byte */ /* 'y' */ { fixed_aligned(1) }, /* byte */
#undef fixed_aligned #undef fixed_aligned
#undef not_a_type
#undef unaligned #undef unaligned
#undef aligned #undef aligned
}; };