finished libfttttttttttttttttttttttttttttttttttttt
This commit is contained in:
21
Makefile
21
Makefile
@ -6,7 +6,7 @@
|
||||
# By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ #
|
||||
# +#+#+#+#+#+ +#+ #
|
||||
# Created: 2023/11/01 11:03:22 by adjoly #+# #+# #
|
||||
# Updated: 2023/11/11 15:10:24 by adjoly ### ########.fr #
|
||||
# Updated: 2023/11/11 18:38:12 by adjoly ### ########.fr #
|
||||
# #
|
||||
# **************************************************************************** #
|
||||
|
||||
@ -49,8 +49,20 @@ SRCS = ft_atoi.c \
|
||||
ft_strmapi.c \
|
||||
ft_striteri.c \
|
||||
|
||||
SRCS_BONUS= ft_lstnew.c \
|
||||
ft_lstadd_front.c \
|
||||
ft_lstsize.c \
|
||||
ft_lstlast.c \
|
||||
ft_lstadd_back.c \
|
||||
ft_lstdelone.c \
|
||||
ft_lstclear.c \
|
||||
ft_lstiter.c \
|
||||
ft_lstmap.c \
|
||||
|
||||
OBJS = $(SRCS:.c=.o)
|
||||
|
||||
OBJS_BONUS = $(SRCS_BONUS:.c=.o)
|
||||
|
||||
FLAGS = -Werror -Wall -Wextra
|
||||
|
||||
HEADER = libft.h
|
||||
@ -59,14 +71,17 @@ $(NAME): $(OBJS)
|
||||
ar -rcs $(NAME) $(OBJS)
|
||||
|
||||
# so:
|
||||
# $(CC) -nostartfiles -fPIC $(CFLAGS) $(SRCS)
|
||||
# gcc -nostartfiles -shared -o libft.so $(OBJS)
|
||||
# $(CC) -nostartfiles -fPIC $(CFLAGS) $(SRCS) $(SRCS_BONUS)
|
||||
# gcc -nostartfiles -shared -o libft.so $(OBJS) $(OBJS_BONUS)
|
||||
|
||||
%.o: %.c
|
||||
$(CC) $(FLAGS) -I $(HEADER) $< -c -o $@
|
||||
|
||||
all: $(NAME)
|
||||
|
||||
bonus: $(OBJS_BONUS)
|
||||
ar -rcs $(NAME) $(OBJS_BONUS)
|
||||
|
||||
clean:
|
||||
rm -f $(OBJS)
|
||||
|
||||
|
25
ft_lstadd_back.c
Normal file
25
ft_lstadd_back.c
Normal file
@ -0,0 +1,25 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* ft_lstadd_back.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/11/11 16:37:42 by adjoly #+# #+# */
|
||||
/* Updated: 2023/11/11 17:56:48 by adjoly ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "libft.h"
|
||||
|
||||
void ft_lstadd_back(t_list **lst, t_list *new)
|
||||
{
|
||||
if (lst == NULL)
|
||||
return ;
|
||||
if (*lst == NULL)
|
||||
{
|
||||
(*lst) = new;
|
||||
return ;
|
||||
}
|
||||
ft_lstlast((*lst))->next = new;
|
||||
}
|
BIN
ft_lstadd_back.o
Normal file
BIN
ft_lstadd_back.o
Normal file
Binary file not shown.
23
ft_lstadd_front.c
Normal file
23
ft_lstadd_front.c
Normal file
@ -0,0 +1,23 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* ft_lstadd_front.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/11/11 15:39:25 by adjoly #+# #+# */
|
||||
/* Updated: 2023/11/11 15:50:06 by adjoly ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "libft.h"
|
||||
|
||||
void ft_lstadd_front(t_list **lst, t_list *new)
|
||||
{
|
||||
if (lst == NULL)
|
||||
return ;
|
||||
if (new == NULL)
|
||||
return ;
|
||||
new->next = *lst;
|
||||
*lst = new;
|
||||
}
|
BIN
ft_lstadd_front.o
Normal file
BIN
ft_lstadd_front.o
Normal file
Binary file not shown.
26
ft_lstclear.c
Normal file
26
ft_lstclear.c
Normal file
@ -0,0 +1,26 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* ft_lstclear.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/11/11 18:05:14 by adjoly #+# #+# */
|
||||
/* Updated: 2023/11/11 18:19:34 by adjoly ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "libft.h"
|
||||
|
||||
void ft_lstclear(t_list **lst, void (*del)(void *))
|
||||
{
|
||||
t_list *tmp;
|
||||
|
||||
tmp = NULL;
|
||||
while (*lst && lst)
|
||||
{
|
||||
tmp = (*lst)->next;
|
||||
ft_lstdelone((*lst), del);
|
||||
*lst = tmp;
|
||||
}
|
||||
}
|
BIN
ft_lstclear.o
Normal file
BIN
ft_lstclear.o
Normal file
Binary file not shown.
21
ft_lstdelone.c
Normal file
21
ft_lstdelone.c
Normal file
@ -0,0 +1,21 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* ft_lstdelone.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/11/11 17:59:39 by adjoly #+# #+# */
|
||||
/* Updated: 2023/11/11 18:17:04 by adjoly ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "libft.h"
|
||||
|
||||
void ft_lstdelone(t_list *lst, void (*del)(void *))
|
||||
{
|
||||
if (lst == NULL)
|
||||
return ;
|
||||
del(lst->content);
|
||||
free(lst);
|
||||
}
|
BIN
ft_lstdelone.o
Normal file
BIN
ft_lstdelone.o
Normal file
Binary file not shown.
24
ft_lstiter.c
Normal file
24
ft_lstiter.c
Normal file
@ -0,0 +1,24 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* ft_lstiter.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/11/11 18:20:25 by adjoly #+# #+# */
|
||||
/* Updated: 2023/11/11 18:23:58 by adjoly ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "libft.h"
|
||||
|
||||
void ft_lstiter(t_list *lst, void (*f)(void *))
|
||||
{
|
||||
if (lst == NULL || f == NULL)
|
||||
return ;
|
||||
while (lst)
|
||||
{
|
||||
f(lst->content);
|
||||
lst = lst->next;
|
||||
}
|
||||
}
|
BIN
ft_lstiter.o
Normal file
BIN
ft_lstiter.o
Normal file
Binary file not shown.
22
ft_lstlast.c
Normal file
22
ft_lstlast.c
Normal file
@ -0,0 +1,22 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* ft_lstlast.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/11/11 16:03:12 by adjoly #+# #+# */
|
||||
/* Updated: 2023/11/11 16:37:10 by adjoly ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "libft.h"
|
||||
|
||||
t_list *ft_lstlast(t_list *lst)
|
||||
{
|
||||
if (lst == NULL)
|
||||
return (NULL);
|
||||
while (lst->next)
|
||||
lst = lst->next;
|
||||
return (lst);
|
||||
}
|
BIN
ft_lstlast.o
Normal file
BIN
ft_lstlast.o
Normal file
Binary file not shown.
35
ft_lstmap.c
Normal file
35
ft_lstmap.c
Normal file
@ -0,0 +1,35 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* ft_lstmap.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/11/11 18:24:49 by adjoly #+# #+# */
|
||||
/* Updated: 2023/11/11 18:38:51 by adjoly ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "libft.h"
|
||||
|
||||
t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *))
|
||||
{
|
||||
t_list *res;
|
||||
t_list *tmp;
|
||||
|
||||
if (lst == NULL || f == NULL || del == NULL)
|
||||
return (NULL);
|
||||
res = NULL;
|
||||
while (lst)
|
||||
{
|
||||
tmp = ft_lstnew(f(lst->content));
|
||||
if (tmp == NULL)
|
||||
{
|
||||
ft_lstclear(&tmp, del);
|
||||
return (NULL);
|
||||
}
|
||||
ft_lstadd_back(&res, tmp);
|
||||
lst = lst->next;
|
||||
}
|
||||
return (res);
|
||||
}
|
BIN
ft_lstmap.o
Normal file
BIN
ft_lstmap.o
Normal file
Binary file not shown.
25
ft_lstnew.c
Normal file
25
ft_lstnew.c
Normal file
@ -0,0 +1,25 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* ft_lstnew.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/11/11 15:30:32 by adjoly #+# #+# */
|
||||
/* Updated: 2023/11/11 15:51:49 by adjoly ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "libft.h"
|
||||
|
||||
t_list *ft_lstnew(void *content)
|
||||
{
|
||||
t_list *lst;
|
||||
|
||||
lst = malloc(sizeof(t_list));
|
||||
if (lst == NULL)
|
||||
return (NULL);
|
||||
lst[0].content = content;
|
||||
lst[0].next = NULL;
|
||||
return (lst);
|
||||
}
|
BIN
ft_lstnew.o
Normal file
BIN
ft_lstnew.o
Normal file
Binary file not shown.
26
ft_lstsize.c
Normal file
26
ft_lstsize.c
Normal file
@ -0,0 +1,26 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* ft_lstsize.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/11/11 15:53:01 by adjoly #+# #+# */
|
||||
/* Updated: 2023/11/11 15:59:03 by adjoly ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "libft.h"
|
||||
|
||||
int ft_lstsize(t_list *lst)
|
||||
{
|
||||
int i;
|
||||
|
||||
i = 0;
|
||||
while (lst != NULL)
|
||||
{
|
||||
lst = lst->next;
|
||||
i++;
|
||||
}
|
||||
return (i);
|
||||
}
|
BIN
ft_lstsize.o
Normal file
BIN
ft_lstsize.o
Normal file
Binary file not shown.
18
libft.h
18
libft.h
@ -6,7 +6,7 @@
|
||||
/* By: adjoly <adjoly@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/11/01 10:06:03 by adjoly #+# #+# */
|
||||
/* Updated: 2023/11/11 14:22:48 by adjoly ### ########.fr */
|
||||
/* Updated: 2023/11/11 18:37:56 by adjoly ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -17,6 +17,12 @@
|
||||
# include <stdlib.h>
|
||||
# include <unistd.h>
|
||||
|
||||
typedef struct s_list
|
||||
{
|
||||
void *content;
|
||||
struct s_list *next;
|
||||
} t_list;
|
||||
|
||||
int ft_atoi(const char *nptr);
|
||||
void *ft_calloc(size_t nmemb, size_t size);
|
||||
int ft_isalnum(int c);
|
||||
@ -54,4 +60,14 @@ char **ft_split(char const *s, char c);
|
||||
char *ft_strmapi(char const *s, char (*f)(unsigned int, char));
|
||||
void ft_striteri(char *s, void (*f)(unsigned int, char *));
|
||||
|
||||
t_list *ft_lstnew(void *content);
|
||||
void ft_lstadd_front(t_list **lst, t_list *new);
|
||||
int ft_lstsize(t_list *lst);
|
||||
t_list *ft_lstlast(t_list *lst);
|
||||
void ft_lstadd_back(t_list **lst, t_list *new);
|
||||
void ft_lstdelone(t_list *lst, void (*del)(void *));
|
||||
void ft_lstclear(t_list **lst, void (*del)(void *));
|
||||
void ft_lstiter(t_list *lst, void (*f)(void *));
|
||||
t_list *ft_lstmap(t_list *lst, void *(*f)(void *), void (*del)(void *));
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user