summaryrefslogtreecommitdiff
path: root/girepository/girparser.c
diff options
context:
space:
mode:
Diffstat (limited to 'girepository/girparser.c')
-rw-r--r--girepository/girparser.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/girepository/girparser.c b/girepository/girparser.c
index 678edcc3..7796bea2 100644
--- a/girepository/girparser.c
+++ b/girepository/girparser.c
@@ -1640,6 +1640,11 @@ start_class (GMarkupParseContext *context,
const gchar *typeinit;
const gchar *deprecated;
const gchar *abstract;
+ const gchar *fundamental;
+ const gchar *ref_func;
+ const gchar *unref_func;
+ const gchar *set_value_func;
+ const gchar *get_value_func;
GIrNodeInterface *iface;
if (!(strcmp (element_name, "class") == 0 &&
@@ -1656,6 +1661,11 @@ start_class (GMarkupParseContext *context,
typeinit = find_attribute ("glib:get-type", attribute_names, attribute_values);
deprecated = find_attribute ("deprecated", attribute_names, attribute_values);
abstract = find_attribute ("abstract", attribute_names, attribute_values);
+ fundamental = find_attribute ("glib:fundamental", attribute_names, attribute_values);
+ ref_func = find_attribute ("glib:ref-func", attribute_names, attribute_values);
+ unref_func = find_attribute ("glib:unref-func", attribute_names, attribute_values);
+ set_value_func = find_attribute ("glib:set-value-func", attribute_names, attribute_values);
+ get_value_func = find_attribute ("glib:get-value-func", attribute_names, attribute_values);
if (name == NULL)
{
@@ -1686,6 +1696,15 @@ start_class (GMarkupParseContext *context,
iface->abstract = abstract && strcmp (abstract, "1") == 0;
+ if (ref_func)
+ iface->ref_func = g_strdup (ref_func);
+ if (unref_func)
+ iface->unref_func = g_strdup (unref_func);
+ if (set_value_func)
+ iface->set_value_func = g_strdup (set_value_func);
+ if (get_value_func)
+ iface->get_value_func = g_strdup (get_value_func);
+
push_node (ctx, (GIrNode *) iface);
ctx->current_module->entries =
g_list_append (ctx->current_module->entries, iface);