/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* ft_lstmap_bonus.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/10/21 17:14:36 by kcolin #+# #+# */ /* Updated: 2024/10/21 17:28:42 by kcolin ### ########.fr */ /* */ /* ************************************************************************** */ #include "libft.h" t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *)) { t_list *out; t_list *next; out = NULL; while (lst != NULL) { next = ft_lstnew((*f)(lst->content)); if (next == NULL) { ft_lstclear(&out, del); return (NULL); } ft_lstadd_back(&out, next); lst = lst->next; } return (out); } /* #include #include void *modify_string(void *data) { char *next; next = ft_strjoin((char *)data, "!!!"); return (next); } void print_string(void *data) { printf("'%s'\n", (char *)data); } void noop(void *data) { (void)data; } int main(void) { t_list *list; t_list *out; list = ft_lstnew("Hello There"); ft_lstadd_front(&list, ft_lstnew("New Element")); ft_lstadd_front(&list, ft_lstnew("New Element Again")); ft_lstadd_front(&list, ft_lstnew("How? New Element")); out = ft_lstmap(list, &modify_string, &free); printf("=> Original:\n"); ft_lstiter(list, &print_string); printf("=> Modified:\n"); ft_lstiter(out, &print_string); ft_lstclear(&list, &noop); ft_lstclear(&out, &free); return (0); } */