vec_addback.c
1 /* ************************************************************************** */ 2 /* */ 3 /* ::: :::::::: */ 4 /* vec_addback.c :+: :+: :+: */ 5 /* +:+ +:+ +:+ */ 6 /* By: ll-hotel <ll-hotel@student.42lyon.fr> +#+ +:+ +#+ */ 7 /* +#+#+#+#+#+ +#+ */ 8 /* Created: 2024/04/01 13:26:10 by ll-hotel #+# #+# */ 9 /* Updated: 2024/08/20 17:41:39 by ll-hotel ### ########.fr */ 10 /* */ 11 /* ************************************************************************** */ 12 13 #include "ft_basics.h" 14 #include "ft_ptr.h" 15 #include "ft_vec.h" 16 17 void *vec_addback(t_vec *vec, void *elem) 18 { 19 if (vec->size >= vec->allocated_size) 20 { 21 vec->allocated_size += 1; 22 vec->allocated_size *= 1.5; 23 vec->array = ft_realloc(vec->array, vec->size * vec->elem_size, \ 24 vec->allocated_size * vec->elem_size); 25 } 26 if (vec->array == (void *)0) 27 return (0); 28 if (vec->elem_size > 8) 29 ft_memmove(vec_at(vec, vec->size), elem, vec->elem_size); 30 else 31 ft_memmove(vec_at(vec, vec->size), &elem, vec->elem_size); 32 vec->size += 1; 33 return (vec_at(vec, vec->size - 1)); 34 }