From: Jürg Billeter Date: Tue, 16 Dec 2008 18:43:55 +0000 (+0000) Subject: Extend metadata support for delegates X-Git-Tag: VALA_0_5_3~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=25de0c18e1722f5425f76dbaa3e97f548b02b800;p=thirdparty%2Fvala.git Extend metadata support for delegates 2008-12-16 Jürg Billeter * vapigen/valagidlparser.vala: Extend metadata support for delegates * vapi/packages/libnotify/: Fix NotifyActionCallback and notify_notification_add_action bindings, fixes bug 562726 * vapi/libnotify.vapi: regenerated svn path=/trunk/; revision=2183 --- diff --git a/ChangeLog b/ChangeLog index 8613325f3..5b1b57457 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2008-12-16 Jürg Billeter + + * vapigen/valagidlparser.vala: + + Extend metadata support for delegates + + * vapi/packages/libnotify/: + + Fix NotifyActionCallback and notify_notification_add_action + bindings, fixes bug 562726 + + * vapi/libnotify.vapi: regenerated + 2008-12-16 Jürg Billeter * vapigen/valagirparser.vala: diff --git a/vapi/libnotify.vapi b/vapi/libnotify.vapi index 5e0918194..6e567f49d 100644 --- a/vapi/libnotify.vapi +++ b/vapi/libnotify.vapi @@ -4,7 +4,7 @@ namespace Notify { [CCode (cheader_filename = "libnotify/notify.h")] public class Notification : GLib.Object { - public void add_action (string action, string label, Notify.ActionCallback callback, GLib.FreeFunc free_func); + public void add_action (string action, string label, Notify.ActionCallback# callback); public void attach_to_status_icon (Gtk.StatusIcon status_icon); public void attach_to_widget (Gtk.Widget attach); public void clear_actions (); @@ -15,7 +15,7 @@ namespace Notify { public void set_category (string category); public void set_geometry_hints (Gdk.Screen screen, int x, int y); public void set_hint_byte (string key, uchar value); - public void set_hint_byte_array (string key, uchar[] value, ulong len); + public void set_hint_byte_array (string key, uchar[] value, size_t len); public void set_hint_double (string key, double value); public void set_hint_int32 (string key, int value); public void set_hint_string (string key, string value); @@ -45,7 +45,7 @@ namespace Notify { CRITICAL } [CCode (cheader_filename = "libnotify/notify.h")] - public static delegate void ActionCallback (Notify.Notification p1, string p2, void* p3); + public delegate void ActionCallback (Notify.Notification p1, string p2); [CCode (cheader_filename = "libnotify/notify.h")] public const int EXPIRES_DEFAULT; [CCode (cheader_filename = "libnotify/notify.h")] diff --git a/vapi/packages/libnotify/libnotify.metadata b/vapi/packages/libnotify/libnotify.metadata index 4408d78a2..a36d130c4 100644 --- a/vapi/packages/libnotify/libnotify.metadata +++ b/vapi/packages/libnotify/libnotify.metadata @@ -1,2 +1,7 @@ Notify cheader_filename="libnotify/notify.h" +NotifyActionCallback has_target="1" +NotifyActionCallback.p3 hidden="1" +notify_notification_add_action.callback transfer_ownership="1" +notify_notification_add_action.free_func hidden="1" + diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala index 096c74c91..a41da99eb 100644 --- a/vapigen/valagidlparser.vala +++ b/vapigen/valagidlparser.vala @@ -309,6 +309,8 @@ public class Vala.GIdlParser : CodeVisitor { } else if (nv[0] == "has_target") { if (eval (nv[1]) == "0") { check_has_target = false; + } else if (eval (nv[1]) == "1") { + cb.has_target = true; } } } @@ -334,7 +336,26 @@ public class Vala.GIdlParser : CodeVisitor { ParameterDirection direction; var p = new FormalParameter (param_name, parse_param (param, out direction)); p.direction = direction; - cb.add_parameter (p); + + bool hide_param = false; + bool show_param = false; + attributes = get_attributes ("%s.%s".printf (node.name, param_node.name)); + if (attributes != null) { + foreach (string attr in attributes) { + var nv = attr.split ("=", 2); + if (nv[0] == "hidden") { + if (eval (nv[1]) == "1") { + hide_param = true; + } else if (eval (nv[1]) == "0") { + show_param = true; + } + } + } + } + + if (show_param || !hide_param) { + cb.add_parameter (p); + } } remaining_params--;