]> Pileus Git - grits/blob - src/gpqueue.h
3cadf1856cc76cee6731407498f04b2a24104279
[grits] / src / gpqueue.h
1 #if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
2 #error "Only <glib.h> can be included directly."
3 #endif
4
5 #ifndef __G_PQUEUE_H__
6 #define __G_PQUEUE_H__
7
8 G_BEGIN_DECLS
9
10 typedef struct _GPQueueNode GPQueueNode;
11
12 /**
13  * GPQueue:
14  * 
15  * An opaque structure representing a priority queue.
16  * 
17  * Since: 2.x
18  **/
19 typedef struct _GPQueue GPQueue;
20
21 /**
22  * GPQueueHandle:
23  * 
24  * An opaque value representing one entry in a #GPQueue.
25  * 
26  * Since: 2.x
27  **/
28 typedef GPQueueNode* GPQueueHandle;
29
30 GPQueue*        g_pqueue_new                    (GCompareDataFunc compare_func,
31                                                  gpointer *compare_userdata);
32
33 void            g_pqueue_free                   (GPQueue* pqueue);
34
35 gboolean        g_pqueue_is_empty               (GPQueue *pqueue);
36
37 void            g_pqueue_foreach                (GPQueue *pqueue,
38                                                  GFunc func,
39                                                  gpointer user_data);
40
41 GPtrArray*      g_pqueue_get_array              (GPQueue *pqueue);
42
43 GPQueueHandle   g_pqueue_push                   (GPQueue *pqueue,
44                                                  gpointer data);
45
46 gpointer        g_pqueue_peek                   (GPQueue *pqueue);
47
48 gpointer        g_pqueue_pop                    (GPQueue *pqueue);
49
50 void            g_pqueue_remove                 (GPQueue* pqueue,
51                                                  GPQueueHandle entry);
52
53 void            g_pqueue_priority_changed       (GPQueue* pqueue,
54                                                  GPQueueHandle entry);
55
56 void            g_pqueue_priority_decreased     (GPQueue* pqueue,
57                                                  GPQueueHandle entry);
58
59 void            g_pqueue_clear                  (GPQueue* pqueue);
60
61 G_END_DECLS
62
63 #endif /* __G_PQUEUE_H__ */