/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* cutll.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: lderidde +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/01/31 09:56:34 by lderidde #+# #+# */ /* Updated: 2025/01/31 13:38:45 by lderidde ### ########.fr */ /* */ /* ************************************************************************** */ #include "ast.h" void add_nodell(t_nodell **nodell, t_node *node) { t_nodell *tmp; if (!nodell || !(*nodell)) { *nodell = malloc(sizeof(t_nodell)); (*nodell)->node = node; (*nodell)->next = NULL; } tmp = *nodell; while (tmp->next) tmp = tmp->next; tmp->next = malloc(sizeof(t_nodell)); tmp->next->node = node; tmp->next->next = NULL; } t_node *get_node(t_node **lst, char *expected) { t_node *node; node = NULL; while ((*lst) && ft_strncmp((*lst)->val, expected, ft_strlen(expected))) { add_node_back(&node, (*lst)->val, (*lst)->token, (*lst)->pressision); (*lst) = (*lst)->next; } return (node); } t_nodell *cutll(t_node *lst, char *expected, size_t limiter) { t_nodell *out; t_node *node; size_t i; i = 0; out = NULL; while (i <= limiter) { node = get_node(&lst, expected); if (!node) break; add_nodell(&out, node); if(lst && lst->next) lst = lst->next; i++; } return (out); }