Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/girepository/girnode.c
diff options
context:
space:
mode:
authorColin Walters <walters@src.gnome.org>2008-10-25 15:20:54 (GMT)
committer Colin Walters <walters@src.gnome.org>2008-10-25 15:20:54 (GMT)
commitd15f8cde47100a77189d5febb8704c0e4d736594 (patch)
tree651b1c0990dbf5ec99c77139e1a648aca63d5ec5 /girepository/girnode.c
parentc7d2a0712f6301aa670f87a98e8f217bf3c54a7a (diff)
Bug 557786 - support fixed size arrays
svn path=/trunk/; revision=814
Diffstat (limited to 'girepository/girnode.c')
-rw-r--r--girepository/girnode.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/girepository/girnode.c b/girepository/girnode.c
index fad4c28..632d5c3 100644
--- a/girepository/girnode.c
+++ b/girepository/girnode.c
@@ -1114,6 +1114,8 @@ serialize_type (GIrModule *module,
if (node->has_length)
g_string_append_printf (str, "length=%d", node->length);
+ else if (node->has_size)
+ g_string_append_printf (str, "fixed-size=%d", node->size);
if (node->zero_terminated)
g_string_append_printf (str, "%szero-terminated=1",
@@ -1319,8 +1321,14 @@ g_ir_node_build_typelib (GIrNode *node,
array->tag = type->tag;
array->zero_terminated = type->zero_terminated;
array->has_length = type->has_length;
+ array->has_size = type->has_size;
array->reserved2 = 0;
- array->length = type->length;
+ if (array->has_length)
+ array->length = type->length;
+ else if (array->has_size)
+ array->size = type->size;
+ else
+ array->length = -1;
pos = *offset2 + 4;
*offset2 += 8;