Basilisk CFD
Adaptive Cartesian mesh PDE framework
Loading...
Searching...
No Matches
array.h
Go to the documentation of this file.
1/** @file array.h
2 */
3// Arrays
4
5typedef struct {
6 void * p;
7 long max, len;
8} Array;
9
11{
12 Array * a = qmalloc (1, Array);
13 a->p = NULL;
14 a->max = a->len = 0;
15 return a;
16}
17
19{
20 free (a->p);
21 free (a);
22}
23
24void * array_append (Array * a, void * elem, size_t size)
25{
26 if (a->len + size >= a->max) {
27 a->max += max (size, 4096);
28 a->p = realloc (a->p, a->max);
29 }
30 memcpy (((char *)a->p) + a->len, elem, size);
31 a->len += size;
32 return (void *)(((char *)a->p) + a->len - size);
33}
34
36{
37 void * p = realloc (a->p, a->len);
38 free (a);
39 return p;
40}
const vector a
Definition all-mach.h:59
Array * array_new()
Definition array.h:10
void * array_shrink(Array *a)
Definition array.h:35
void array_free(Array *a)
Definition array.h:18
void * array_append(Array *a, void *elem, size_t size)
Definition array.h:24
free(list1)
int x
Definition common.h:76
#define p
Definition tree.h:320
#define qmalloc(size, type)
define sysmalloc malloc define syscalloc calloc define sysrealloc realloc define sysfree free define systrdup strdup define line line realloc(p, s) @ define pfree(p
size_t max
Definition mtrace.h:8
size_t size
Definition array.h:5
void * p
Definition array.h:6
long len
Definition array.h:7