diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-04-01 21:51:51 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-04-01 21:58:05 +0200 |
| commit | 65c5d5157e890e9f9445a94fb2d7f660e5492d8e (patch) | |
| tree | 78613f26bdc531104c3e32d76ffcaf3c2f7013f5 /src/lst/ft_lstmap.c | |
| parent | c128213daa677d548bfc2905496257fe4a4faf79 (diff) | |
| parent | a1675f56b35f5521a91851bae8ca650706374ae6 (diff) | |
| download | libft-65c5d5157e890e9f9445a94fb2d7f660e5492d8e.tar.gz libft-65c5d5157e890e9f9445a94fb2d7f660e5492d8e.tar.bz2 libft-65c5d5157e890e9f9445a94fb2d7f660e5492d8e.zip | |
Merge branch 'minishell'
Diffstat (limited to 'src/lst/ft_lstmap.c')
| -rw-r--r-- | src/lst/ft_lstmap.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/lst/ft_lstmap.c b/src/lst/ft_lstmap.c index dda15de..3182bb0 100644 --- a/src/lst/ft_lstmap.c +++ b/src/lst/ft_lstmap.c @@ -1,7 +1,7 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* ft_lstmap_bonus.c :+: :+: :+: */ +/* ft_lstmap.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ @@ -10,9 +10,16 @@ /* */ /* ************************************************************************** */ -#include "libft.h" #include "libft_lst.h" +/* +** \brief Clone a list and map a function to each node data +** \param lst Origin list +** \param f Function applied to each node's data +** \param del Delete function for cleanning up in case of failed allocation +** \return Mapped clone list +*/ + t_ftlst *ft_lstmap(t_ftlst *lst, void *(*f)(void *), void (*del)(void *)) { t_ftlst *mapped; @@ -23,12 +30,12 @@ t_ftlst *ft_lstmap(t_ftlst *lst, void *(*f)(void *), void (*del)(void *)) mapped = NULL; while (lst != NULL) { - if ((tmp = ft_lstnew((*f)(lst->content))) == NULL) + if ((tmp = ft_lstnew((*f)(lst->data))) == NULL) { - ft_lstclear(&mapped, del); + ft_lstdestroy(&mapped, del); return (NULL); } - ft_lstadd_back(&mapped, tmp); + ft_lstpush_back(&mapped, tmp); lst = lst->next; } return (mapped); @@ -41,9 +48,9 @@ t_ftlst *ft_lstmap(t_ftlst *lst, void *(*f)(void *), void (*del)(void *)) ** ** if (lst == NULL) ** return (NULL); -** if ((tmp = ft_lstnew(lst->content)) == NULL) +** if ((tmp = ft_lstnew(lst->data)) == NULL) ** return (NULL); -** tmp->content = (*f)(tmp->content); +** tmp->data = (*f)(tmp->data); ** tmp->next = ft_lstmap(lst->next, f); ** return (tmp); */ |
