• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!-- ##### SECTION Title ##### -->
2Double-ended Queues
3
4<!-- ##### SECTION Short_Description ##### -->
5double-ended queue data structure
6
7<!-- ##### SECTION Long_Description ##### -->
8<para>
9The #GQueue structure and its associated functions provide a standard
10queue data structure. Internally, #GQueue uses the same data structure as
11#GList to store elements.
12</para>
13<para>
14The data contained in each element can be either integer values, by using one
15of the
16<link linkend="glib-Type-Conversion-Macros">Type Conversion Macros</link>,
17or simply pointers to any type of data.
18</para>
19<para>
20To create a new #GQueue, use g_queue_new().
21</para>
22<para>
23To initialize a statically-allocated #GQueue, use #G_QUEUE_INIT or
24g_queue_init().
25</para>
26<para>
27To add elements, use g_queue_push_head(), g_queue_push_head_link(),
28g_queue_push_tail() and g_queue_push_tail_link().
29</para>
30<para>
31To remove elements, use g_queue_pop_head() and g_queue_pop_tail().
32</para>
33<para>
34To free the entire queue, use g_queue_free().
35</para>
36
37<!-- ##### SECTION See_Also ##### -->
38<para>
39
40</para>
41
42<!-- ##### SECTION Stability_Level ##### -->
43
44
45<!-- ##### STRUCT GQueue ##### -->
46<para>
47Contains the public fields of a <link linkend="glib-queues">Queue</link>.
48</para>
49
50@head: a pointer to the first element of the queue.
51@tail: a pointer to the last element of the queue.
52@length: the number of elements in the queue.
53
54<!-- ##### FUNCTION g_queue_new ##### -->
55<para>
56
57</para>
58
59@Returns:
60
61
62<!-- ##### FUNCTION g_queue_free ##### -->
63<para>
64
65</para>
66
67@queue:
68
69
70<!-- ##### MACRO G_QUEUE_INIT ##### -->
71<para>
72A statically-allocated #GQueue must be initialized with this macro before it
73can be used.  This macro can be used to initialize a variable, but it cannot
74be assigned to a variable.  In that case you have to use g_queue_init().
75</para>
76
77<informalexample>
78<programlisting>
79GQueue my_queue = G_QUEUE_INIT;
80</programlisting>
81</informalexample>
82
83@Since: 2.14
84
85
86<!-- ##### FUNCTION g_queue_init ##### -->
87<para>
88
89</para>
90
91@queue:
92
93
94<!-- ##### FUNCTION g_queue_clear ##### -->
95<para>
96
97</para>
98
99@queue:
100
101
102<!-- ##### FUNCTION g_queue_is_empty ##### -->
103<para>
104
105</para>
106
107@queue:
108@Returns:
109
110
111<!-- ##### FUNCTION g_queue_get_length ##### -->
112<para>
113
114</para>
115
116@queue:
117@Returns:
118
119
120<!-- ##### FUNCTION g_queue_reverse ##### -->
121<para>
122
123</para>
124
125@queue:
126
127
128<!-- ##### FUNCTION g_queue_copy ##### -->
129<para>
130
131</para>
132
133@queue:
134@Returns:
135
136
137<!-- ##### FUNCTION g_queue_foreach ##### -->
138<para>
139
140</para>
141
142@queue:
143@func:
144@user_data:
145
146
147<!-- ##### FUNCTION g_queue_find ##### -->
148<para>
149
150</para>
151
152@queue:
153@data:
154@Returns:
155
156
157<!-- ##### FUNCTION g_queue_find_custom ##### -->
158<para>
159
160</para>
161
162@queue:
163@data:
164@func:
165@Returns:
166
167
168<!-- ##### FUNCTION g_queue_sort ##### -->
169<para>
170
171</para>
172
173@queue:
174@compare_func:
175@user_data:
176
177
178<!-- ##### FUNCTION g_queue_push_head ##### -->
179<para>
180
181</para>
182
183@queue:
184@data:
185
186
187<!-- ##### FUNCTION g_queue_push_tail ##### -->
188<para>
189
190</para>
191
192@queue:
193@data:
194
195
196<!-- ##### FUNCTION g_queue_push_nth ##### -->
197<para>
198
199</para>
200
201@queue:
202@data:
203@n:
204
205
206<!-- ##### FUNCTION g_queue_pop_head ##### -->
207<para>
208
209</para>
210
211@queue:
212@Returns:
213
214
215<!-- ##### FUNCTION g_queue_pop_tail ##### -->
216<para>
217
218</para>
219
220@queue:
221@Returns:
222
223
224<!-- ##### FUNCTION g_queue_pop_nth ##### -->
225<para>
226
227</para>
228
229@queue:
230@n:
231@Returns:
232
233
234<!-- ##### FUNCTION g_queue_peek_head ##### -->
235<para>
236
237</para>
238
239@queue:
240@Returns:
241
242
243<!-- ##### FUNCTION g_queue_peek_tail ##### -->
244<para>
245
246</para>
247
248@queue:
249@Returns:
250
251
252<!-- ##### FUNCTION g_queue_peek_nth ##### -->
253<para>
254
255</para>
256
257@queue:
258@n:
259@Returns:
260
261
262<!-- ##### FUNCTION g_queue_index ##### -->
263<para>
264
265</para>
266
267@queue:
268@data:
269@Returns:
270
271
272<!-- ##### FUNCTION g_queue_remove ##### -->
273<para>
274
275</para>
276
277@queue:
278@data:
279
280
281<!-- ##### FUNCTION g_queue_remove_all ##### -->
282<para>
283
284</para>
285
286@queue:
287@data:
288
289
290<!-- ##### FUNCTION g_queue_insert_before ##### -->
291<para>
292
293</para>
294
295@queue:
296@sibling:
297@data:
298
299
300<!-- ##### FUNCTION g_queue_insert_after ##### -->
301<para>
302
303</para>
304
305@queue:
306@sibling:
307@data:
308
309
310<!-- ##### FUNCTION g_queue_insert_sorted ##### -->
311<para>
312
313</para>
314
315@queue:
316@data:
317@func:
318@user_data:
319
320
321<!-- ##### FUNCTION g_queue_push_head_link ##### -->
322<para>
323
324</para>
325
326@queue:
327@link_:
328
329
330<!-- ##### FUNCTION g_queue_push_tail_link ##### -->
331<para>
332
333</para>
334
335@queue:
336@link_:
337
338
339<!-- ##### FUNCTION g_queue_push_nth_link ##### -->
340<para>
341
342</para>
343
344@queue:
345@n:
346@link_:
347
348
349<!-- ##### FUNCTION g_queue_pop_head_link ##### -->
350<para>
351
352</para>
353
354@queue:
355@Returns:
356
357
358<!-- ##### FUNCTION g_queue_pop_tail_link ##### -->
359<para>
360
361</para>
362
363@queue:
364@Returns:
365
366
367<!-- ##### FUNCTION g_queue_pop_nth_link ##### -->
368<para>
369
370</para>
371
372@queue:
373@n:
374@Returns:
375
376
377<!-- ##### FUNCTION g_queue_peek_head_link ##### -->
378<para>
379
380</para>
381
382@queue:
383@Returns:
384
385
386<!-- ##### FUNCTION g_queue_peek_tail_link ##### -->
387<para>
388
389</para>
390
391@queue:
392@Returns:
393
394
395<!-- ##### FUNCTION g_queue_peek_nth_link ##### -->
396<para>
397
398</para>
399
400@queue:
401@n:
402@Returns:
403
404
405<!-- ##### FUNCTION g_queue_link_index ##### -->
406<para>
407
408</para>
409
410@queue:
411@link_:
412@Returns:
413
414
415<!-- ##### FUNCTION g_queue_unlink ##### -->
416<para>
417
418</para>
419
420@queue:
421@link_:
422
423
424<!-- ##### FUNCTION g_queue_delete_link ##### -->
425<para>
426
427</para>
428
429@queue:
430@link_:
431
432
433