/ libft / src / ft_vec / vec_clear.c
vec_clear.c
 1  /* ************************************************************************** */
 2  /*                                                                            */
 3  /*                                                        :::      ::::::::   */
 4  /*   vec_clear.c                                        :+:      :+:    :+:   */
 5  /*                                                    +:+ +:+         +:+     */
 6  /*   By: ll-hotel <ll-hotel@student.42lyon.fr>      +#+  +:+       +#+        */
 7  /*                                                +#+#+#+#+#+   +#+           */
 8  /*   Created: 2024/04/01 13:36:05 by ll-hotel          #+#    #+#             */
 9  /*   Updated: 2024/10/20 16:09:41 by ll-hotel         ###   ########.fr       */
10  /*                                                                            */
11  /* ************************************************************************** */
12  
13  #include "ft_vec.h"
14  #include "ft_basics.h"
15  #include <stdlib.h>
16  
17  void	vec_clear(t_vec *vec, void (*del)(void *))
18  {
19  	unsigned long	i;
20  
21  	if (vec->array)
22  	{
23  		if (del)
24  		{
25  			i = -1;
26  			while (++i < vec->size)
27  				(*del)(vec_at(vec, i));
28  		}
29  		ft_memset(vec->array, 0, vec->size * vec->elem_size);
30  		free(vec->array);
31  		vec->array = (void *)0;
32  	}
33  	vec->size = 0;
34  	vec->allocated_size = 0;
35  	vec->elem_size = 0;
36  }