[vala] girparser: Support cprefix metadata for the namespace



commit 65f38c93e38d914030edabdb62297ea4dad88dcd
Author: Luca Bruno <lucabru src gnome org>
Date:   Tue Jul 26 20:50:55 2011 +0200

    girparser: Support cprefix metadata for the namespace

 vala/valagirparser.vala |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala
index a89b810..741f175 100644
--- a/vala/valagirparser.vala
+++ b/vala/valagirparser.vala
@@ -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);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]