Github User Fetcher 1.0.0
C Application with Server and GUI
Loading...
Searching...
No Matches
garray.h
Go to the documentation of this file.
1/* GLIB - Library of useful routines for C programming
2 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
3 *
4 * SPDX-License-Identifier: LGPL-2.1-or-later
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
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_ARRAY_H__
28#define __G_ARRAY_H__
29
30#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
31#error "Only <glib.h> can be included directly."
32#endif
33
34#include <glib/gtypes.h>
35
37
38typedef struct _GBytes GBytes;
39typedef struct _GArray GArray;
40typedef struct _GByteArray GByteArray;
41typedef struct _GPtrArray GPtrArray;
42
43struct _GArray
44{
47};
48
54
60
61/* Resizable arrays. remove fills any cleared spot and shortens the
62 * array, while preserving the order. remove_fast will distort the
63 * order by moving the last element to the position of the removed.
64 */
65
66#define g_array_append_val(a,v) g_array_append_vals (a, &(v), 1)
67#define g_array_prepend_val(a,v) g_array_prepend_vals (a, &(v), 1)
68#define g_array_insert_val(a,i,v) g_array_insert_vals (a, i, &(v), 1)
69#define g_array_index(a,t,i) (((t*) (void *) (a)->data) [(i)])
70
72GArray* g_array_new (gboolean zero_terminated,
73 gboolean clear_,
74 guint element_size);
77 gsize len,
78 gboolean clear,
79 gsize element_size);
82 gboolean clear,
83 gsize element_size);
86 gsize *len);
89 gboolean clear_,
90 guint element_size,
91 guint reserved_size);
96 gboolean free_segment);
100void g_array_unref (GArray *array);
105 gconstpointer data,
106 guint len);
109 gconstpointer data,
110 guint len);
113 guint index_,
114 gconstpointer data,
115 guint len);
118 guint length);
121 guint index_);
124 guint index_);
127 guint index_,
128 guint length);
130void g_array_sort (GArray *array,
131 GCompareFunc compare_func);
134 GCompareDataFunc compare_func,
135 gpointer user_data);
138 gconstpointer target,
139 GCompareFunc compare_func,
140 guint *out_match_index);
143 GDestroyNotify clear_func);
144
145/* Resizable pointer array. This interface is much less complicated
146 * than the above. Add appends a pointer. Remove fills any cleared
147 * spot and shortens the array. remove_fast will again distort order.
148 */
149#define g_ptr_array_index(array,index_) ((array)->pdata)[index_]
156 gsize len,
157 GDestroyNotify element_free_func);
160 gsize len,
161 GCopyFunc copy_func,
162 gpointer copy_func_user_data,
163 GDestroyNotify element_free_func);
166 gsize *len);
169 GCopyFunc func,
170 gpointer user_data);
175 GDestroyNotify element_free_func);
178 GDestroyNotify element_free_func,
179 gboolean null_terminated);
182 GDestroyNotify element_free_func);
185 GCopyFunc copy_func,
186 gpointer copy_func_user_data,
187 GDestroyNotify element_free_func);
190 gboolean free_seg);
197 GDestroyNotify element_free_func);
200 gint length);
203 guint index_);
206 guint index_);
209 guint index_);
212 guint index_);
215 gpointer data);
218 gpointer data);
221 guint index_,
222 guint length);
225 gpointer data);
227void g_ptr_array_extend (GPtrArray *array_to_extend,
228 GPtrArray *array,
229 GCopyFunc func,
230 gpointer user_data);
233 GPtrArray *array);
236 gint index_,
237 gpointer data);
240 GCompareFunc compare_func);
243 GCompareDataFunc compare_func,
244 gpointer user_data);
247 GCompareFunc compare_func);
250 GCompareDataFunc compare_func,
251 gpointer user_data);
254 GFunc func,
255 gpointer user_data);
258 gconstpointer needle,
259 guint *index_);
262 gconstpointer needle,
263 GEqualFunc equal_func,
264 guint *index_);
265
268
269/* Byte arrays, an array of guint8. Implemented as a GArray,
270 * but type-safe.
271 */
272
277 gsize len);
280 gsize *len);
285 gboolean free_segment);
294 const guint8 *data,
295 guint len);
298 const guint8 *data,
299 guint len);
302 guint length);
305 guint index_);
308 guint index_);
311 guint index_,
312 guint length);
315 GCompareFunc compare_func);
318 GCompareDataFunc compare_func,
319 gpointer user_data);
320
322
323#endif /* __G_ARRAY_H__ */
GLIB_AVAILABLE_IN_ALL void g_byte_array_sort(GByteArray *array, GCompareFunc compare_func)
GLIB_AVAILABLE_IN_2_74 GPtrArray * g_ptr_array_new_null_terminated(guint reserved_size, GDestroyNotify element_free_func, gboolean null_terminated)
GLIB_AVAILABLE_IN_ALL GByteArray * g_byte_array_remove_range(GByteArray *array, guint index_, guint length)
GLIB_AVAILABLE_IN_ALL void g_byte_array_sort_with_data(GByteArray *array, GCompareDataFunc compare_func, gpointer user_data)
GLIB_AVAILABLE_IN_ALL gpointer g_ptr_array_remove_index_fast(GPtrArray *array, guint index_)
GLIB_AVAILABLE_IN_2_76 void g_ptr_array_sort_values_with_data(GPtrArray *array, GCompareDataFunc compare_func, gpointer user_data)
GLIB_AVAILABLE_IN_2_40 void g_ptr_array_insert(GPtrArray *array, gint index_, gpointer data)
GLIB_AVAILABLE_IN_ALL GPtrArray * g_ptr_array_new_full(guint reserved_size, GDestroyNotify element_free_func)
GLIB_AVAILABLE_IN_ALL guint8 * g_byte_array_free(GByteArray *array, gboolean free_segment)
GLIB_AVAILABLE_IN_2_76 GArray * g_array_new_take(gpointer data, gsize len, gboolean clear, gsize element_size)
GLIB_AVAILABLE_IN_ALL GBytes * g_byte_array_free_to_bytes(GByteArray *array)
GLIB_AVAILABLE_IN_2_76 GArray * g_array_new_take_zero_terminated(gpointer data, gboolean clear, gsize element_size)
GLIB_AVAILABLE_IN_ALL GByteArray * g_byte_array_set_size(GByteArray *array, guint length)
GLIB_AVAILABLE_IN_ALL GByteArray * g_byte_array_new(void)
GLIB_AVAILABLE_IN_ALL GByteArray * g_byte_array_remove_index(GByteArray *array, guint index_)
GLIB_AVAILABLE_IN_ALL gboolean g_ptr_array_remove_fast(GPtrArray *array, gpointer data)
GLIB_AVAILABLE_IN_ALL GByteArray * g_byte_array_sized_new(guint reserved_size)
GLIB_AVAILABLE_IN_ALL void g_ptr_array_set_size(GPtrArray *array, gint length)
GLIB_AVAILABLE_IN_2_54 gboolean g_ptr_array_find_with_equal_func(GPtrArray *haystack, gconstpointer needle, GEqualFunc equal_func, guint *index_)
GLIB_AVAILABLE_IN_ALL GArray * g_array_set_size(GArray *array, guint length)
GLIB_AVAILABLE_IN_ALL gboolean g_ptr_array_remove(GPtrArray *array, gpointer data)
GLIB_AVAILABLE_IN_2_62 void g_ptr_array_extend(GPtrArray *array_to_extend, GPtrArray *array, GCopyFunc func, gpointer user_data)
GLIB_AVAILABLE_IN_ALL void g_array_unref(GArray *array)
GLIB_AVAILABLE_IN_2_62 void g_ptr_array_extend_and_steal(GPtrArray *array_to_extend, GPtrArray *array)
GLIB_AVAILABLE_IN_2_62 gboolean g_array_binary_search(GArray *array, gconstpointer target, GCompareFunc compare_func, guint *out_match_index)
GLIB_AVAILABLE_IN_ALL gpointer g_ptr_array_remove_index(GPtrArray *array, guint index_)
GLIB_AVAILABLE_IN_ALL gchar * g_array_free(GArray *array, gboolean free_segment)
GLIB_AVAILABLE_IN_ALL void g_ptr_array_add(GPtrArray *array, gpointer data)
GLIB_AVAILABLE_IN_2_62 GArray * g_array_copy(GArray *array)
GLIB_AVAILABLE_IN_ALL GArray * g_array_prepend_vals(GArray *array, gconstpointer data, guint len)
GLIB_AVAILABLE_IN_2_58 gpointer g_ptr_array_steal_index_fast(GPtrArray *array, guint index_)
GLIB_AVAILABLE_IN_ALL void g_byte_array_unref(GByteArray *array)
GLIB_AVAILABLE_IN_2_76 GPtrArray * g_ptr_array_new_take(gpointer *data, gsize len, GDestroyNotify element_free_func)
GLIB_AVAILABLE_IN_ALL void g_ptr_array_sort_with_data(GPtrArray *array, GCompareDataFunc compare_func, gpointer user_data)
GLIB_AVAILABLE_IN_ALL GArray * g_array_sized_new(gboolean zero_terminated, gboolean clear_, guint element_size, guint reserved_size)
GLIB_AVAILABLE_IN_2_76 GPtrArray * g_ptr_array_new_take_null_terminated(gpointer *data, GDestroyNotify element_free_func)
GLIB_AVAILABLE_IN_ALL GByteArray * g_byte_array_prepend(GByteArray *array, const guint8 *data, guint len)
GLIB_AVAILABLE_IN_ALL guint g_array_get_element_size(GArray *array)
GLIB_AVAILABLE_IN_ALL void g_ptr_array_set_free_func(GPtrArray *array, GDestroyNotify element_free_func)
GLIB_AVAILABLE_IN_ALL GByteArray * g_byte_array_append(GByteArray *array, const guint8 *data, guint len)
GLIB_AVAILABLE_IN_2_58 gpointer g_ptr_array_steal_index(GPtrArray *array, guint index_)
GLIB_AVAILABLE_IN_ALL GArray * g_array_remove_index_fast(GArray *array, guint index_)
GLIB_AVAILABLE_IN_2_76 void g_ptr_array_sort_values(GPtrArray *array, GCompareFunc compare_func)
GLIB_AVAILABLE_IN_ALL void g_array_set_clear_func(GArray *array, GDestroyNotify clear_func)
GLIB_AVAILABLE_IN_ALL GArray * g_array_remove_index(GArray *array, guint index_)
GLIB_AVAILABLE_IN_2_64 guint8 * g_byte_array_steal(GByteArray *array, gsize *len)
GLIB_AVAILABLE_IN_ALL void g_ptr_array_foreach(GPtrArray *array, GFunc func, gpointer user_data)
GLIB_AVAILABLE_IN_2_74 gboolean g_ptr_array_is_null_terminated(GPtrArray *array)
GLIB_AVAILABLE_IN_ALL GArray * g_array_append_vals(GArray *array, gconstpointer data, guint len)
GLIB_AVAILABLE_IN_ALL void g_ptr_array_sort(GPtrArray *array, GCompareFunc compare_func)
GLIB_AVAILABLE_IN_ALL void g_array_sort(GArray *array, GCompareFunc compare_func)
GLIB_AVAILABLE_IN_2_54 gboolean g_ptr_array_find(GPtrArray *haystack, gconstpointer needle, guint *index_)
GLIB_AVAILABLE_IN_2_76 GPtrArray * g_ptr_array_new_from_array(gpointer *data, gsize len, GCopyFunc copy_func, gpointer copy_func_user_data, GDestroyNotify element_free_func)
GLIB_AVAILABLE_IN_ALL void g_ptr_array_unref(GPtrArray *array)
GLIB_AVAILABLE_IN_ALL GPtrArray * g_ptr_array_new_with_free_func(GDestroyNotify element_free_func)
GLIB_AVAILABLE_IN_ALL GByteArray * g_byte_array_new_take(guint8 *data, gsize len)
GLIB_AVAILABLE_IN_ALL GByteArray * g_byte_array_ref(GByteArray *array)
GLIB_AVAILABLE_IN_ALL GArray * g_array_remove_range(GArray *array, guint index_, guint length)
GLIB_AVAILABLE_IN_2_64 gpointer * g_ptr_array_steal(GPtrArray *array, gsize *len)
GLIB_AVAILABLE_IN_ALL GPtrArray * g_ptr_array_remove_range(GPtrArray *array, guint index_, guint length)
GLIB_AVAILABLE_IN_2_76 GPtrArray * g_ptr_array_new_from_null_terminated_array(gpointer *data, GCopyFunc copy_func, gpointer copy_func_user_data, GDestroyNotify element_free_func)
GLIB_AVAILABLE_IN_ALL GPtrArray * g_ptr_array_new(void)
GLIB_AVAILABLE_IN_ALL GPtrArray * g_ptr_array_ref(GPtrArray *array)
GLIB_AVAILABLE_IN_ALL GArray * g_array_ref(GArray *array)
GLIB_AVAILABLE_IN_ALL GArray * g_array_insert_vals(GArray *array, guint index_, gconstpointer data, guint len)
GLIB_AVAILABLE_IN_ALL gpointer * g_ptr_array_free(GPtrArray *array, gboolean free_seg)
GLIB_AVAILABLE_IN_ALL GByteArray * g_byte_array_remove_index_fast(GByteArray *array, guint index_)
GLIB_AVAILABLE_IN_2_64 gpointer g_array_steal(GArray *array, gsize *len)
GLIB_AVAILABLE_IN_ALL GArray * g_array_new(gboolean zero_terminated, gboolean clear_, guint element_size)
GLIB_AVAILABLE_IN_ALL void g_array_sort_with_data(GArray *array, GCompareDataFunc compare_func, gpointer user_data)
GLIB_AVAILABLE_IN_2_62 GPtrArray * g_ptr_array_copy(GPtrArray *array, GCopyFunc func, gpointer user_data)
typedefG_BEGIN_DECLS struct _GBytes GBytes
Definition garray.h:38
GLIB_AVAILABLE_IN_ALL GPtrArray * g_ptr_array_sized_new(guint reserved_size)
#define GLIB_AVAILABLE_IN_2_54
#define GLIB_AVAILABLE_IN_2_76
#define GLIB_AVAILABLE_IN_2_40
#define GLIB_AVAILABLE_IN_ALL
#define GLIB_AVAILABLE_IN_2_58
#define GLIB_AVAILABLE_IN_2_62
#define GLIB_AVAILABLE_IN_2_74
#define GLIB_AVAILABLE_IN_2_64
unsigned char guint8
Definition glibconfig.h:46
unsigned long gsize
Definition glibconfig.h:83
#define G_END_DECLS
Definition gmacros.h:910
#define G_BEGIN_DECLS
Definition gmacros.h:909
gpointer(* GCopyFunc)(gconstpointer src, gpointer data)
Definition gtypes.h:160
gint gboolean
Definition gtypes.h:56
G_BEGIN_DECLS typedef char gchar
Definition gtypes.h:52
void * gpointer
Definition gtypes.h:109
gboolean(* GEqualFunc)(gconstpointer a, gconstpointer b)
Definition gtypes.h:117
gint(* GCompareFunc)(gconstpointer a, gconstpointer b)
Definition gtypes.h:112
int gint
Definition gtypes.h:55
const void * gconstpointer
Definition gtypes.h:110
void(* GFunc)(gpointer data, gpointer user_data)
Definition gtypes.h:141
void(* GDestroyNotify)(gpointer data)
Definition gtypes.h:140
unsigned int guint
Definition gtypes.h:61
gint(* GCompareDataFunc)(gconstpointer a, gconstpointer b, gpointer user_data)
Definition gtypes.h:114
gchar * data
Definition garray.h:45
guint len
Definition garray.h:46
guint8 * data
Definition garray.h:51
guint len
Definition garray.h:52
gpointer * pdata
Definition garray.h:57
guint len
Definition garray.h:58