[vala/switch-to-gir] girparser: Add 'name' argument to metadata for methods and constructors



commit 70d3be814e9fd83a7c57d1a209b8da8aed74c1ad
Author: Luca Bruno <lethalman88 gmail com>
Date:   Wed Aug 25 14:12:08 2010 +0200

    girparser: Add 'name' argument to metadata for methods and constructors

 vala/valagirparser.vala |   23 +++++++++++++++--------
 1 files changed, 15 insertions(+), 8 deletions(-)
---
diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala
index 6a87ae7..c9c72b5 100644
--- a/vala/valagirparser.vala
+++ b/vala/valagirparser.vala
@@ -35,7 +35,8 @@ public class Vala.GirParser : CodeVisitor {
 	enum ArgumentType {
 		HIDDEN,
 		TYPE,
-		CHEADER_FILENAME;
+		CHEADER_FILENAME,
+		NAME;
 
 		public static ArgumentType? from_string (string name) {
 			var enum_class = (EnumClass) typeof(ArgumentType).class_ref ();
@@ -647,15 +648,21 @@ public class Vala.GirParser : CodeVisitor {
 		metadata_stack.remove_at (metadata_stack.size - 1);
 	}
 
-	DataType? element_get_type (string attribute_name, bool owned_by_default) {
-		var type = metadata.get_data_type (ArgumentType.TYPE, owned_by_default);
+	DataType? element_get_data_type (ArgumentType arg_type, string attribute_name, bool owned_by_default) {
+		var type = metadata.get_data_type (arg_type, owned_by_default);
 		if (type == null) {
-			type = parse_type_from_gir_name (reader.get_attribute ("target"));
+			type = parse_type_from_gir_name (reader.get_attribute (attribute_name));
 		}
 		return type;
 	}
 
-	
+	string? element_get_string (ArgumentType arg_type, string attribute_name) {
+		var str = metadata.get_string (arg_type);
+		if (str == null) {
+			str = reader.get_attribute (attribute_name);
+		}
+		return str;
+	}
 
 	void parse_repository () {
 		start_element ("repository");
@@ -863,7 +870,7 @@ public class Vala.GirParser : CodeVisitor {
 		var alias = new Alias ();
 		alias.source_reference = get_current_src ();
 		alias.name = reader.get_attribute ("name");
-		alias.base_type = element_get_type ("target", true);
+		alias.base_type = element_get_data_type (ArgumentType.TYPE, "target", true);
 		alias.parent_namespace = current_namespace;
 		next ();
 		end_element ("alias");
@@ -1616,7 +1623,7 @@ public class Vala.GirParser : CodeVisitor {
 
 	Method parse_constructor (string? parent_ctype = null) {
 		start_element ("constructor");
-		string name = reader.get_attribute ("name");
+		string name = element_get_string (ArgumentType.NAME, "name");
 		string throws_string = reader.get_attribute ("throws");
 		next ();
 
@@ -1670,7 +1677,7 @@ public class Vala.GirParser : CodeVisitor {
 
 	Symbol parse_function (string element_name) {
 		start_element (element_name);
-		string name = reader.get_attribute ("name");
+		string name = element_get_string (ArgumentType.NAME, "name");
 		string cname = reader.get_attribute ("c:identifier");
 		string throws_string = reader.get_attribute ("throws");
 		string invoker = reader.get_attribute ("invoker");



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