[vala] glib-2.0: make CompareFunc and CompareDataFunc generic delegates
- From: Evan Nemerson <evann src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala] glib-2.0: make CompareFunc and CompareDataFunc generic delegates
- Date: Fri, 17 Sep 2010 18:56:02 +0000 (UTC)
commit a3985c2d3aa97ba547608954c6288029a90f3e3d
Author: Maciej Piechotka <uzytkownik2 gmail com>
Date: Mon Aug 2 23:44:38 2010 +0200
glib-2.0: make CompareFunc and CompareDataFunc generic delegates
Fixes bug 625877.
vapi/glib-2.0.vapi | 74 +++++++++++++++++++++++++++------------------------
1 files changed, 39 insertions(+), 35 deletions(-)
---
diff --git a/vapi/glib-2.0.vapi b/vapi/glib-2.0.vapi
index eeac175..30db41e 100644
--- a/vapi/glib-2.0.vapi
+++ b/vapi/glib-2.0.vapi
@@ -1719,23 +1719,23 @@ namespace GLib {
public class AsyncQueue<G> {
public AsyncQueue ();
public void push (owned G data);
- public void push_sorted (owned G data, CompareDataFunc func);
+ public void push_sorted (owned G data, CompareDataFunc<G> func);
public G pop ();
public G try_pop ();
public G timed_pop (ref TimeVal end_time);
public int length ();
- public void sort (CompareDataFunc func);
+ public void sort (CompareDataFunc<G> func);
public void @lock ();
public void unlock ();
public void ref_unlocked ();
public void unref_and_unlock ();
public void push_unlocked (owned G data);
- public void push_sorted_unlocked (owned G data, CompareDataFunc func);
+ public void push_sorted_unlocked (owned G data, CompareDataFunc<G> func);
public G pop_unlocked ();
public G try_pop_unlocked ();
public G timed_pop_unlocked (ref TimeVal end_time);
public int length_unlocked ();
- public void sort_unlocked (CompareDataFunc func);
+ public void sort_unlocked (CompareDataFunc<G> func);
}
/* Memory Allocation */
@@ -3465,7 +3465,7 @@ namespace GLib {
[ReturnsModifiedPointer ()]
public void insert_before (List<G> sibling, owned G data);
[ReturnsModifiedPointer ()]
- public void insert_sorted (owned G data, CompareFunc compare_func);
+ public void insert_sorted (owned G data, CompareFunc<G> compare_func);
[ReturnsModifiedPointer ()]
public void remove (G data);
[ReturnsModifiedPointer ()]
@@ -3480,11 +3480,11 @@ namespace GLib {
[ReturnsModifiedPointer ()]
public void reverse ();
[ReturnsModifiedPointer ()]
- public void sort (CompareFunc compare_func);
+ public void sort (CompareFunc<G> compare_func);
[ReturnsModifiedPointer ()]
- public void insert_sorted_with_data (owned G data, CompareDataFunc compare_func);
+ public void insert_sorted_with_data (owned G data, CompareDataFunc<G> compare_func);
[ReturnsModifiedPointer ()]
- public void sort_with_data (CompareDataFunc compare_func);
+ public void sort_with_data (CompareDataFunc<G> compare_func);
[ReturnsModifiedPointer ()]
public void concat (owned List<G> list2);
public void @foreach (Func func);
@@ -3496,7 +3496,7 @@ namespace GLib {
public unowned List<G> nth_prev (uint n);
public unowned List<G> find (G data);
- public unowned List<G> find_custom (G data, CompareFunc func);
+ public unowned List<G> find_custom (G data, CompareFunc<G> func);
public int position (List<G> llink);
public int index (G data);
@@ -3521,7 +3521,7 @@ namespace GLib {
[ReturnsModifiedPointer ()]
public void insert_before (SList<G> sibling, owned G data);
[ReturnsModifiedPointer ()]
- public void insert_sorted (owned G data, CompareFunc compare_func);
+ public void insert_sorted (owned G data, CompareFunc<G> compare_func);
[ReturnsModifiedPointer ()]
public void remove (G data);
[ReturnsModifiedPointer ()]
@@ -3536,11 +3536,11 @@ namespace GLib {
[ReturnsModifiedPointer ()]
public void reverse ();
[ReturnsModifiedPointer ()]
- public void insert_sorted_with_data (owned G data, CompareDataFunc compare_func);
+ public void insert_sorted_with_data (owned G data, CompareDataFunc<G> compare_func);
[ReturnsModifiedPointer ()]
- public void sort (CompareFunc compare_func);
+ public void sort (CompareFunc<G> compare_func);
[ReturnsModifiedPointer ()]
- public void sort_with_data (CompareDataFunc compare_func);
+ public void sort_with_data (CompareDataFunc<G> compare_func);
[ReturnsModifiedPointer ()]
public void concat (owned SList<G> list2);
public void @foreach (Func func);
@@ -3550,7 +3550,7 @@ namespace GLib {
public unowned G nth_data (uint n);
public unowned SList<G> find (G data);
- public unowned SList<G> find_custom (G data, CompareFunc func);
+ public unowned SList<G> find_custom (G data, CompareFunc<G> func);
public int position (SList<G> llink);
public int index (G data);
@@ -3559,12 +3559,12 @@ namespace GLib {
}
[CCode (has_target = false)]
- public delegate int CompareFunc (void* a, void* b);
+ public delegate int CompareFunc<G> (G a, G b);
- public delegate int CompareDataFunc (void* a, void* b);
+ public delegate int CompareDataFunc<G> (G a, G b);
[CCode (cname = "g_strcmp0")]
- public static GLib.CompareFunc strcmp;
+ public static GLib.CompareFunc<string> strcmp;
/* Double-ended Queues */
@@ -3583,8 +3583,8 @@ namespace GLib {
public void reverse ();
public Queue copy ();
public unowned List<G> find (G data);
- public unowned List<G> find_custom (G data, CompareFunc func);
- public void sort (CompareDataFunc compare_func);
+ public unowned List<G> find_custom (G data, CompareFunc<G> func);
+ public void sort (CompareDataFunc<G> compare_func);
public void push_head (owned G data);
public void push_tail (owned G data);
public void push_nth (owned G data, int n);
@@ -3599,7 +3599,7 @@ namespace GLib {
public void remove_all (G data);
public void insert_before (List<G> sibling, owned G data);
public void insert_after (List<G> sibling, owned G data);
- public void insert_sorted (owned G data, CompareDataFunc func);
+ public void insert_sorted (owned G data, CompareDataFunc<G> func);
}
/* Sequences */
@@ -3611,7 +3611,7 @@ namespace GLib {
public int get_length ();
public void @foreach (Func func);
public static void foreach_range (SequenceIter<G> begin, SequenceIter<G> end, Func func);
- public void sort (CompareDataFunc cmp_func);
+ public void sort (CompareDataFunc<G> cmp_func);
public void sort_iter (SequenceIterCompareFunc<G> func);
public SequenceIter<G> get_begin_iter ();
public SequenceIter<G> get_end_iter ();
@@ -3621,14 +3621,14 @@ namespace GLib {
public static SequenceIter<G> insert_before (SequenceIter<G> iter, owned G data);
public static void move (SequenceIter<G> src, SequenceIter<G> dest);
public static void swap (SequenceIter<G> src, SequenceIter<G> dest);
- public SequenceIter<G> insert_sorted (owned G data, CompareDataFunc cmp_func);
+ public SequenceIter<G> insert_sorted (owned G data, CompareDataFunc<G> cmp_func);
public SequenceIter<G> insert_sorted_iter (owned G data, SequenceIterCompareFunc<G> iter_cmp);
- public static void sort_changed (SequenceIter<G> iter, CompareDataFunc cmp_func);
+ public static void sort_changed (SequenceIter<G> iter, CompareDataFunc<G> cmp_func);
public static void sort_changed_iter (SequenceIter<G> iter, SequenceIterCompareFunc<G> iter_cmp);
public static void remove (SequenceIter<G> iter);
public static void remove_range (SequenceIter<G> begin, SequenceIter<G> end);
public static void move_range (SequenceIter<G> dest, SequenceIter<G> begin, SequenceIter<G> end);
- public SequenceIter<G> search (G data, CompareDataFunc cmp_func);
+ public SequenceIter<G> search (G data, CompareDataFunc<G> cmp_func);
public SequenceIter<G> search_iter (G data, SequenceIterCompareFunc<G> iter_cmp);
public static unowned G get (SequenceIter<G> iter);
public static void set (SequenceIter<G> iter, owned G data);
@@ -3814,8 +3814,8 @@ namespace GLib {
this.add ((owned) data);
this.remove_index_fast (index);
}
- public void sort (GLib.CompareFunc compare_func);
- public void sort_with_data (GLib.CompareDataFunc compare_func);
+ public void sort (GLib.CompareFunc<G> compare_func);
+ public void sort_with_data (GLib.CompareDataFunc<G> compare_func);
private void set_size (int length);
public int length {
@@ -3843,8 +3843,8 @@ namespace GLib {
public void remove_index (uint index);
public void remove_index_fast (uint index);
public void remove_range (uint index, uint length);
- public void sort (CompareFunc compare_func);
- public void sort_with_data (CompareDataFunc compare_func);
+ public void sort (CompareFunc<int8> compare_func);
+ public void sort_with_data (CompareDataFunc<int8> compare_func);
public void set_size (uint length);
public uint len;
@@ -3975,8 +3975,8 @@ namespace GLib {
public void remove_index (uint index);
public void remove_index_fast (uint index);
public void remove_range (uint index, uint length);
- public void sort (CompareFunc compare_func);
- public void sort_with_data (CompareDataFunc compare_func);
+ public void sort (CompareFunc<G> compare_func);
+ public void sort_with_data (CompareDataFunc<G> compare_func);
[CCode (generic_type_pos = 0.1)]
public G index (uint index);
public void set_size (uint length);
@@ -3994,6 +3994,8 @@ namespace GLib {
LEVEL_ORDER
}
+ public delegate int TreeSearchFunc<K> (K key);
+
[Compact]
#if GLIB_2_22
[CCode (ref_function = "g_tree_ref", unref_function = "g_tree_unref")]
@@ -4001,9 +4003,9 @@ namespace GLib {
[CCode (free_function = "g_tree_destroy")]
#endif
public class Tree<K,V> {
- public Tree (CompareFunc key_compare_func);
- public Tree.with_data (CompareDataFunc key_compare_func);
- public Tree.full (CompareDataFunc key_compare_func, DestroyNotify? key_destroy_func, DestroyNotify? value_destroy_func);
+ public Tree (CompareFunc<K> key_compare_func);
+ public Tree.with_data (CompareDataFunc<K> key_compare_func);
+ public Tree.full (CompareDataFunc<K> key_compare_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);
public int nnodes ();
@@ -4011,7 +4013,9 @@ namespace GLib {
public unowned V lookup (K key);
public bool lookup_extended (K lookup_key, K orig_key, V value);
public void foreach (TraverseFunc traverse_func);
- public unowned V search (CompareFunc search_func, void* user_data);
+ public unowned V search (TreeSearchFunc<K> search_func);
+ [CCode (cname = "g_tree_search")]
+ public unowned V search_key (CompareFunc<K> search_func, K key);
public bool remove (K key);
public bool steal (K key);
}
@@ -4306,5 +4310,5 @@ namespace GLib {
public static void static_assert (bool expression);
[CCode (simple_generics = true)]
- private static void qsort_with_data<T> (T[] elems, size_t size, [CCode (type = "GCompareDataFunc")] GLib.CompareDataFunc compare_func);
+ private static void qsort_with_data<T> (T[] elems, size_t size, [CCode (type = "GCompareDataFunc")] GLib.CompareDataFunc<T> compare_func);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]