From 88729bd7fa5e377937f4687b93e9a000a9001fae Mon Sep 17 00:00:00 2001 From: Juerg Billeter Date: Wed, 23 Apr 2008 11:20:24 +0000 Subject: [PATCH] Add support for delegate_target_pos metadata attribute 2008-04-23 Juerg Billeter * vala/valaenum.vala: * vapigen/valagidlparser.vala: Add support for delegate_target_pos metadata attribute svn path=/trunk/; revision=1306 --- ChangeLog | 6 ++++++ vala/valaenum.vala | 2 +- vapigen/valagidlparser.vala | 11 +++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 19ec599..32978eb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-04-23 Jürg Billeter + + * vala/valaenum.vala: + * vapigen/valagidlparser.vala: + Add support for delegate_target_pos metadata attribute + 2008-04-22 Jürg Billeter * vapi/libftdi.vapi: mark enums as public, patch by Evan Nemerson diff --git a/vala/valaenum.vala b/vala/valaenum.vala index f924608..4d63e0b 100644 --- a/vala/valaenum.vala +++ b/vala/valaenum.vala @@ -179,7 +179,7 @@ public class Vala.Enum : Typesymbol { * * @param cprefix the prefix to be used in C code */ - public void set_cprefix (string cprefix) { + public void set_cprefix (string? cprefix) { this.cprefix = cprefix; } diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala index 36d66a4..ad7cac5 100644 --- a/vapigen/valagidlparser.vala +++ b/vapigen/valagidlparser.vala @@ -314,6 +314,9 @@ public class Vala.GIdlParser : CodeVisitor { if (param_name == "string") { // avoid conflict with string type param_name = "str"; + } else if (param_name == "self") { + // avoid conflict with delegate target + param_name = "_self"; } ParameterDirection direction; @@ -1334,6 +1337,8 @@ public class Vala.GIdlParser : CodeVisitor { bool show_param = false; bool set_array_length_pos = false; double array_length_pos = 0; + bool set_delegate_target_pos = false; + double delegate_target_pos = 0; var attributes = get_attributes ("%s.%s".printf (symbol, param_node.name)); if (attributes != null) { foreach (string attr in attributes) { @@ -1372,6 +1377,9 @@ public class Vala.GIdlParser : CodeVisitor { } else if (nv[0] == "array_length_pos") { set_array_length_pos = true; array_length_pos = eval (nv[1]).to_double (); + } else if (nv[0] == "delegate_target_pos") { + set_delegate_target_pos = true; + delegate_target_pos = eval (nv[1]).to_double (); } else if (nv[0] == "type_name") { ((UnresolvedType) param_type).unresolved_symbol = new UnresolvedSymbol (null, eval (nv[1])); } else if (nv[0] == "type_arguments") { @@ -1404,6 +1412,9 @@ public class Vala.GIdlParser : CodeVisitor { if (set_array_length_pos) { p.carray_length_parameter_position = array_length_pos; } + if (set_delegate_target_pos) { + p.cdelegate_target_parameter_position = delegate_target_pos; + } } last_param = p; -- 2.7.4