]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Return the right D-Bus type signature for GHashTable, patch by Marc-André
authorJürg Billeter <j@bitron.ch>
Sun, 2 Nov 2008 16:57:30 +0000 (16:57 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Sun, 2 Nov 2008 16:57:30 +0000 (16:57 +0000)
2008-11-02  Jürg Billeter  <j@bitron.ch>

* 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

ChangeLog
vala/valadatatype.vala
vapi/glib-2.0.vapi

index ad37e4e1a237c830492cfcc1c40006440c76cbe5..e74ae93d0f9c441cbea5d356f22f7ca7de47a67e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-11-02  Jürg Billeter  <j@bitron.ch>
+
+       * 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  <j@bitron.ch>
 
        * gobject/valaccodegenerator.vala:
index a3c2144a7d8c9456f21142116c49cb8818f3c542..c0d1878256184072ed8a62d655fa23e1c9c43119 100644 (file)
@@ -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;
                }
index e74d12cf63840738c7b3c5d2e682aa1c979a2fa4..92df832922de8c987a48dfec784312d278cec081 100644 (file)
@@ -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<K,V> : 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);