]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
girparser: Support cprefix metadata for the namespace
authorLuca Bruno <lucabru@src.gnome.org>
Tue, 26 Jul 2011 18:50:55 +0000 (20:50 +0200)
committerLuca Bruno <lucabru@src.gnome.org>
Tue, 26 Jul 2011 19:03:28 +0000 (21:03 +0200)
vala/valagirparser.vala

index a89b81050dffdf0338872723cc5d19ca5c70fe06..741f1753b25c456c34e1bdb10e71fc682ae6012e 100644 (file)
@@ -575,7 +575,8 @@ public class Vala.GirParser : CodeVisitor {
                                if (metadata.has_argument (ArgumentType.CPREFIX)) {
                                        return metadata.get_string (ArgumentType.CPREFIX);
                                }
-                               if (girdata != null && girdata["c:symbol-prefix"] != null) {
+                               // gir doesn't use the full C prefix in c:symbol-prefix
+                               if (girdata != null && girdata["c:symbol-prefix"] != null && !parent.metadata.has_argument (ArgumentType.CPREFIX)) {
                                        return "%s%s_".printf (parent.get_lower_case_cprefix (), girdata["c:symbol-prefix"]);
                                } else {
                                        return "%s%s_".printf (parent.get_lower_case_cprefix (), Symbol.camel_case_to_lower_case (name));
@@ -860,7 +861,7 @@ public class Vala.GirParser : CodeVisitor {
 
                                // cheader filename
                                var cheader_filename = metadata.get_string (ArgumentType.CHEADER_FILENAME);
-                               if (cheader_filename != null) {
+                               if (parent != parser.root && cheader_filename != null) {
                                        foreach (string filename in cheader_filename.split (",")) {
                                                symbol.add_cheader_filename (filename);
                                        }
@@ -1648,6 +1649,11 @@ public class Vala.GirParser : CodeVisitor {
                        ns.attributes = null;
                        ns.source_reference = current.source_reference;
                }
+               current.metadata = ns_metadata;
+
+               if (ns_metadata.has_argument (ArgumentType.CPREFIX)) {
+                       cprefix = ns_metadata.get_string (ArgumentType.CPREFIX);
+               }
 
                if (cprefix != null) {
                        ns.add_cprefix (cprefix);