source: trunk/third/glib2/glib/gqueue.h @ 20721

Revision 20721, 4.4 KB checked in by ghudson, 20 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r20720, which included commits to RCS files with non-trunk default branches.
Line 
1/* GLIB - Library of useful routines for C programming
2 * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
18 */
19
20/*
21 * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
22 * file for a list of people on the GLib Team.  See the ChangeLog
23 * files for a list of changes.  These files are distributed with
24 * GLib at ftp://ftp.gtk.org/pub/gtk/.
25 */
26
27#ifndef __G_QUEUE_H__
28#define __G_QUEUE_H__
29
30#include <glib/glist.h>
31
32G_BEGIN_DECLS
33
34typedef struct _GQueue          GQueue;
35
36struct _GQueue
37{
38  GList *head;
39  GList *tail;
40  guint  length;
41};
42
43/* Queues
44 */
45GQueue*  g_queue_new            (void);
46void     g_queue_free           (GQueue           *queue);
47gboolean g_queue_is_empty       (GQueue           *queue);
48guint    g_queue_get_length     (GQueue           *queue);
49void     g_queue_reverse        (GQueue           *queue);
50GQueue * g_queue_copy           (GQueue           *queue);
51void     g_queue_foreach        (GQueue           *queue,
52                                 GFunc             func,
53                                 gpointer          user_data);
54GList *  g_queue_find           (GQueue           *queue,
55                                 gconstpointer     data);
56GList *  g_queue_find_custom    (GQueue           *queue,
57                                 gconstpointer     data,
58                                 GCompareFunc      func);
59void     g_queue_sort           (GQueue           *queue,
60                                 GCompareDataFunc  compare_func,
61                                 gpointer          user_data);
62
63void     g_queue_push_head      (GQueue           *queue,
64                                 gpointer          data);
65void     g_queue_push_tail      (GQueue           *queue,
66                                 gpointer          data);
67void     g_queue_push_nth       (GQueue           *queue,
68                                 gpointer          data,
69                                 gint              n);
70gpointer g_queue_pop_head       (GQueue           *queue);
71gpointer g_queue_pop_tail       (GQueue           *queue);
72gpointer g_queue_pop_nth        (GQueue           *queue,
73                                 guint             n);
74gpointer g_queue_peek_head      (GQueue           *queue);
75gpointer g_queue_peek_tail      (GQueue           *queue);
76gpointer g_queue_peek_nth       (GQueue           *queue,
77                                 guint             n);
78gint     g_queue_index          (GQueue           *queue,
79                                 gconstpointer     data);
80void     g_queue_remove         (GQueue           *queue,
81                                 gconstpointer     data);
82void     g_queue_remove_all     (GQueue           *queue,
83                                 gconstpointer     data);
84void     g_queue_insert_before  (GQueue           *queue,
85                                 GList            *sibling,
86                                 gpointer          data);
87void     g_queue_insert_after   (GQueue           *queue,
88                                 GList            *sibling,
89                                 gpointer          data);
90void     g_queue_insert_sorted  (GQueue           *queue,
91                                 gpointer          data,
92                                 GCompareDataFunc  func,
93                                 gpointer          user_data);
94
95void     g_queue_push_head_link (GQueue           *queue,
96                                 GList            *link_);
97void     g_queue_push_tail_link (GQueue           *queue,
98                                 GList            *link_);
99void     g_queue_push_nth_link  (GQueue           *queue,
100                                 gint              n,
101                                 GList            *link_);
102GList*   g_queue_pop_head_link  (GQueue           *queue);
103GList*   g_queue_pop_tail_link  (GQueue           *queue);
104GList*   g_queue_pop_nth_link   (GQueue           *queue,
105                                 guint             n);
106GList*   g_queue_peek_head_link (GQueue           *queue);
107GList*   g_queue_peek_tail_link (GQueue           *queue);
108GList*   g_queue_peek_nth_link  (GQueue           *queue,
109                                 guint             n);
110gint     g_queue_link_index     (GQueue           *queue,
111                                 GList            *link_);
112void     g_queue_unlink         (GQueue           *queue,
113                                 GList            *link_);
114void     g_queue_delete_link    (GQueue           *queue,
115                                 GList            *link_);
116
117G_END_DECLS
118
119#endif /* __G_QUEUE_H__ */
Note: See TracBrowser for help on using the repository browser.