]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Add class method detection
authorAli Sabil <ali.sabil@gmail.com>
Sat, 17 May 2008 08:57:51 +0000 (08:57 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Sat, 17 May 2008 08:57:51 +0000 (08:57 +0000)
2008-05-17  Ali Sabil  <ali.sabil@gmail.com>

* vapigen/valagidlparser.vala: Add class method detection

svn path=/trunk/; revision=1393

ChangeLog
vapigen/valagidlparser.vala

index 71590219cbb6503df0801d4c9186c47155bffda3..ecdc48430855d805781f8d994f4d154e494d0ee3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2008-05-17  Ali Sabil  <ali.sabil@gmail.com>
+
+       * vapigen/valagidlparser.vala: Add class method detection
+
 2008-05-16  Jürg Billeter  <j@bitron.ch>
 
        * vala/valaconstant.vala:
index 584d669715d7b7e2b3c808003dc445984eb48472..fd0298cc01f06d2ba0fd5bd92d386a19aa683f06 100644 (file)
@@ -1315,6 +1315,17 @@ public class Vala.GIdlParser : CodeVisitor {
                                     param.type.@interface.has_suffix (current_data_type.get_cname ()))) {
                                        // instance method
                                        continue;
+                               } else if (!(m is CreationMethod) &&
+                                   current_data_type != null &&
+                                   param.type.is_interface &&
+                                   (param_node.name == "klass" ||
+                                    param.type.@interface.has_suffix ("%sClass".printf(current_data_type.get_cname ())))) {
+                                       // class method
+                                       m.binding = MemberBinding.CLASS;
+                                       if (m.name.has_prefix ("class_")) {
+                                               m.name = m.name.substring ("class_".len (), m.name.len () - "class_".len ());
+                                       }
+                                       continue;
                                } else {
                                        // static method
                                        m.binding = MemberBinding.STATIC;