minishell
vect_reserve.c
Go to the documentation of this file.
1 /* ************************************************************************** */
2 /* */
3 /* ::: :::::::: */
4 /* vect_reserve.c :+: :+: :+: */
5 /* +:+ +:+ +:+ */
6 /* By: kfujita <kfujita@student.42tokyo.jp> +#+ +:+ +#+ */
7 /* +#+#+#+#+#+ +#+ */
8 /* Created: 2023/01/28 00:32:55 by kfujita #+# #+# */
9 /* Updated: 2023/01/30 14:33:13 by kfujita ### ########.fr */
10 /* */
11 /* ************************************************************************** */
12 
13 #include "ft_vect.h"
14 #include "../ft_mem/ft_mem.h"
15 #include "stdlib.h"
16 
17 bool vect_reserve(t_vect *vect, size_t newcap)
18 {
19  void *p_new;
20 
21  if (vect->elemsize == 0 || newcap <= vect->len)
22  return (false);
23  if (newcap == 0)
24  p_new = NULL;
25  else
26  {
27  p_new = ft_calloc_nofill(newcap, vect->elemsize);
28  if (p_new == NULL)
29  return (false);
30  ft_memmove(p_new, vect->p, vect->elemsize * vect->len);
31  free(vect->p);
32  }
33  vect->p = p_new;
34  vect->cap = newcap;
35  return (true);
36 }
void * ft_calloc_nofill(size_t count, size_t size)
Definition: ft_calloc.c:17
void * ft_memmove(void *dst, const void *src, size_t n)
Definition: ft_memmove.c:16
Definition: ft_vect.h:24
size_t cap
Definition: ft_vect.h:25
size_t elemsize
Definition: ft_vect.h:27
void * p
Definition: ft_vect.h:28
size_t len
Definition: ft_vect.h:26
bool vect_reserve(t_vect *vect, size_t newcap)
Definition: vect_reserve.c:17