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 7159021..ecdc484 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 584d669..fd0298c 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;