36 lines
1.3 KiB
C
36 lines
1.3 KiB
C
/* ************************************************************************** */
|
|
/* */
|
|
/* ::: o_ :::::: ::: */
|
|
/* ft_lstmap.c :+: / :+::+: :+: */
|
|
/* +:+ > +:++:+ +:+ */
|
|
/* By: whaffman <whaffman@student.codam.nl> +#+ +:+ +#++#++:++#++ */
|
|
/* +#+ +#+#+ +#++#+ +#+ \o/ */
|
|
/* Created: 2024/10/10 17:00:20 by whaffman #+#+# #+#+# #+# #+# | */
|
|
/* Updated: 2024/10/10 17:00:20 by whaffman ### ### ### ### / \ */
|
|
/* */
|
|
/* ************************************************************************** */
|
|
|
|
#include "libft.h"
|
|
|
|
t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *))
|
|
{
|
|
t_list *new_list;
|
|
t_list *new_elem;
|
|
|
|
if (!lst || !f)
|
|
return (NULL);
|
|
new_list = NULL;
|
|
while (lst)
|
|
{
|
|
new_elem = ft_lstnew(f(lst->content));
|
|
if (!new_elem)
|
|
{
|
|
ft_lstclear(&new_list, del);
|
|
return (NULL);
|
|
}
|
|
ft_lstadd_back(&new_list, new_elem);
|
|
lst = lst->next;
|
|
}
|
|
return (new_list);
|
|
}
|