Allow vapi metadata to declare abstract methods, fix GtkCellRenderer
authorRaffaele Sandrini <raffaele@sandrini.ch>
Tue, 8 Jul 2008 09:59:21 +0000 (09:59 +0000)
committerRaffaele Sandrini <rasa@src.gnome.org>
Tue, 8 Jul 2008 09:59:21 +0000 (09:59 +0000)
2008-07-08  Raffaele Sandrini  <raffaele@sandrini.ch>

* vapi/packages/gtk+-2.0/gtk+-2.0.metadata:
* vapigen/valagidlparser.vala:

Allow vapi metadata to declare abstract methods, fix GtkCellRenderer
methods _get_size and _render to be abstract, based on patch by
Jared Moore, fixes bug 522355

* vapi/gtk+-2.0.vapi: Regenerated

svn path=/trunk/; revision=1687

ChangeLog
vapi/gtk+-2.0.vapi
vapi/packages/gtk+-2.0/gtk+-2.0.metadata
vapigen/valagidlparser.vala

index c5d71bd..3c3314b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2008-07-08  Raffaele Sandrini  <raffaele@sandrini.ch>
+
+       * vapi/packages/gtk+-2.0/gtk+-2.0.metadata:
+       * vapigen/valagidlparser.vala:
+
+       Allow vapi metadata to declare abstract methods, fix GtkCellRenderer
+       methods _get_size and _render to be abstract, based on patch by
+       Jared Moore, fixes bug 522355
+
+       * vapi/gtk+-2.0.vapi: Regenerated
+
 2008-07-08  Jürg Billeter  <j@bitron.ch>
 
        * gobject/valaccodeclassbinding.vala:
index 6f6f005..ad2cd2c 100644 (file)
@@ -1,4 +1,4 @@
-/* gtk+-2.0.vapi generated by vapigen, do not modify. */
+/* gtk+-2.0.vapi generated by lt-vapigen, do not modify. */
 
 [CCode (cprefix = "Gtk", lower_case_cprefix = "gtk_")]
 namespace Gtk {
@@ -2190,14 +2190,14 @@ namespace Gtk {
                public virtual signal void prev_year ();
        }
        [CCode (cheader_filename = "gtk/gtk.h")]
-       public class CellRenderer : Gtk.Object {
+       public abstract class CellRenderer : Gtk.Object {
                public uint editing;
                public void get_fixed_size (int width, int height);
                public void set_fixed_size (int width, int height);
                public void stop_editing (bool canceled);
                public virtual bool activate (Gdk.Event event, Gtk.Widget widget, string path, Gdk.Rectangle background_area, Gdk.Rectangle cell_area, Gtk.CellRendererState flags);
-               public virtual void get_size (Gtk.Widget widget, Gdk.Rectangle? cell_area, out int x_offset, out int y_offset, out int width, out int height);
-               public virtual void render (Gdk.Window window, Gtk.Widget widget, Gdk.Rectangle background_area, Gdk.Rectangle cell_area, Gdk.Rectangle expose_area, Gtk.CellRendererState flags);
+               public abstract void get_size (Gtk.Widget widget, Gdk.Rectangle? cell_area, out int x_offset, out int y_offset, out int width, out int height);
+               public abstract void render (Gdk.Window window, Gtk.Widget widget, Gdk.Rectangle background_area, Gdk.Rectangle cell_area, Gdk.Rectangle expose_area, Gtk.CellRendererState flags);
                public virtual weak Gtk.CellEditable start_editing (Gdk.Event event, Gtk.Widget widget, string path, Gdk.Rectangle background_area, Gdk.Rectangle cell_area, Gtk.CellRendererState flags);
                [NoAccessorMethod]
                public string cell_background { set; }
index 8c71b97..c1b6f0e 100644 (file)
@@ -57,11 +57,14 @@ GtkCellEditable::editing_done has_emitter="1"
 GtkCellEditable::remove_widget has_emitter="1"
 GtkCellEditable::start_editing has_emitter="1"
 gtk_cell_layout_set_attributes ellipsis="1"
+gtk_cell_renderer_get_size abstract="1"
 gtk_cell_renderer_get_size.cell_area nullable="1"
 gtk_cell_renderer_get_size.x_offset is_out="1"
 gtk_cell_renderer_get_size.y_offset is_out="1"
 gtk_cell_renderer_get_size.width is_out="1"
 gtk_cell_renderer_get_size.height is_out="1"
+gtk_cell_renderer_render abstract="1"
+GtkCellRenderer abstract="1"
 GtkCellRenderer::editing_canceled has_emitter="1"
 gtk_cell_view_get_size_of_row.requisition is_out="1"
 gtk_cell_view_set_model.model nullable="1"
index 0d512a4..c97d87d 100644 (file)
@@ -843,6 +843,10 @@ public class Vala.GIdlParser : CodeVisitor {
                                                if (eval (nv[1]) == "1") {
                                                        return;
                                                }
+                                       } else if (nv[0] == "abstract") {
+                                               if (eval (nv[1]) == "1") {
+                                                       cl.is_abstract = true;
+                                               }
                                        }
                                }
                        }
@@ -1326,6 +1330,10 @@ public class Vala.GIdlParser : CodeVisitor {
                                        }
                                } else if (nv[0] == "cheader_filename") {
                                        m.add_cheader_filename (eval (nv[1]));
+                               } else if (nv[0] == "abstract") {
+                                       if (eval (nv[1]) == "1") {
+                                               m.is_abstract = true;
+                                       }
                                }
                        }
                }
@@ -1536,8 +1544,8 @@ public class Vala.GIdlParser : CodeVisitor {
                Method m = create_method (node.name, symbol, v.result, func != null ? func.parameters : v.parameters, false, is_interface);
                if (m != null) {
                        m.binding = MemberBinding.INSTANCE;
-                       m.is_virtual = !is_interface;
-                       m.is_abstract = is_interface;
+                       m.is_virtual = !(m.is_abstract || is_interface);
+                       m.is_abstract = m.is_abstract || is_interface;
 
                        if (func == null) {
                                m.attributes.append (new Attribute ("NoWrapper", null));