From: Jürg Billeter Date: Sun, 2 Nov 2008 16:57:30 +0000 (+0000) Subject: Return the right D-Bus type signature for GHashTable, patch by Marc-André X-Git-Tag: VALA_0_5_1~18 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8b1099dbf35959e037ea4ecdcd0001594c7e23ac;p=thirdparty%2Fvala.git Return the right D-Bus type signature for GHashTable, patch by Marc-André 2008-11-02 Jürg Billeter * vala/valadatatype.vala: * vapi/glib-2.0.vapi: Return the right D-Bus type signature for GHashTable, patch by Marc-André Lureau svn path=/trunk/; revision=1953 --- diff --git a/ChangeLog b/ChangeLog index ad37e4e1a..e74ae93d0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-11-02 Jürg Billeter + + * vala/valadatatype.vala: + * vapi/glib-2.0.vapi: + + Return the right D-Bus type signature for GHashTable, + patch by Marc-André Lureau + 2008-11-02 Jürg Billeter * gobject/valaccodegenerator.vala: diff --git a/vala/valadatatype.vala b/vala/valadatatype.vala index a3c2144a7..c0d187825 100644 --- a/vala/valadatatype.vala +++ b/vala/valadatatype.vala @@ -443,7 +443,24 @@ public abstract class Vala.DataType : CodeNode { */ public virtual string? get_type_signature () { if (data_type != null) { - return data_type.get_type_signature (); + string sig = data_type.get_type_signature (); + + var type_args = get_type_arguments (); + if (type_args.size > 0) { + assert (sig.str ("%s") != null); + + string element_sig = ""; + foreach (DataType type_arg in type_args) { + var s = type_arg.get_type_signature (); + if (s != null) { + element_sig += s; + } + } + + sig = sig.printf (element_sig); + } + + return sig; } else { return null; } diff --git a/vapi/glib-2.0.vapi b/vapi/glib-2.0.vapi index e74d12cf6..92df83292 100644 --- a/vapi/glib-2.0.vapi +++ b/vapi/glib-2.0.vapi @@ -2851,7 +2851,7 @@ namespace GLib { /* Hash Tables */ [Compact] - [CCode (ref_function = "g_hash_table_ref", unref_function = "g_hash_table_unref")] + [CCode (ref_function = "g_hash_table_ref", unref_function = "g_hash_table_unref", type_signature = "a{%s}")] public class HashTable : Boxed { public HashTable (HashFunc hash_func, EqualFunc key_equal_func); public HashTable.full (HashFunc hash_func, EqualFunc key_equal_func, DestroyNotify? key_destroy_func, DestroyNotify? value_destroy_func);