summaryrefslogtreecommitdiff
path: root/girepository/girnode.c
diff options
context:
space:
mode:
authorTorsten Schönfeld <kaffeetisch@gmx.de>2011-08-13 17:28:30 +0200
committerTorsten Schönfeld <kaffeetisch@gmx.de>2011-08-16 18:43:23 +0200
commit169b206cbb4b347e4b17854e8f0c62a40404f803 (patch)
tree929ddaefcedf7c9d4778ea355e58f0b1cc2f2f96 /girepository/girnode.c
parent64848acb817369436d629d153c5750789c0addc3 (diff)
downloadgobject-introspection-169b206cbb4b347e4b17854e8f0c62a40404f803.tar.gz
Allow enums and bitfields to have static methods
This uses the same backcompat machinery that was introduced for static methods for non-class types, so this change does not break users of the existing presentations. New libgirepository API: g_enum_info_get_n_methods g_enum_info_get_method https://bugzilla.gnome.org/show_bug.cgi?id=656499
Diffstat (limited to 'girepository/girnode.c')
-rw-r--r--girepository/girnode.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/girepository/girnode.c b/girepository/girnode.c
index 166ca30a..fcc8ce5e 100644
--- a/girepository/girnode.c
+++ b/girepository/girnode.c
@@ -333,6 +333,10 @@ _g_ir_node_free (GIrNode *node)
for (l = enum_->values; l; l = l->next)
_g_ir_node_free ((GIrNode *)l->data);
g_list_free (enum_->values);
+
+ for (l = enum_->methods; l; l = l->next)
+ _g_ir_node_free ((GIrNode *)l->data);
+ g_list_free (enum_->methods);
}
break;
@@ -467,6 +471,8 @@ _g_ir_node_get_size (GIrNode *node)
size = sizeof (EnumBlob);
for (l = enum_->values; l; l = l->next)
size += _g_ir_node_get_size ((GIrNode *)l->data);
+ for (l = enum_->methods; l; l = l->next)
+ size += _g_ir_node_get_size ((GIrNode *)l->data);
}
break;
@@ -718,6 +724,8 @@ _g_ir_node_get_full_size_internal (GIrNode *parent,
for (l = enum_->values; l; l = l->next)
size += _g_ir_node_get_full_size_internal (node, (GIrNode *)l->data);
+ for (l = enum_->methods; l; l = l->next)
+ size += _g_ir_node_get_full_size_internal (node, (GIrNode *)l->data);
}
break;
@@ -2030,7 +2038,7 @@ _g_ir_node_build_typelib (GIrNode *node,
blob->error_domain = 0;
blob->n_values = 0;
- blob->reserved2 = 0;
+ blob->n_methods = 0;
for (l = enum_->values; l; l = l->next)
{
@@ -2039,6 +2047,14 @@ _g_ir_node_build_typelib (GIrNode *node,
blob->n_values++;
_g_ir_node_build_typelib (value, node, build, offset, offset2);
}
+
+ for (l = enum_->methods; l; l = l->next)
+ {
+ GIrNode *method = (GIrNode *)l->data;
+
+ blob->n_methods++;
+ _g_ir_node_build_typelib (method, node, build, offset, offset2);
+ }
}
break;