File indexing completed on 2026-05-06 08:41:18
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027 #ifndef __G_QUEUE_H__
0028 #define __G_QUEUE_H__
0029
0030 #if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
0031 #error "Only <glib.h> can be included directly."
0032 #endif
0033
0034 #include <glib/glist.h>
0035
0036 G_BEGIN_DECLS
0037
0038 typedef struct _GQueue GQueue;
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049 struct _GQueue
0050 {
0051 GList *head;
0052 GList *tail;
0053 guint length;
0054 };
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070 #define G_QUEUE_INIT { NULL, NULL, 0 }
0071
0072
0073
0074 GLIB_AVAILABLE_IN_ALL
0075 GQueue* g_queue_new (void);
0076 GLIB_AVAILABLE_IN_ALL
0077 void g_queue_free (GQueue *queue);
0078 GLIB_AVAILABLE_IN_ALL
0079 void g_queue_free_full (GQueue *queue,
0080 GDestroyNotify free_func);
0081 GLIB_AVAILABLE_IN_ALL
0082 void g_queue_init (GQueue *queue);
0083 GLIB_AVAILABLE_IN_ALL
0084 void g_queue_clear (GQueue *queue);
0085 GLIB_AVAILABLE_IN_ALL
0086 gboolean g_queue_is_empty (GQueue *queue);
0087 GLIB_AVAILABLE_IN_2_60
0088 void g_queue_clear_full (GQueue *queue,
0089 GDestroyNotify free_func);
0090 GLIB_AVAILABLE_IN_ALL
0091 guint g_queue_get_length (GQueue *queue);
0092 GLIB_AVAILABLE_IN_ALL
0093 void g_queue_reverse (GQueue *queue);
0094 GLIB_AVAILABLE_IN_ALL
0095 GQueue * g_queue_copy (GQueue *queue);
0096 GLIB_AVAILABLE_IN_ALL
0097 void g_queue_foreach (GQueue *queue,
0098 GFunc func,
0099 gpointer user_data);
0100 GLIB_AVAILABLE_IN_ALL
0101 GList * g_queue_find (GQueue *queue,
0102 gconstpointer data);
0103 GLIB_AVAILABLE_IN_ALL
0104 GList * g_queue_find_custom (GQueue *queue,
0105 gconstpointer data,
0106 GCompareFunc func);
0107 GLIB_AVAILABLE_IN_ALL
0108 void g_queue_sort (GQueue *queue,
0109 GCompareDataFunc compare_func,
0110 gpointer user_data);
0111
0112 GLIB_AVAILABLE_IN_ALL
0113 void g_queue_push_head (GQueue *queue,
0114 gpointer data);
0115 GLIB_AVAILABLE_IN_ALL
0116 void g_queue_push_tail (GQueue *queue,
0117 gpointer data);
0118 GLIB_AVAILABLE_IN_ALL
0119 void g_queue_push_nth (GQueue *queue,
0120 gpointer data,
0121 gint n);
0122 GLIB_AVAILABLE_IN_ALL
0123 gpointer g_queue_pop_head (GQueue *queue);
0124 GLIB_AVAILABLE_IN_ALL
0125 gpointer g_queue_pop_tail (GQueue *queue);
0126 GLIB_AVAILABLE_IN_ALL
0127 gpointer g_queue_pop_nth (GQueue *queue,
0128 guint n);
0129 GLIB_AVAILABLE_IN_ALL
0130 gpointer g_queue_peek_head (GQueue *queue);
0131 GLIB_AVAILABLE_IN_ALL
0132 gpointer g_queue_peek_tail (GQueue *queue);
0133 GLIB_AVAILABLE_IN_ALL
0134 gpointer g_queue_peek_nth (GQueue *queue,
0135 guint n);
0136 GLIB_AVAILABLE_IN_ALL
0137 gint g_queue_index (GQueue *queue,
0138 gconstpointer data);
0139 GLIB_AVAILABLE_IN_ALL
0140 gboolean g_queue_remove (GQueue *queue,
0141 gconstpointer data);
0142 GLIB_AVAILABLE_IN_ALL
0143 guint g_queue_remove_all (GQueue *queue,
0144 gconstpointer data);
0145 GLIB_AVAILABLE_IN_ALL
0146 void g_queue_insert_before (GQueue *queue,
0147 GList *sibling,
0148 gpointer data);
0149 GLIB_AVAILABLE_IN_2_62
0150 void g_queue_insert_before_link
0151 (GQueue *queue,
0152 GList *sibling,
0153 GList *link_);
0154 GLIB_AVAILABLE_IN_ALL
0155 void g_queue_insert_after (GQueue *queue,
0156 GList *sibling,
0157 gpointer data);
0158 GLIB_AVAILABLE_IN_2_62
0159 void g_queue_insert_after_link
0160 (GQueue *queue,
0161 GList *sibling,
0162 GList *link_);
0163 GLIB_AVAILABLE_IN_ALL
0164 void g_queue_insert_sorted (GQueue *queue,
0165 gpointer data,
0166 GCompareDataFunc func,
0167 gpointer user_data);
0168
0169 GLIB_AVAILABLE_IN_ALL
0170 void g_queue_push_head_link (GQueue *queue,
0171 GList *link_);
0172 GLIB_AVAILABLE_IN_ALL
0173 void g_queue_push_tail_link (GQueue *queue,
0174 GList *link_);
0175 GLIB_AVAILABLE_IN_ALL
0176 void g_queue_push_nth_link (GQueue *queue,
0177 gint n,
0178 GList *link_);
0179 GLIB_AVAILABLE_IN_ALL
0180 GList* g_queue_pop_head_link (GQueue *queue);
0181 GLIB_AVAILABLE_IN_ALL
0182 GList* g_queue_pop_tail_link (GQueue *queue);
0183 GLIB_AVAILABLE_IN_ALL
0184 GList* g_queue_pop_nth_link (GQueue *queue,
0185 guint n);
0186 GLIB_AVAILABLE_IN_ALL
0187 GList* g_queue_peek_head_link (GQueue *queue);
0188 GLIB_AVAILABLE_IN_ALL
0189 GList* g_queue_peek_tail_link (GQueue *queue);
0190 GLIB_AVAILABLE_IN_ALL
0191 GList* g_queue_peek_nth_link (GQueue *queue,
0192 guint n);
0193 GLIB_AVAILABLE_IN_ALL
0194 gint g_queue_link_index (GQueue *queue,
0195 GList *link_);
0196 GLIB_AVAILABLE_IN_ALL
0197 void g_queue_unlink (GQueue *queue,
0198 GList *link_);
0199 GLIB_AVAILABLE_IN_ALL
0200 void g_queue_delete_link (GQueue *queue,
0201 GList *link_);
0202
0203 G_END_DECLS
0204
0205 #endif