glib/docs/reference/glib/tmpl/queue.sgml
Owen Taylor 2ae1a46b4c Add g_object_add/remove_toggle_ref() functions to get notification when a
2005-05-05  Owen Taylor  <otaylor@redhat.com>

        * gobject.[ch] gobject.symbols: Add
        g_object_add/remove_toggle_ref() functions to get notification
        when a reference count is the last remaining reference; this
        enables better memory management for language bindings.
        (http://mail.gnome.org/archives/gtk-devel-list/2005-April/msg00095.html)

2005-05-05  Owen Taylor  <otaylor@redhat.com>

        * glib/gdataset.[ch] glib/gdatasetprivate.h: Add
        g_datalist_set/unset_flags(), g_datalist_get_flags() functions
        to squeeze some bits into a GDataSet... this is needed for
        efficient implementation of toggle references in GObject.

        * tests/gobject/references.c tests/gobject/Makefile.am:
        Add a test case for weak and toggle references.

        * glib/gfileutils.[ch]: Rename g_file_replace() back
        to g_file_set_contents().

        * glib/glib.symbols: Update.

2005-05-05  Owen Taylor  <otaylor@redhat.com>

        * glib/Makefile.am glib/glib-sections.txt gobject/gobject-sections.txt:
        Update

        * gobject/tmpl/objects.sgml: Document toggle-references.
2005-05-05 14:57:29 +00:00

397 lines
4.5 KiB
Plaintext

<!-- ##### 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_: