[vala/switch-to-gir] girparser: Add out/ref arguments
- From: Luca Bruno <lucabru src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/switch-to-gir] girparser: Add out/ref arguments
- Date: Sat, 28 Aug 2010 17:14:25 +0000 (UTC)
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]