blob: 96ce2d2df70607493b2232b09383ba83e225fd2d [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 initialize a statically-allocated #GQueue, use #G_QUEUE_INIT or
g_queue_init().
</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 ##### -->
<!-- ##### SECTION Image ##### -->
<!-- ##### 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>
@void:
@Returns:
<!-- ##### FUNCTION g_queue_free ##### -->
<para>
</para>
@queue:
<!-- ##### MACRO G_QUEUE_INIT ##### -->
<para>
A statically-allocated #GQueue must be initialized with this macro before it
can be used. This macro can be used to initialize a variable, but it cannot
be assigned to a variable. In that case you have to use g_queue_init().
</para>
<informalexample>
<programlisting>
GQueue my_queue = G_QUEUE_INIT;
</programlisting>
</informalexample>
@Since: 2.14
<!-- ##### FUNCTION g_queue_init ##### -->
<para>
</para>
@queue:
<!-- ##### FUNCTION g_queue_clear ##### -->
<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_: