PIPS
newgen_array.h
Go to the documentation of this file.
1 /*
2 
3  $Id: newgen_array.h 1357 2016-03-02 08:18:50Z coelho $
4 
5  Copyright 1989-2016 MINES ParisTech
6 
7  This file is part of NewGen.
8 
9  NewGen is free software: you can redistribute it and/or modify it under the
10  terms of the GNU General Public License as published by the Free Software
11  Foundation, either version 3 of the License, or any later version.
12 
13  NewGen is distributed in the hope that it will be useful, but WITHOUT ANY
14  WARRANTY; without even the implied warranty of MERCHANTABILITY or
15  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
16  License for more details.
17 
18  You should have received a copy of the GNU General Public License along with
19  NewGen. If not, see <http://www.gnu.org/licenses/>.
20 
21 */
22 
23 struct _gen_array_chunk_t;
25 
26 #define gen_array_undefined ((gen_array_t) -12)
27 #define gen_array_undefined_p(a) ((a)==gen_array_undefined)
28 
29 /* declarations...
30  */
34 void gen_array_addto(gen_array_t, size_t, void *);
35 void gen_array_remove(gen_array_t, size_t);
36 void gen_array_dupaddto(gen_array_t, size_t, void *);
37 void gen_array_append(gen_array_t, void *);
38 void gen_array_dupappend(gen_array_t, void *);
42 void * gen_array_item(gen_array_t, size_t);
44 void gen_array_sort_with_cmp(gen_array_t, int (*)(const void *, const void *));
45 
48 string string_array_join(gen_array_t array, string separator);
49 
50 #define GEN_ARRAY_FOREACH(type, s, array) \
51  gen_array_t NGMID(a) = (array); \
52  size_t NGMID(n) = gen_array_nitems(NGMID(a)); \
53  type s = NGMID(n) > 0 ? (type) gen_array_item(NGMID(a), 0): NULL; \
54  for (size_t NGMID(i) = 0; \
55  NGMID(i) < NGMID(n) && \
56  ((s = (type) gen_array_item(NGMID(a), NGMID(i))), 1); \
57  NGMID(i) ++)
void ** gen_array_pointer(gen_array_t)
Observers...
Definition: array.c:125
void gen_array_dupaddto(gen_array_t, size_t, void *)
Definition: array.c:111
void gen_array_full_free(gen_array_t)
Definition: array.c:77
string string_array_join(gen_array_t array, string separator)
Join a string array with a string separator.
Definition: array.c:198
size_t gen_array_nitems(gen_array_t)
Definition: array.c:131
void gen_array_dupappend(gen_array_t, void *)
Definition: array.c:117
void gen_array_addto(gen_array_t, size_t, void *)
Definition: array.c:87
struct _gen_array_chunk_t * gen_array_t
Definition: newgen_array.h:24
void gen_array_sort_with_cmp(gen_array_t, int(*)(const void *, const void *))
Definition: array.c:158
void gen_array_append(gen_array_t, void *)
Definition: array.c:105
void gen_array_sort(gen_array_t)
Definition: array.c:164
list list_from_gen_array(gen_array_t)
Definition: array.c:178
gen_array_t gen_array_make(size_t)
declarations...
Definition: array.c:40
gen_array_t gen_array_from_list(list)
Definition: array.c:170
void gen_array_remove(gen_array_t, size_t)
Definition: array.c:97
void gen_array_free(gen_array_t)
Definition: array.c:70
void * gen_array_item(gen_array_t, size_t)
Definition: array.c:143
size_t gen_array_size(gen_array_t)
Definition: array.c:137
static entity array
The structure used to build lists in NewGen.
Definition: newgen_list.h:41