[vala/switch-to-gir: 18/22] girparser: Guess array length type for arrays



commit aeef3e14219132e1c957335236d64e0f386a6dee
Author: Luca Bruno <lucabru src gnome org>
Date:   Wed Nov 17 22:00:52 2010 +0100

    girparser: Guess array length type for arrays

 vala/valagirparser.vala                |   12 ++++++++++--
 vapi/packages/gio-2.0/Gio-2.0.metadata |    1 +
 2 files changed, 11 insertions(+), 2 deletions(-)
---
diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala
index 9ee1872..318eb60 100644
--- a/vala/valagirparser.vala
+++ b/vala/valagirparser.vala
@@ -1790,13 +1790,13 @@ public class Vala.GirParser : CodeVisitor {
 			} else if (type_name == "guint") {
 				type_name = "uint";
 			} else if (type_name == "glong") {
-				if (ctype == "gssize") {
+				if (ctype != null && ctype.has_prefix ("gssize")) {
 					type_name = "ssize_t";
 				} else {
 					type_name = "long";
 				}
 			} else if (type_name == "gulong") {
-				if (ctype == "gsize") {
+				if (ctype != null && ctype.has_prefix ("gsize")) {
 					type_name = "size_t";
 				} else {
 					type_name = "ulong";
@@ -2387,7 +2387,15 @@ public class Vala.GirParser : CodeVisitor {
 						continue;
 					}
 					info.param.carray_length_parameter_position = parameters[info.array_length_idx].vala_idx;
+					var length_param = parameters[info.array_length_idx].param;
 					info.param.set_array_length_cname (parameters[info.array_length_idx].param.name);
+					if (length_param.variable_type.to_qualified_string () != "int") {
+						var unresolved_type = (UnresolvedType) length_param.variable_type;
+						var resolved_struct = resolve_symbol (glib_ns.scope, unresolved_type.unresolved_symbol) as Struct;
+						if (resolved_struct != null) {
+							info.param.array_length_type = resolved_struct.get_cname ();
+						}
+					}
 				}
 				if (info.param.variable_type is ArrayType && info.array_length_idx == -1) {
 					info.param.no_array_length = true;
diff --git a/vapi/packages/gio-2.0/Gio-2.0.metadata b/vapi/packages/gio-2.0/Gio-2.0.metadata
index 322f733..a151503 100644
--- a/vapi/packages/gio-2.0/Gio-2.0.metadata
+++ b/vapi/packages/gio-2.0/Gio-2.0.metadata
@@ -3,6 +3,7 @@ content_type_* parent="GLib.ContentType" name="content_type_(.*)"
 *.cancellable nullable default=null
 *.*.cancellable nullable default=null
 BufferedInputStream.fill_async.io_priority default=GLib.Priority.DEFAULT
+BufferedInputStream.peek.offset default=0
 
 // Possible GI bugs
 FileIOStream.seek.cancellable nullable



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