[vala/switch-to-gir] girparser: Add out/ref arguments



commit 42993473fb825d38263a7ed0d2bccf4c78868536
Author: Luca Bruno <lucabru src gnome org>
Date:   Sat Aug 28 18:09:41 2010 +0200

    girparser: Add out/ref arguments

 vala/valagirparser.vala |   43 ++++++++++++++++++++++++++++++-------------
 1 files changed, 30 insertions(+), 13 deletions(-)
---
diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala
index 289eb47..be68958 100644
--- a/vala/valagirparser.vala
+++ b/vala/valagirparser.vala
@@ -63,7 +63,9 @@ public class Vala.GirParser : CodeVisitor {
 		DEPRECATED_SINCE,
 		ARRAY,
 		ARRAY_LENGTH_POS,
-		DEFAULT;
+		DEFAULT,
+		OUT,
+		REF;
 
 		public static ArgumentType? from_string (string name) {
 			var enum_class = (EnumClass) typeof(ArgumentType).class_ref ();
@@ -312,19 +314,23 @@ public class Vala.GirParser : CodeVisitor {
 				if (is_glob && current == TokenType.STAR) {
 					builder.append_c ('*');
 				} else {
-					if (current == TokenType.IDENTIFIER) {
-						builder.append (get_string ());
-					} else if (current == TokenType.UNOWNED) {
-						builder.append ("unowned");
-					} else if (current == TokenType.GET) {
-						builder.append ("get");
-					} else if (current == TokenType.NEW) {
-						builder.append ("new");
-					} else if (current == TokenType.DEFAULT) {
-						builder.append ("default");
-					} else {
+					string str = null;
+					switch (current) {
+					case TokenType.IDENTIFIER:
+					case TokenType.UNOWNED:
+					case TokenType.OWNED:
+					case TokenType.GET:
+					case TokenType.NEW:
+					case TokenType.DEFAULT:
+					case TokenType.OUT:
+					case TokenType.REF:
+						str = get_string ();
+						break;
+					}
+					if (str == null) {
 						break;
 					}
+					builder.append (str);
 				}
 				source_reference = get_src (begin);
 				next ();
@@ -1423,7 +1429,18 @@ public class Vala.GirParser : CodeVisitor {
 		if (name == null) {
 			name = default_name;
 		}
-		string direction = reader.get_attribute ("direction");
+		string direction = null;
+		if (metadata.has_argument (ArgumentType.OUT)) {
+			if (metadata.get_bool (ArgumentType.OUT)) {
+				direction = "out";
+			} // null otherwise
+		} else if (metadata.has_argument (ArgumentType.REF)) {
+			if (metadata.get_bool (ArgumentType.REF)) {
+				direction = "inout";
+			} // null otherwise
+		} else {
+			direction = reader.get_attribute ("direction");
+		}
 		string transfer = reader.get_attribute ("transfer-ownership");
 		string allow_none = reader.get_attribute ("allow-none");
 



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