summaryrefslogtreecommitdiff
path: root/girepository/girparser.c
diff options
context:
space:
mode:
authorTommi Komulainen <tommi.komulainen@iki.fi>2008-10-12 21:07:22 +0000
committerTommi Komulainen <tko@src.gnome.org>2008-10-12 21:07:22 +0000
commitf42bdbea676c8201e22346eafe086a986cd5b630 (patch)
treeaa72df72f1b86d55fab8b60356b3d52dbc874281 /girepository/girparser.c
parent2c1bd37ccbf65f46471929045447dea17e4f0139 (diff)
downloadgobject-introspection-f42bdbea676c8201e22346eafe086a986cd5b630.tar.gz
Refactor handling of transfer=none/shallow/full to separate function
2008-10-12 Tommi Komulainen <tommi.komulainen@iki.fi> * girepository/girparser.c (parse_param_transfer, start_parameter): Refactor handling of transfer=none/shallow/full to separate function svn path=/trunk/; revision=688
Diffstat (limited to 'girepository/girparser.c')
-rw-r--r--girepository/girparser.c58
1 files changed, 32 insertions, 26 deletions
diff --git a/girepository/girparser.c b/girepository/girparser.c
index 5b66fa68..b8bff22e 100644
--- a/girepository/girparser.c
+++ b/girepository/girparser.c
@@ -658,6 +658,36 @@ start_function (GMarkupParseContext *context,
return TRUE;
}
+static void
+parse_param_transfer (GIrNodeParam *param, const gchar *transfer)
+{
+ if (transfer && strcmp (transfer, "none") == 0)
+ {
+ param->transfer = FALSE;
+ param->shallow_transfer = FALSE;
+ }
+ else if (transfer && strcmp (transfer, "shallow") == 0)
+ {
+ param->transfer = FALSE;
+ param->shallow_transfer = TRUE;
+ }
+ else
+ {
+ if (transfer)
+ {
+ if (strcmp (transfer, "full") != 0)
+ g_warning ("Unknown transfer %s", transfer);
+ else
+ param->transfer = TRUE;
+ }
+ else if (param->in && !param->out)
+ param->transfer = FALSE;
+ else
+ param->transfer = TRUE;
+ param->shallow_transfer = FALSE;
+ }
+}
+
static gboolean
start_parameter (GMarkupParseContext *context,
const gchar *element_name,
@@ -733,32 +763,8 @@ start_parameter (GMarkupParseContext *context,
else
param->null_ok = FALSE;
- if (transfer && strcmp (transfer, "none") == 0)
- {
- param->transfer = FALSE;
- param->shallow_transfer = FALSE;
- }
- else if (transfer && strcmp (transfer, "shallow") == 0)
- {
- param->transfer = FALSE;
- param->shallow_transfer = TRUE;
- }
- else
- {
- if (transfer)
- {
- if (strcmp (transfer, "full") != 0)
- g_warning ("Unknown transfer %s", transfer);
- else
- param->transfer = TRUE;
- }
- else if (param->in && !param->out)
- param->transfer = FALSE;
- else
- param->transfer = TRUE;
- param->shallow_transfer = FALSE;
- }
-
+ parse_param_transfer (param, transfer);
+
((GIrNode *)param)->name = g_strdup (name);
switch (ctx->current_node->type)