summaryrefslogtreecommitdiff
path: root/vapigen
diff options
context:
space:
mode:
authorJuerg Billeter <j@bitron.ch>2007-08-24 18:23:29 +0000
committerJürg Billeter <juergbi@src.gnome.org>2007-08-24 18:23:29 +0000
commit8a4487f2f0f44efdc7da283bbfefa53ba5be3a1d (patch)
tree0b6dbb409f504d72dc7f4f01d0f641f68477156b /vapigen
parent867086f46d32f89b89b8d25b27180df4939fe960 (diff)
downloadvala-8a4487f2f0f44efdc7da283bbfefa53ba5be3a1d.tar.gz
fix generated string out and string array parameters add g_listenv
2007-08-24 Juerg Billeter <j@bitron.ch> * vapigen/valagidlparser.vala, vapi/gdk-2.0.vala, vapi/gio-standalone.vala, vapi/gnome-desktop-2.0.vala, vapi/gstreamer-0.10.vala, vapi/gtk+-2.0.vala, vapi/libsoup-2.2.vala, vapi/packages/gdk-2.0/gdk-2.0.metadata, vapi/packages/gio-standalone/gio-standalone.metadata, vapi/packages/gnome-desktop-2.0/gnome-desktop-2.0.metadata, vapi/packages/gstreamer-0.10/gstreamer-0.10.metadata, vapi/packages/gtk+-2.0/gtk+-2.0.metadata, vapi/packages/vte/vte.metadata, vapi/pango.vala, vapi/vte.vala: fix generated string out and string array parameters * vapi/glib-2.0.vala: add g_listenv svn path=/trunk/; revision=502
Diffstat (limited to 'vapigen')
-rw-r--r--vapigen/valagidlparser.vala14
1 files changed, 14 insertions, 0 deletions
diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala
index 7c938ee80..0ed8ade79 100644
--- a/vapigen/valagidlparser.vala
+++ b/vapigen/valagidlparser.vala
@@ -657,6 +657,9 @@ public class Vala.GIdlParser : CodeVisitor {
if (type_node.is_pointer &&
(n == "gchar" || n == "char")) {
type.type_name = "string";
+ if (type_node.unparsed.has_suffix ("**")) {
+ type.is_out = true;
+ }
} else if (n == "gunichar") {
type.type_name = "unichar";
} else if (n == "gchar") {
@@ -895,6 +898,17 @@ public class Vala.GIdlParser : CodeVisitor {
var p = new FormalParameter (param_node.name, parse_param (param));
m.add_parameter (p);
+ var attributes = get_attributes ("%s.%s".printf (f.symbol, param_node.name));
+ if (attributes != null) {
+ foreach (string attr in attributes) {
+ var nv = attr.split ("=", 2);
+ if (nv[0] == "is_array") {
+ p.type_reference.array_rank = 1;
+ p.type_reference.is_out = false;
+ }
+ }
+ }
+
if (last_param != null && p.name == "n_" + last_param.name) {
// last_param is array, p is array length
last_param.type_reference.array_rank = 1;