blob: 44e262091bace051dbe69561a3c5b448a29d5541 [file] [log] [blame]
<!-- ##### SECTION Title ##### -->
Double-ended Queues
<!-- ##### SECTION Short_Description ##### -->
double-ended queue data structure.
<!-- ##### SECTION Long_Description ##### -->
<para>
The #GQueue structure and its associated functions provide a standard
queue data structure. Internally, #GQueue uses the same data structure as
#GList to store elements.
</para>
<para>
The data contained in each element can be either integer values, by using one
of the
<link linkend="glib-Type-Conversion-Macros">Type Conversion Macros</link>,
or simply pointers to any type of data.
</para>
<para>
To create a new #GQueue, use g_queue_new().
</para>
<para>
To add elements, use g_queue_push_head(), g_queue_push_head_link(),
g_queue_push_tail() and g_queue_push_tail_link().
</para>
<para>
To remove elements, use g_queue_pop_head() and g_queue_pop_tail().
</para>
<para>
To free the entire queue, use g_queue_free().
</para>
<!-- ##### SECTION See_Also ##### -->
<para>
</para>
<!-- ##### SECTION Stability_Level ##### -->
<!-- ##### STRUCT GQueue ##### -->
<para>
Contains the public fields of a <link linkend="glib-queues">Queue</link>.
</para>
@head: a pointer to the first element of the queue.
@tail: a pointer to the last element of the queue.
@length: the number of elements in the queue.
<!-- ##### FUNCTION g_queue_new ##### -->
<para>
</para>
@Returns:
<!-- ##### FUNCTION g_queue_free ##### -->
<para>
</para>
@queue:
<!-- ##### FUNCTION g_queue_is_empty ##### -->
<para>
</para>
@queue:
@Returns:
<!-- ##### FUNCTION g_queue_get_length ##### -->
<para>
</para>
@queue:
@Returns:
<!-- ##### FUNCTION g_queue_reverse ##### -->
<para>
</para>
@queue:
<!-- ##### FUNCTION g_queue_copy ##### -->
<para>
</para>
@queue:
@Returns:
<!-- ##### FUNCTION g_queue_foreach ##### -->
<para>
</para>
@queue:
@func:
@user_data:
<!-- ##### FUNCTION g_queue_find ##### -->
<para>
</para>
@queue:
@data:
@Returns:
<!-- ##### FUNCTION g_queue_find_custom ##### -->
<para>
</para>
@queue:
@data:
@func:
@Returns:
<!-- ##### FUNCTION g_queue_sort ##### -->
<para>
</para>
@queue:
@compare_func:
@user_data:
<!-- ##### FUNCTION g_queue_push_head ##### -->
<para>
</para>
@queue:
@data:
<!-- ##### FUNCTION g_queue_push_tail ##### -->
<para>
</para>
@queue:
@data:
<!-- ##### FUNCTION g_queue_push_nth ##### -->
<para>
</para>
@queue:
@data:
@n:
<!-- ##### FUNCTION g_queue_pop_head ##### -->
<para>
</para>
@queue:
@Returns:
<!-- ##### FUNCTION g_queue_pop_tail ##### -->
<para>
</para>
@queue:
@Returns:
<!-- ##### FUNCTION g_queue_pop_nth ##### -->
<para>
</para>
@queue:
@n:
@Returns:
<!-- ##### FUNCTION g_queue_peek_head ##### -->
<para>
</para>
@queue:
@Returns:
<!-- ##### FUNCTION g_queue_peek_tail ##### -->
<para>
</para>
@queue:
@Returns:
<!-- ##### FUNCTION g_queue_peek_nth ##### -->
<para>
</para>
@queue:
@n:
@Returns:
<!-- ##### FUNCTION g_queue_index ##### -->
<para>
</para>
@queue:
@data:
@Returns:
<!-- ##### FUNCTION g_queue_remove ##### -->
<para>
</para>
@queue:
@data:
<!-- ##### FUNCTION g_queue_remove_all ##### -->
<para>
</para>
@queue:
@data:
<!-- ##### FUNCTION g_queue_insert_before ##### -->
<para>
</para>
@queue:
@sibling:
@data:
<!-- ##### FUNCTION g_queue_insert_after ##### -->
<para>
</para>
@queue:
@sibling:
@data:
<!-- ##### FUNCTION g_queue_insert_sorted ##### -->
<para>
</para>
@queue:
@data:
@func:
@user_data:
<!-- ##### FUNCTION g_queue_push_head_link ##### -->
<para>
</para>
@queue:
@link_:
<!-- ##### FUNCTION g_queue_push_tail_link ##### -->
<para>
</para>
@queue:
@link_:
<!-- ##### FUNCTION g_queue_push_nth_link ##### -->
<para>
</para>
@queue:
@n:
@link_:
<!-- ##### FUNCTION g_queue_pop_head_link ##### -->
<para>
</para>
@queue:
@Returns:
<!-- ##### FUNCTION g_queue_pop_tail_link ##### -->
<para>
</para>
@queue:
@Returns:
<!-- ##### FUNCTION g_queue_pop_nth_link ##### -->
<para>
</para>
@queue:
@n:
@Returns:
<!-- ##### FUNCTION g_queue_peek_head_link ##### -->
<para>
</para>
@queue:
@Returns:
<!-- ##### FUNCTION g_queue_peek_tail_link ##### -->
<para>
</para>
@queue:
@Returns:
<!-- ##### FUNCTION g_queue_peek_nth_link ##### -->
<para>
</para>
@queue:
@n:
@Returns:
<!-- ##### FUNCTION g_queue_link_index ##### -->
<para>
</para>
@queue:
@link_:
@Returns:
<!-- ##### FUNCTION g_queue_unlink ##### -->
<para>
</para>
@queue:
@link_:
<!-- ##### FUNCTION g_queue_delete_link ##### -->
<para>
</para>
@queue:
@link_: