[vala] glib-2.0: add GLib.HashSet
- From: Evan Nemerson <evann src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala] glib-2.0: add GLib.HashSet
- Date: Thu, 12 Jun 2014 04:26:48 +0000 (UTC)
commit b5bf23925269361744956a5acba4cb32143ddfb2
Author: Evan Nemerson <evan nemerson com>
Date: Thu Jun 5 21:15:10 2014 -0700
glib-2.0: add GLib.HashSet
This is basically just a convenience wrapper around GLib.HashTable
where the key and value are set to the same value, providing a set
data type instead of a map.
Fixes bug 686609.
vapi/glib-2.0.vapi | 34 ++++++++++++++++++++++++++++++++++
1 files changed, 34 insertions(+), 0 deletions(-)
---
diff --git a/vapi/glib-2.0.vapi b/vapi/glib-2.0.vapi
index be7b213..29801e0 100644
--- a/vapi/glib-2.0.vapi
+++ b/vapi/glib-2.0.vapi
@@ -4143,6 +4143,7 @@ namespace GLib {
public HashTable.full (HashFunc<K>? hash_func, EqualFunc<K>? key_equal_func, DestroyNotify?
key_destroy_func, DestroyNotify? value_destroy_func);
public void insert (owned K key, owned V value);
public void replace (owned K key, owned V value);
+ [Deprecated (since = "vala-0.26", replacement = "HashSet.add")]
public void add (owned K key);
public unowned V? lookup (K key);
public bool lookup_extended (K lookup_key, out unowned K orig_key, out unowned V value);
@@ -4173,6 +4174,39 @@ namespace GLib {
public unowned GLib.HashTable<K,V> get_hash_table ();
}
+ [Compact, CCode (cname = "GHashTable", lower_case_cprefix = "g_hash_table_", ref_function =
"g_hash_table_ref", unref_function = "g_hash_table_unref", type_id = "G_TYPE_HASH_TABLE", type_signature =
"a{%s}")]
+ public class HashSet<T> {
+ [CCode (cname = "g_hash_table_new_full", simple_generics = true)]
+ public HashSet (HashFunc<T>? hash_func, EqualFunc<T>? equal_func, GLib.DestroyNotify?
pass_null_here = null);
+ public void add (owned T value);
+ public bool contains (T valule);
+ public bool remove (T value);
+ public void remove_all ();
+ public GLib.List<unowned T> get_values ();
+ [CCode (cname = "g_hash_table_iter_init", instance_pos = -1)]
+ public GLib.HashSetIter<T> iterator ();
+ [CCode (cname = "_vala_g_hash_set_foreach")]
+ public void @foreach (GLib.Func<T> func) {
+ ((GLib.HashTable<unowned T,T>) this).foreach ((k, v) => func (v));
+ }
+ public uint length {
+ [CCode (cname = "g_hash_table_get_size")]
+ get;
+ }
+ }
+
+ [CCode (cname = "GHashTableIter", lower_case_cprefix = "g_hash_table_iter_")]
+ public struct HashSetIter<T> {
+ [CCode (cname = "_vala_hash_set_next_value")]
+ public unowned T? next_value () {
+ void* vi = &this;
+ GLib.HashTableIter<unowned T,T>* htp = vi;
+ unowned T? value;
+ return htp->next (out value, null) ? value : null;
+ }
+ public void remove ();
+ }
+
[CCode (has_target = false)]
public delegate uint HashFunc<K> (K key);
[CCode (has_target = false)]
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]