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