data_structures
array_utils.c
Go to the documentation of this file.
1 /* ************************************************************************** */
3 /* */
4 /* ::: :::::::: */
5 /* array_utils.c :+: :+: :+: */
6 /* +:+ +:+ +:+ */
7 /* By: unite <marvin@42.fr> +#+ +:+ +#+ */
8 /* +#+#+#+#+#+ +#+ */
9 /* Created: 2020/07/18 23:26:57 by unite #+# #+# */
10 /* Updated: 2020/09/07 21:42:41 by unite ### ########.fr */
11 /* */
12 /* ************************************************************************** */
13 
14 #include "array.h"
15 
16 void array_grow(t_array *array)
17 {
18  void **arr;
19  size_t i;
20 
21  arr = ds_xmalloc(sizeof(void *) * array->capacity * 2);
22  i = 0;
23  while (i < array->size)
24  {
25  arr[i] = array->arr[i];
26  i++;
27  }
28  array->capacity = array->capacity * 2;
29  free(array->arr);
30  array->arr = arr;
31 }
32 
33 void array_shrink(t_array *array)
34 {
35  void **arr;
36  size_t i;
37 
38  arr = ds_xmalloc(sizeof(void *) * array->size * 2);
39  i = 0;
40  while (i < array->size)
41  {
42  arr[i] = array->arr[i];
43  i++;
44  }
45  array->capacity = array->size * 2;
46  free(array->arr);
47  array->arr = arr;
48 }
array.h
ds_xmalloc
void * ds_xmalloc(size_t size)
Replicates behaviour of malloc from libc, but fails on memory allocation errors.
Definition: ds_xmalloc.c:22
s_array::arr
void ** arr
The data.
Definition: array.h:51
s_array
A resizable array.
Definition: array.h:47
s_array::capacity
size_t capacity
The capacity of this array.
Definition: array.h:50
s_array::size
size_t size
The number of items in this array.
Definition: array.h:49