]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
GIR writer: Generate static methods correctly
authorDidier 'Ptitjes <ptitjes@free.fr>
Fri, 20 Mar 2009 16:25:19 +0000 (17:25 +0100)
committerJürg Billeter <j@bitron.ch>
Thu, 30 Apr 2009 19:26:48 +0000 (21:26 +0200)
Signed-off-by: Didier 'Ptitjes <ptitjes@free.fr>
gobject/valagirwriter.vala

index 2c9b6e329b6a3415ed3a6347870b0fa9de88cbb7..a1eb3a2563e6bb4e0151fc059476d0d2b3b4359f 100644 (file)
@@ -445,13 +445,23 @@ public class Vala.GIRWriter : CodeVisitor {
                        return;
                }
 
+               string tag_name = "method";
+               var parent = m.parent_symbol;
+               if (parent is Namespace || m.binding == MemberBinding.STATIC) {
+                       tag_name = "function";
+               }
+
+               write_signature (m, tag_name);
+       }
+
+       private void write_signature (Method m, string tag_name, bool instance = false) {
                write_indent ();
-               stream.printf ("<method name=\"%s\" c:identifier=\"%s\"", m.name, m.get_cname ());
+               stream.printf ("<%s name=\"%s\" c:identifier=\"%s\"", tag_name, m.name, m.get_cname ());
                stream.printf (">\n");
                indent++;
 
                DataType instance_type = null;
-               if (m.binding == MemberBinding.INSTANCE) {
+               if (instance) {
                        instance_type = CCodeBaseModule.get_data_type_for_symbol ((TypeSymbol) m.parent_symbol);
                }
 
@@ -461,7 +471,7 @@ public class Vala.GIRWriter : CodeVisitor {
 
                indent--;
                write_indent ();
-               stream.printf ("</method>\n");
+               stream.printf ("</%s>\n", tag_name);
        }
        
        public override void visit_creation_method (CreationMethod m) {