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

Revision 20721, 6.3 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_ARRAY_H__
28#define __G_ARRAY_H__
29
30#include <glib/gtypes.h>
31
32G_BEGIN_DECLS
33
34typedef struct _GArray          GArray;
35typedef struct _GByteArray      GByteArray;
36typedef struct _GPtrArray       GPtrArray;
37
38struct _GArray
39{
40  gchar *data;
41  guint len;
42};
43
44struct _GByteArray
45{
46  guint8 *data;
47  guint   len;
48};
49
50struct _GPtrArray
51{
52  gpointer *pdata;
53  guint     len;
54};
55
56/* Resizable arrays. remove fills any cleared spot and shortens the
57 * array, while preserving the order. remove_fast will distort the
58 * order by moving the last element to the position of the removed.
59 */
60
61#define g_array_append_val(a,v)   g_array_append_vals (a, &(v), 1)
62#define g_array_prepend_val(a,v)  g_array_prepend_vals (a, &(v), 1)
63#define g_array_insert_val(a,i,v) g_array_insert_vals (a, i, &(v), 1)
64#define g_array_index(a,t,i)      (((t*) (a)->data) [(i)])
65
66GArray* g_array_new               (gboolean          zero_terminated,
67                                   gboolean          clear_,
68                                   guint             element_size);
69GArray* g_array_sized_new         (gboolean          zero_terminated,
70                                   gboolean          clear_,
71                                   guint             element_size,
72                                   guint             reserved_size);
73gchar*  g_array_free              (GArray           *array,
74                                   gboolean          free_segment);
75GArray* g_array_append_vals       (GArray           *array,
76                                   gconstpointer     data,
77                                   guint             len);
78GArray* g_array_prepend_vals      (GArray           *array,
79                                   gconstpointer     data,
80                                   guint             len);
81GArray* g_array_insert_vals       (GArray           *array,
82                                   guint             index_,
83                                   gconstpointer     data,
84                                   guint             len);
85GArray* g_array_set_size          (GArray           *array,
86                                   guint             length);
87GArray* g_array_remove_index      (GArray           *array,
88                                   guint             index_);
89GArray* g_array_remove_index_fast (GArray           *array,
90                                   guint             index_);
91GArray* g_array_remove_range      (GArray           *array,
92                                   guint             index_,
93                                   guint             length);
94void    g_array_sort              (GArray           *array,
95                                   GCompareFunc      compare_func);
96void    g_array_sort_with_data    (GArray           *array,
97                                   GCompareDataFunc  compare_func,
98                                   gpointer          user_data);
99
100/* Resizable pointer array.  This interface is much less complicated
101 * than the above.  Add appends a pointer.  Remove fills any cleared
102 * spot and shortens the array. remove_fast will again distort order. 
103 */
104#define    g_ptr_array_index(array,index_) ((array)->pdata)[index_]
105GPtrArray* g_ptr_array_new                (void);
106GPtrArray* g_ptr_array_sized_new          (guint             reserved_size);
107gpointer*  g_ptr_array_free               (GPtrArray        *array,
108                                           gboolean          free_seg);
109void       g_ptr_array_set_size           (GPtrArray        *array,
110                                           gint              length);
111gpointer   g_ptr_array_remove_index       (GPtrArray        *array,
112                                           guint             index_);
113gpointer   g_ptr_array_remove_index_fast  (GPtrArray        *array,
114                                           guint             index_);
115gboolean   g_ptr_array_remove             (GPtrArray        *array,
116                                           gpointer          data);
117gboolean   g_ptr_array_remove_fast        (GPtrArray        *array,
118                                           gpointer          data);
119void       g_ptr_array_remove_range       (GPtrArray        *array,
120                                           guint             index_,
121                                           guint             length);
122void       g_ptr_array_add                (GPtrArray        *array,
123                                           gpointer          data);
124void       g_ptr_array_sort               (GPtrArray        *array,
125                                           GCompareFunc      compare_func);
126void       g_ptr_array_sort_with_data     (GPtrArray        *array,
127                                           GCompareDataFunc  compare_func,
128                                           gpointer          user_data);
129void       g_ptr_array_foreach            (GPtrArray        *array,
130                                           GFunc             func,
131                                           gpointer          user_data);
132
133
134/* Byte arrays, an array of guint8.  Implemented as a GArray,
135 * but type-safe.
136 */
137
138GByteArray* g_byte_array_new               (void);
139GByteArray* g_byte_array_sized_new         (guint             reserved_size);
140guint8*     g_byte_array_free              (GByteArray       *array,
141                                            gboolean          free_segment);
142GByteArray* g_byte_array_append            (GByteArray       *array,
143                                            const guint8     *data,
144                                            guint             len);
145GByteArray* g_byte_array_prepend           (GByteArray       *array,
146                                            const guint8     *data,
147                                            guint             len);
148GByteArray* g_byte_array_set_size          (GByteArray       *array,
149                                            guint             length);
150GByteArray* g_byte_array_remove_index      (GByteArray       *array,
151                                            guint             index_);
152GByteArray* g_byte_array_remove_index_fast (GByteArray       *array,
153                                            guint             index_);
154GByteArray* g_byte_array_remove_range      (GByteArray       *array,
155                                            guint             index_,
156                                            guint             length);
157void        g_byte_array_sort              (GByteArray       *array,
158                                            GCompareFunc      compare_func);
159void        g_byte_array_sort_with_data    (GByteArray       *array,
160                                            GCompareDataFunc  compare_func,
161                                            gpointer          user_data);
162
163
164G_END_DECLS
165
166#endif /* __G_ARRAY_H__ */
167
Note: See TracBrowser for help on using the repository browser.