]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
support lower_case_csuffix attribute for interfaces
authorJuerg Billeter <j@bitron.ch>
Thu, 20 Mar 2008 23:45:20 +0000 (23:45 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Thu, 20 Mar 2008 23:45:20 +0000 (23:45 +0000)
2008-03-20  Juerg Billeter  <j@bitron.ch>

* vala/valainterface.vala, vala/valainterfacewriter.vala,
  vapigen/valagidlparser.vala: support lower_case_csuffix attribute
  for interfaces

* vapi/packages/gstreamer-interfaces-0.10/: fix GstXOverlay binding

* vapi/gstreamer-interfaces-0.10.vapi: regenerated

Patch by Andrea Del Signore, fixes bug 512744

svn path=/trunk/; revision=1140

ChangeLog
vala/valainterface.vala
vala/valainterfacewriter.vala
vapi/gstreamer-interfaces-0.10.vapi
vapi/packages/gstreamer-interfaces-0.10/gstreamer-interfaces-0.10.metadata
vapigen/valagidlparser.vala

index 258bdcdf02d545d561f0377b4e1646f1f218a6a6..df0892aede918515f4ecbc849a05b46e771203d2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2008-03-20  Jürg Billeter  <j@bitron.ch>
+
+       * vala/valainterface.vala, vala/valainterfacewriter.vala,
+         vapigen/valagidlparser.vala: support lower_case_csuffix attribute
+         for interfaces
+
+       * vapi/packages/gstreamer-interfaces-0.10/: fix GstXOverlay binding
+
+       * vapi/gstreamer-interfaces-0.10.vapi: regenerated
+
+       Patch by Andrea Del Signore, fixes bug 512744
+
 2008-03-19  Jürg Billeter  <j@bitron.ch>
 
        * vapi/glib-2.0.vapi: fix GTimeoutSource and GIdleSource bindings,
index e3615c1fa32db5a07ca8d4169ff80b677100e049..d726841208d5221da8ca6d1628fa943e538a2496 100644 (file)
@@ -263,20 +263,32 @@ public class Vala.Interface : Typesymbol {
         */
        public string! get_lower_case_csuffix () {
                if (lower_case_csuffix == null) {
-                       lower_case_csuffix = camel_case_to_lower_case (name);
-
-                       // remove underscores in some cases to avoid conflicts of type macros
-                       if (lower_case_csuffix.has_prefix ("type_")) {
-                               lower_case_csuffix = "type" + lower_case_csuffix.offset ("type_".len ());
-                       } else if (lower_case_csuffix.has_prefix ("is_")) {
-                               lower_case_csuffix = "is" + lower_case_csuffix.offset ("is_".len ());
-                       }
-                       if (lower_case_csuffix.has_suffix ("_class")) {
-                               lower_case_csuffix = lower_case_csuffix.substring (0, lower_case_csuffix.len () - "_class".len ()) + "class";
-                       }
+                       lower_case_csuffix = get_default_lower_case_csuffix ();
                }
                return lower_case_csuffix;
        }
+
+       /**
+        * Returns default string to be prepended to the name of members of this
+        * interface when used in C code.
+        *
+        * @return the suffix to be used in C code
+        */
+       public string! get_default_lower_case_csuffix () {
+               string result = camel_case_to_lower_case (name);
+
+               // remove underscores in some cases to avoid conflicts of type macros
+               if (result.has_prefix ("type_")) {
+                       result = "type" + result.offset ("type_".len ());
+               } else if (result.has_prefix ("is_")) {
+                       result = "is" + result.offset ("is_".len ());
+               }
+               if (result.has_suffix ("_class")) {
+                       result = result.substring (0, result.len () - "_class".len ()) + "class";
+               }
+
+               return result;
+       }
        
        /**
         * Sets the string to be prepended to the name of members of this
@@ -389,6 +401,9 @@ public class Vala.Interface : Typesymbol {
                                add_cheader_filename (filename);
                        }
                }
+               if (a.has_argument ("lower_case_csuffix")) {
+                       lower_case_csuffix = a.get_string ("lower_case_csuffix");
+               }
        }
 
        private void process_dbus_interface_attribute (Attribute! a) {
index 10c8e937519c8fa0f67fa85902c31c649dae9f88..c7d7ddfd50ebd1f8792a34ee132237043c36f29c 100644 (file)
@@ -240,7 +240,11 @@ public class Vala.InterfaceWriter : CodeVisitor {
                                cheaders = "%s,%s".printf (cheaders, cheader);
                        }
                }
-               write_string ("[CCode (cheader_filename = \"%s\")]".printf (cheaders));
+               write_string ("[CCode (cheader_filename = \"%s\"".printf (cheaders));
+               if (iface.get_lower_case_csuffix () != iface.get_default_lower_case_csuffix ())
+                       write_string (", lower_case_csuffix = \"%s\"".printf (iface.get_lower_case_csuffix ()));
+
+               write_string (")]");
                write_newline ();
 
                write_indent ();
index eba32b1c9d2210b768ec791794b5d9ec3a09a27c..f119b2a49c762a702e32fc785761b7d8d2a9bd60 100644 (file)
@@ -173,17 +173,12 @@ namespace Gst {
                public abstract bool set_vcenter (int center);
                public abstract bool set_vflip (bool flip);
        }
-       [CCode (cheader_filename = "gst/interfaces/xoverlay.h")]
+       [CCode (cheader_filename = "gst/interfaces/xoverlay.h", lower_case_csuffix = "x_overlay")]
        public interface XOverlay : Gst.ImplementsInterface, Gst.Element {
-               [CCode (cname = "gst_x_overlay_got_xwindow_id")]
                public void got_xwindow_id (ulong xwindow_id);
-               [CCode (cname = "gst_x_overlay_prepare_xwindow_id")]
                public void prepare_xwindow_id ();
-               [CCode (cname = "gst_x_overlay_expose")]
                public abstract void expose ();
-               [CCode (cname = "gst_x_overlay_handle_events")]
                public abstract void handle_events (bool handle_events);
-               [CCode (cname = "gst_x_overlay_set_xwindow_id")]
                public abstract void set_xwindow_id (ulong xwindow_id);
        }
 }
index 46020134c29754b7683962568b18b0315c1b7e15..4abc3eade1c7f94887d08272d9cd6d161296c684 100644 (file)
@@ -23,4 +23,4 @@ GstNavigation cheader_filename="gst/interfaces/navigation.h"
 GstPropertyProbe cheader_filename="gst/interfaces/propertyprobe.h"
 GstTuner cheader_filename="gst/interfaces/tunerchannel.h"
 GstVideoOrientation cheader_filename="gst/interfaces/videoorientation.h"
-GstXOverlay cheader_filename="gst/interfaces/xoverlay.h"
+GstXOverlay cheader_filename="gst/interfaces/xoverlay.h" lower_case_csuffix="x_overlay"
index 663f89a66b7f9674fcb5837f08defc3a3ad9d495..9727145c04fb3ec0ab68651077ddfec6c7dfbaf1 100644 (file)
@@ -917,6 +917,8 @@ public class Vala.GIdlParser : CodeVisitor {
                                        var nv = attr.split ("=", 2);
                                        if (nv[0] == "cheader_filename") {
                                                iface.add_cheader_filename (eval (nv[1]));
+                                       } else if (nv[0] == "lower_case_csuffix") {
+                                               iface.set_lower_case_csuffix (eval (nv[1]));
                                        }
                                }
                        }