diff options
author | Juerg Billeter <j@bitron.ch> | 2007-08-24 18:23:29 +0000 |
---|---|---|
committer | Jürg Billeter <juergbi@src.gnome.org> | 2007-08-24 18:23:29 +0000 |
commit | 8a4487f2f0f44efdc7da283bbfefa53ba5be3a1d (patch) | |
tree | 0b6dbb409f504d72dc7f4f01d0f641f68477156b /vapigen | |
parent | 867086f46d32f89b89b8d25b27180df4939fe960 (diff) | |
download | vala-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.vala | 14 |
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; |