summaryrefslogtreecommitdiff
path: root/codegen/valagirwriter.vala
diff options
context:
space:
mode:
authorAbderrahim Kitouni <a.kitouni@gmail.com>2009-12-03 21:10:28 +0100
committerJürg Billeter <j@bitron.ch>2010-01-17 13:48:35 +0100
commit495cd714aca44534b1cec1fb71edb20a40ae47d0 (patch)
tree50e0a6f3358aa16c6cfc871532323e6617a01e2f /codegen/valagirwriter.vala
parent93568146e15af82783e298bcc9948796d6ed2119 (diff)
downloadvala-495cd714aca44534b1cec1fb71edb20a40ae47d0.tar.gz
GIR writer: Write user_data parameter for delegates
Diffstat (limited to 'codegen/valagirwriter.vala')
-rw-r--r--codegen/valagirwriter.vala15
1 files changed, 13 insertions, 2 deletions
diff --git a/codegen/valagirwriter.vala b/codegen/valagirwriter.vala
index ee87ad48f..5d1ca71e9 100644
--- a/codegen/valagirwriter.vala
+++ b/codegen/valagirwriter.vala
@@ -509,7 +509,7 @@ public class Vala.GIRWriter : CodeVisitor {
}
}
- private void write_params_and_return (List<FormalParameter> params, DataType? return_type, bool return_array_length, bool constructor = false, DataType? instance_type = null) {
+ private void write_params_and_return (List<FormalParameter> params, DataType? return_type, bool return_array_length, bool constructor = false, DataType? instance_type = null, bool user_data = false) {
int last_index = 0;
if (params.size != 0 || instance_type != null || (return_type is ArrayType && return_array_length) || (return_type is DelegateType)) {
write_indent ();
@@ -530,6 +530,17 @@ public class Vala.GIRWriter : CodeVisitor {
last_index = index - 1;
write_implicit_params (return_type, ref index, return_array_length, "result", ParameterDirection.OUT);
+ if (user_data) {
+ write_indent ();
+ stream.printf ("<parameter name=\"user_data\" transfer-ownership=\"none\" closure=\"%d\">\n", index);
+ indent++;
+ write_indent ();
+ stream.printf ("<type name=\"any\" c:type=\"void*\"/>\n");
+ indent--;
+ write_indent ();
+ stream.printf ("</parameter>\n");
+ }
+
indent--;
write_indent ();
stream.printf ("</parameters>\n");
@@ -560,7 +571,7 @@ public class Vala.GIRWriter : CodeVisitor {
write_annotations (cb);
- write_params_and_return (cb.get_parameters (), cb.return_type, !cb.no_array_length);
+ write_params_and_return (cb.get_parameters (), cb.return_type, !cb.no_array_length, false, null, cb.has_target);
indent--;
write_indent ();