data_structures
src
data_structures
array
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
Generated by
1.8.16