1 | /* GLIB - Library of useful routines for C programming |
2 | * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 |
3 | * Soeren Sandmann (sandmann@daimi.au.dk) |
4 | * |
5 | * This library is free software; you can redistribute it and/or |
6 | * modify it under the terms of the GNU Lesser General Public |
7 | * License as published by the Free Software Foundation; either |
8 | * version 2.1 of the License, or (at your option) any later version. |
9 | * |
10 | * This library is distributed in the hope that it will be useful, |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
13 | * Lesser General Public License for more details. |
14 | * |
15 | * You should have received a copy of the GNU Lesser General Public |
16 | * License along with this library; if not, see <http://www.gnu.org/licenses/>. |
17 | */ |
18 | |
19 | #ifndef __G_SEQUENCE_H__ |
20 | #define __G_SEQUENCE_H__ |
21 | |
22 | #if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) |
23 | #error "Only <glib.h> can be included directly." |
24 | #endif |
25 | |
26 | #include <glib/gtypes.h> |
27 | |
28 | G_BEGIN_DECLS |
29 | |
30 | typedef struct _GSequence GSequence; |
31 | typedef struct _GSequenceNode GSequenceIter; |
32 | |
33 | typedef gint (* GSequenceIterCompareFunc) (GSequenceIter *a, |
34 | GSequenceIter *b, |
35 | gpointer data); |
36 | |
37 | |
38 | /* GSequence */ |
39 | GLIB_AVAILABLE_IN_ALL |
40 | GSequence * g_sequence_new (GDestroyNotify data_destroy); |
41 | GLIB_AVAILABLE_IN_ALL |
42 | void g_sequence_free (GSequence *seq); |
43 | GLIB_AVAILABLE_IN_ALL |
44 | gint g_sequence_get_length (GSequence *seq); |
45 | GLIB_AVAILABLE_IN_ALL |
46 | void g_sequence_foreach (GSequence *seq, |
47 | GFunc func, |
48 | gpointer user_data); |
49 | GLIB_AVAILABLE_IN_ALL |
50 | void g_sequence_foreach_range (GSequenceIter *begin, |
51 | GSequenceIter *end, |
52 | GFunc func, |
53 | gpointer user_data); |
54 | GLIB_AVAILABLE_IN_ALL |
55 | void g_sequence_sort (GSequence *seq, |
56 | GCompareDataFunc cmp_func, |
57 | gpointer cmp_data); |
58 | GLIB_AVAILABLE_IN_ALL |
59 | void g_sequence_sort_iter (GSequence *seq, |
60 | GSequenceIterCompareFunc cmp_func, |
61 | gpointer cmp_data); |
62 | GLIB_AVAILABLE_IN_2_48 |
63 | gboolean g_sequence_is_empty (GSequence *seq); |
64 | |
65 | |
66 | /* Getting iters */ |
67 | GLIB_AVAILABLE_IN_ALL |
68 | GSequenceIter *g_sequence_get_begin_iter (GSequence *seq); |
69 | GLIB_AVAILABLE_IN_ALL |
70 | GSequenceIter *g_sequence_get_end_iter (GSequence *seq); |
71 | GLIB_AVAILABLE_IN_ALL |
72 | GSequenceIter *g_sequence_get_iter_at_pos (GSequence *seq, |
73 | gint pos); |
74 | GLIB_AVAILABLE_IN_ALL |
75 | GSequenceIter *g_sequence_append (GSequence *seq, |
76 | gpointer data); |
77 | GLIB_AVAILABLE_IN_ALL |
78 | GSequenceIter *g_sequence_prepend (GSequence *seq, |
79 | gpointer data); |
80 | GLIB_AVAILABLE_IN_ALL |
81 | GSequenceIter *g_sequence_insert_before (GSequenceIter *iter, |
82 | gpointer data); |
83 | GLIB_AVAILABLE_IN_ALL |
84 | void g_sequence_move (GSequenceIter *src, |
85 | GSequenceIter *dest); |
86 | GLIB_AVAILABLE_IN_ALL |
87 | void g_sequence_swap (GSequenceIter *a, |
88 | GSequenceIter *b); |
89 | GLIB_AVAILABLE_IN_ALL |
90 | GSequenceIter *g_sequence_insert_sorted (GSequence *seq, |
91 | gpointer data, |
92 | GCompareDataFunc cmp_func, |
93 | gpointer cmp_data); |
94 | GLIB_AVAILABLE_IN_ALL |
95 | GSequenceIter *g_sequence_insert_sorted_iter (GSequence *seq, |
96 | gpointer data, |
97 | GSequenceIterCompareFunc iter_cmp, |
98 | gpointer cmp_data); |
99 | GLIB_AVAILABLE_IN_ALL |
100 | void g_sequence_sort_changed (GSequenceIter *iter, |
101 | GCompareDataFunc cmp_func, |
102 | gpointer cmp_data); |
103 | GLIB_AVAILABLE_IN_ALL |
104 | void g_sequence_sort_changed_iter (GSequenceIter *iter, |
105 | GSequenceIterCompareFunc iter_cmp, |
106 | gpointer cmp_data); |
107 | GLIB_AVAILABLE_IN_ALL |
108 | void g_sequence_remove (GSequenceIter *iter); |
109 | GLIB_AVAILABLE_IN_ALL |
110 | void g_sequence_remove_range (GSequenceIter *begin, |
111 | GSequenceIter *end); |
112 | GLIB_AVAILABLE_IN_ALL |
113 | void g_sequence_move_range (GSequenceIter *dest, |
114 | GSequenceIter *begin, |
115 | GSequenceIter *end); |
116 | GLIB_AVAILABLE_IN_ALL |
117 | GSequenceIter *g_sequence_search (GSequence *seq, |
118 | gpointer data, |
119 | GCompareDataFunc cmp_func, |
120 | gpointer cmp_data); |
121 | GLIB_AVAILABLE_IN_ALL |
122 | GSequenceIter *g_sequence_search_iter (GSequence *seq, |
123 | gpointer data, |
124 | GSequenceIterCompareFunc iter_cmp, |
125 | gpointer cmp_data); |
126 | GLIB_AVAILABLE_IN_ALL |
127 | GSequenceIter *g_sequence_lookup (GSequence *seq, |
128 | gpointer data, |
129 | GCompareDataFunc cmp_func, |
130 | gpointer cmp_data); |
131 | GLIB_AVAILABLE_IN_ALL |
132 | GSequenceIter *g_sequence_lookup_iter (GSequence *seq, |
133 | gpointer data, |
134 | GSequenceIterCompareFunc iter_cmp, |
135 | gpointer cmp_data); |
136 | |
137 | |
138 | /* Dereferencing */ |
139 | GLIB_AVAILABLE_IN_ALL |
140 | gpointer g_sequence_get (GSequenceIter *iter); |
141 | GLIB_AVAILABLE_IN_ALL |
142 | void g_sequence_set (GSequenceIter *iter, |
143 | gpointer data); |
144 | |
145 | /* Operations on GSequenceIter * */ |
146 | GLIB_AVAILABLE_IN_ALL |
147 | gboolean g_sequence_iter_is_begin (GSequenceIter *iter); |
148 | GLIB_AVAILABLE_IN_ALL |
149 | gboolean g_sequence_iter_is_end (GSequenceIter *iter); |
150 | GLIB_AVAILABLE_IN_ALL |
151 | GSequenceIter *g_sequence_iter_next (GSequenceIter *iter); |
152 | GLIB_AVAILABLE_IN_ALL |
153 | GSequenceIter *g_sequence_iter_prev (GSequenceIter *iter); |
154 | GLIB_AVAILABLE_IN_ALL |
155 | gint g_sequence_iter_get_position (GSequenceIter *iter); |
156 | GLIB_AVAILABLE_IN_ALL |
157 | GSequenceIter *g_sequence_iter_move (GSequenceIter *iter, |
158 | gint delta); |
159 | GLIB_AVAILABLE_IN_ALL |
160 | GSequence * g_sequence_iter_get_sequence (GSequenceIter *iter); |
161 | |
162 | |
163 | /* Search */ |
164 | GLIB_AVAILABLE_IN_ALL |
165 | gint g_sequence_iter_compare (GSequenceIter *a, |
166 | GSequenceIter *b); |
167 | GLIB_AVAILABLE_IN_ALL |
168 | GSequenceIter *g_sequence_range_get_midpoint (GSequenceIter *begin, |
169 | GSequenceIter *end); |
170 | |
171 | G_END_DECLS |
172 | |
173 | #endif /* __G_SEQUENCE_H__ */ |
174 | |