minishell
vect_set.c
Go to the documentation of this file.
1 /* ************************************************************************** */
2 /* */
3 /* ::: :::::::: */
4 /* vect_set.c :+: :+: :+: */
5 /* +:+ +:+ +:+ */
6 /* By: kfujita <kfujita@student.42tokyo.jp> +#+ +:+ +#+ */
7 /* +#+#+#+#+#+ +#+ */
8 /* Created: 2023/01/28 01:10:41 by kfujita #+# #+# */
9 /* Updated: 2023/02/06 23:58:11 by kfujita ### ########.fr */
10 /* */
11 /* ************************************************************************** */
12 
13 #include "ft_vect.h"
14 #include "../ft_mem/ft_mem.h"
15 
16 bool vect_set(t_vect *vect, const void *elem, size_t index)
17 {
18  unsigned char *p;
19 
20  if (vect->p == NULL || vect->elemsize == 0 || vect->len < index)
21  return (false);
22  if (vect->cap <= index
23  && !vect_reserve(vect, index + FT_VECT_EXPAND_STEP))
24  return (false);
25  p = vect->p;
26  ft_memmove(p + (index * vect->elemsize), elem, vect->elemsize);
27  if (vect->len == index)
28  vect->len += 1;
29  return (true);
30 }
void * ft_memmove(void *dst, const void *src, size_t n)
Definition: ft_memmove.c:16
#define FT_VECT_EXPAND_STEP
Definition: ft_vect.h:20
bool vect_reserve(t_vect *vect, size_t newcap)
Definition: vect_reserve.c:17
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_set(t_vect *vect, const void *elem, size_t index)
Definition: vect_set.c:16