]> Pileus Git - grits/blobdiff - src/gis/gpqueue.h
Lots of work on libGIS
[grits] / src / gis / gpqueue.h
diff --git a/src/gis/gpqueue.h b/src/gis/gpqueue.h
new file mode 100644 (file)
index 0000000..87f6cf9
--- /dev/null
@@ -0,0 +1,61 @@
+#if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
+#error "Only <glib.h> can be included directly."
+#endif
+
+#ifndef __G_PQUEUE_H__
+#define __G_PQUEUE_H__
+
+G_BEGIN_DECLS
+
+typedef struct _GPQueueNode GPQueueNode;
+
+/**
+ * GPQueue:
+ * 
+ * An opaque structure representing a priority queue.
+ * 
+ * Since: 2.x
+ **/
+typedef struct _GPQueue GPQueue;
+
+/**
+ * GPQueueHandle:
+ * 
+ * An opaque value representing one entry in a #GPQueue.
+ * 
+ * Since: 2.x
+ **/
+typedef GPQueueNode* GPQueueHandle;
+
+GPQueue*       g_pqueue_new                    (GCompareDataFunc compare_func,
+                                                gpointer *compare_userdata);
+
+void           g_pqueue_free                   (GPQueue* pqueue);
+
+gboolean       g_pqueue_is_empty               (GPQueue *pqueue);
+
+void           g_pqueue_foreach                (GPQueue *pqueue,
+                                                GFunc func,
+                                                gpointer user_data);
+
+GPQueueHandle  g_pqueue_push                   (GPQueue *pqueue,
+                                                gpointer data);
+
+gpointer       g_pqueue_peek                   (GPQueue *pqueue);
+
+gpointer       g_pqueue_pop                    (GPQueue *pqueue);
+
+void           g_pqueue_remove                 (GPQueue* pqueue,
+                                                GPQueueHandle entry);
+
+void           g_pqueue_priority_changed       (GPQueue* pqueue,
+                                                GPQueueHandle entry);
+
+void           g_pqueue_priority_decreased     (GPQueue* pqueue,
+                                                GPQueueHandle entry);
+
+void           g_pqueue_clear                  (GPQueue* pqueue);
+
+G_END_DECLS
+
+#endif /* __G_PQUEUE_H__ */