From: Luca Bruno Date: Sat, 6 Aug 2011 12:20:48 +0000 (+0200) Subject: gidlparser: Guess NoAccessorMethod for interface properties X-Git-Tag: 0.13.2~25 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bb445ce10b07f0c1f5b3debdf4463500ab32ba3d;p=thirdparty%2Fvala.git gidlparser: Guess NoAccessorMethod for interface properties Fixes bug 656072. --- diff --git a/vapi/gio-2.0.vapi b/vapi/gio-2.0.vapi index 558e834ba..543ea62b5 100644 --- a/vapi/gio-2.0.vapi +++ b/vapi/gio-2.0.vapi @@ -2066,6 +2066,7 @@ namespace GLib { [CCode (cheader_filename = "gio/gio.h")] public interface TlsServerConnection : GLib.TlsConnection { public static unowned GLib.IOStream @new (GLib.IOStream base_io_stream, GLib.TlsCertificate certificate) throws GLib.Error; + [NoAccessorMethod] public GLib.TlsAuthenticationMode authentication_mode { get; set; } } [CCode (cheader_filename = "gio/gio.h")] diff --git a/vapi/goocanvas.vapi b/vapi/goocanvas.vapi index 999a81a64..c7cf06d79 100644 --- a/vapi/goocanvas.vapi +++ b/vapi/goocanvas.vapi @@ -811,14 +811,21 @@ namespace Goo { public void stop_animation (); public void translate (double tx, double ty); public abstract void update (bool entire_tree, Cairo.Context cr, Goo.CanvasBounds bounds); + [NoAccessorMethod] public bool can_focus { get; set; } - public string description { get; set; } + [NoAccessorMethod] + public string description { owned get; set; } public Goo.CanvasItem parent { get; set; } + [NoAccessorMethod] public Goo.CanvasPointerEvents pointer_events { get; set; } - public string title { get; set; } - public string tooltip { get; set; } + [NoAccessorMethod] + public string title { owned get; set; } + [NoAccessorMethod] + public string tooltip { owned get; set; } public Goo.CairoMatrix transform { get; set; } + [NoAccessorMethod] public Goo.CanvasItemVisibility visibility { get; set; } + [NoAccessorMethod] public double visibility_threshold { get; set; } public signal void animation_finished (bool stopped); public signal bool button_press_event (Goo.CanvasItem target, Gdk.EventButton event); @@ -871,14 +878,21 @@ namespace Goo { public void skew_y (double degrees, double cx, double cy); public void stop_animation (); public void translate (double tx, double ty); + [NoAccessorMethod] public bool can_focus { get; set; } - public string description { get; set; } + [NoAccessorMethod] + public string description { owned get; set; } public Goo.CanvasItemModel parent { get; set; } + [NoAccessorMethod] public Goo.CanvasPointerEvents pointer_events { get; set; } - public string title { get; set; } - public string tooltip { get; set; } + [NoAccessorMethod] + public string title { owned get; set; } + [NoAccessorMethod] + public string tooltip { owned get; set; } public Goo.CairoMatrix transform { get; set; } + [NoAccessorMethod] public Goo.CanvasItemVisibility visibility { get; set; } + [NoAccessorMethod] public double visibility_threshold { get; set; } public signal void animation_finished (bool stopped); public signal void changed (bool recompute_bounds); diff --git a/vapi/gtk+-2.0.vapi b/vapi/gtk+-2.0.vapi index 225dadef1..75d6c8d98 100644 --- a/vapi/gtk+-2.0.vapi +++ b/vapi/gtk+-2.0.vapi @@ -5987,6 +5987,7 @@ namespace Gtk { [CCode (cheader_filename = "gtk/gtk.h")] public interface CellEditable : Gtk.Widget { public abstract void start_editing (Gdk.Event event); + [NoAccessorMethod] public bool editing_canceled { get; set; } [HasEmitter] public signal void editing_done (); diff --git a/vapi/gtk+-3.0.vapi b/vapi/gtk+-3.0.vapi index 7b1417793..937ed40cb 100644 --- a/vapi/gtk+-3.0.vapi +++ b/vapi/gtk+-3.0.vapi @@ -5857,6 +5857,7 @@ namespace Gtk { [CCode (cheader_filename = "gtk/gtk.h")] public interface CellEditable : Gtk.Widget { public abstract void start_editing (Gdk.Event event); + [NoAccessorMethod] public bool editing_canceled { get; set; } [HasEmitter] public signal void editing_done (); diff --git a/vapi/mx-1.0.vapi b/vapi/mx-1.0.vapi index 151f15b60..7ecb93404 100644 --- a/vapi/mx-1.0.vapi +++ b/vapi/mx-1.0.vapi @@ -747,6 +747,7 @@ namespace Mx { public void set_drag_threshold (uint threshold); public Mx.DragAxis axis { get; set; } public Clutter.Actor drag_actor { get; set; } + [NoAccessorMethod] public bool drag_enabled { get; set; } public uint drag_threshold { get; set; } public signal void drag_begin (float event_x, float event_y, int event_button, Clutter.ModifierType modifiers); @@ -759,6 +760,7 @@ namespace Mx { public void disable (); public void enable (); public bool is_enabled (); + [NoAccessorMethod] public bool drop_enabled { get; set; } public signal void drop (Clutter.Actor draggable, float event_x, float event_y, int button, Clutter.ModifierType modifiers); public signal void over_in (Clutter.Actor draggable); diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala index e3d072855..d3525b152 100644 --- a/vapigen/valagidlparser.vala +++ b/vapigen/valagidlparser.vala @@ -1668,6 +1668,7 @@ public class Vala.GIdlParser : CodeVisitor { current_data_type = iface; + current_type_symbol_set = new HashSet (str_hash, str_equal); var current_type_func_map = new HashMap (str_hash, str_equal); var current_type_vfunc_map = new HashMap (str_hash, str_equal); @@ -1708,6 +1709,25 @@ public class Vala.GIdlParser : CodeVisitor { } } + foreach (Property prop in iface.get_properties ()) { + var getter = "get_%s".printf (prop.name); + + if (prop.get_accessor != null && !current_type_symbol_set.contains (getter)) { + prop.set_attribute ("NoAccessorMethod", true); + } + + var setter = "set_%s".printf (prop.name); + + if (prop.set_accessor != null && prop.set_accessor.writable + && !current_type_symbol_set.contains (setter)) { + prop.set_attribute ("NoAccessorMethod", true); + } + + if (prop.get_attribute ("NoAccessorMethod") != null && prop.get_accessor != null) { + prop.get_accessor.value_type.value_owned = true; + } + } + handle_async_methods (iface); current_data_type = null;