]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
gvariant: Support some more key types for hash table creation
authorSergey Bugaev <bugaevc@gmail.com>
Sun, 1 Mar 2026 15:18:16 +0000 (18:18 +0300)
committerRico Tzschichholz <ricotz@ubuntu.com>
Sat, 16 May 2026 12:12:56 +0000 (14:12 +0200)
GLib also has proper hash/equals functions for indirectly stored doubles
and 64-bit integers. Use those.

codegen/valagvariantmodule.vala

index 9254e68787802ed1da342c218331b8c56d2b6f6e..8e70ac16883ecf66cdbdb5d7d7ecf491846d9566 100644 (file)
@@ -504,6 +504,12 @@ public class Vala.GVariantModule : GValueModule {
                } else if (key_type.type_symbol == gvariant_type) {
                        hash_table_new.add_argument (new CCodeIdentifier ("g_variant_hash"));
                        hash_table_new.add_argument (new CCodeIdentifier ("g_variant_equal"));
+               } else if (key_type.type_symbol == int64_type.type_symbol || key_type.type_symbol == uint64_type.type_symbol) {
+                       hash_table_new.add_argument (new CCodeIdentifier ("g_int64_hash"));
+                       hash_table_new.add_argument (new CCodeIdentifier ("g_int64_equal"));
+               } else if (key_type.type_symbol == double_type.type_symbol) {
+                       hash_table_new.add_argument (new CCodeIdentifier ("g_double_hash"));
+                       hash_table_new.add_argument (new CCodeIdentifier ("g_double_equal"));
                } else {
                        hash_table_new.add_argument (new CCodeIdentifier ("g_direct_hash"));
                        hash_table_new.add_argument (new CCodeIdentifier ("g_direct_equal"));