Separate source files (functions) to folders by topic.
Create separate header file each folder.
Adjust Makefile and libft.h accordingly.
RM := rm -f
-SRCDIR := .
-INCLUDE := $(addprefix -I, $(SRCDIR))
-SOURCES := ft_strndup.c \
- ft_putstr_fd.c \
- ft_putendl_fd.c \
- ft_atoi.c \
- ft_strtrim.c \
- ft_itoa.c \
- ft_strnstr.c \
- ft_memmove.c \
- ft_putnbr_fd.c \
- ft_memchr.c \
- ft_strrchr.c \
+SRCDIR := ft_gen ft_math ft_str ft_mem ft_io ft_check ft_conv ft_lst
+INCLUDE := $(addprefix -I, $(SRCDIR) .)
+
+SRCgen := ft_swap.c \
+
+SRCmath := ft_abs.c \
+
+SRCstr := ft_strncat_alloc.c \
+ ft_strncmp.c \
+ ft_strndup.c \
ft_strchr.c \
- ft_strdup.c \
- ft_memcmp.c \
- ft_substr.c \
- ft_tolower.c \
- ft_isalnum.c \
+ ft_strtrim.c \
ft_strlen.c \
- ft_isspace.c \
- ft_isdigit.c \
- ft_calloc.c \
- ft_strjoin.c \
- ft_isprint.c \
+ ft_strdup.c \
+ ft_strlcpy.c \
+ ft_strnstr.c \
+ ft_striteri.c \
ft_strmapi.c \
+ ft_strjoin.c \
ft_split.c \
- ft_toupper.c \
+ ft_substr.c \
ft_strlcat.c \
- ft_strncat_alloc.c \
- ft_bzero.c \
- ft_abs.c \
- ft_isalpha.c \
+ ft_strrchr.c \
+
+SRCmem := ft_calloc.c \
+ ft_memchr.c \
+ ft_memcmp.c \
ft_memset.c \
- ft_striteri.c \
- ft_isupper.c \
- ft_isascii.c \
- ft_islower.c \
- ft_strlcpy.c \
+ ft_memmove.c \
ft_memcpy.c \
- ft_itoa_base.c \
- ft_putchar_fd.c \
- ft_ctoa.c \
- ft_uitoa_base.c \
- ft_strncmp.c \
- ft_swap.c \
- \
- get_next_line.c \
- \
- ft_lst/ft_lstnew.c \
- ft_lst/ft_lstiter.c \
- ft_lst/ft_lstmap.c \
- ft_lst/ft_lstclear.c \
- ft_lst/ft_lstlast.c \
- ft_lst/ft_lstsize.c \
- ft_lst/ft_lstadd_front.c \
- ft_lst/ft_lstadd_back.c \
- ft_lst/ft_lstdelone.c \
- ft_lst/ft_lst_at.c \
- ft_lst/ft_lst_find.c \
- ft_lst/ft_lst_foreach_if.c \
- ft_lst/ft_lst_merge.c \
- ft_lst/ft_lst_remove_if.c \
- ft_lst/ft_lst_reverse.c \
- ft_lst/ft_lst_sort.c \
- ft_lst/ft_lst_sorted_insert.c \
- ft_lst/ft_lst_sorted_merge.c \
- \
+ ft_bzero.c \
+
+SRCio := ft_putendl_fd.c \
+ ft_putnbr_fd.c \
ft_printf/conversion.c \
- ft_printf/formatting.c \
ft_printf/ft_printf.c \
ft_printf/padding.c \
ft_printf/parsing.c \
-
+ ft_printf/formatting.c \
+ ft_putchar_fd.c \
+ get_next_line.c \
+ ft_putstr_fd.c \
+
+SRCcheck := ft_isalnum.c \
+ ft_isspace.c \
+ ft_isdigit.c \
+ ft_isascii.c \
+ ft_isalpha.c \
+ ft_islower.c \
+ ft_isupper.c \
+ ft_isprint.c \
+
+SRCconv := ft_itoa_base.c \
+ ft_tolower.c \
+ ft_toupper.c \
+ ft_atoi.c \
+ ft_ctoa.c \
+ ft_itoa.c \
+ ft_uitoa_base.c \
+
+SRClst := ft_lst_reverse.c \
+ ft_lstdelone.c \
+ ft_lst_foreach_if.c \
+ ft_lstlast.c \
+ ft_lstclear.c \
+ ft_lst_at.c \
+ ft_lst_sorted_merge.c \
+ ft_lst_find.c \
+ ft_lstmap.c \
+ ft_lst_remove_if.c \
+ ft_lstnew.c \
+ ft_lst_merge.c \
+ ft_lstsize.c \
+ ft_lstadd_front.c \
+ ft_lstadd_back.c \
+ ft_lstiter.c \
+ ft_lst_sort.c \
+ ft_lst_sorted_insert.c \
+
+SOURCES := $(foreach dir, $(SRCDIR), $(addprefix $(dir)/, $($(dir:ft_%=SRC%))))
OBJECTS := $(SOURCES:.c=.o)
NAME = libft.a
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_check.h :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2023/12/09 11:55:15 by ljiriste #+# #+# */
+/* Updated: 2023/12/09 11:56:31 by ljiriste ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#ifndef FT_CHECK_H
+# define FT_CHECK_H
+
+int ft_isalnum(int c);
+int ft_isalpha(int c);
+int ft_isdigit(int c);
+int ft_islower(int c);
+int ft_isprint(int c);
+int ft_isspace(int c);
+int ft_isupper(int c);
+int ft_isascii(int c);
+
+#endif
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_conv.h :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2023/12/09 11:53:15 by ljiriste #+# #+# */
+/* Updated: 2023/12/09 11:54:31 by ljiriste ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#ifndef FT_CONV_H
+# define FT_CONV_H
+
+# include <stdint.h>
+
+int ft_toupper(int c);
+int ft_tolower(int c);
+
+int ft_atoi(const char *nptr);
+long ft_atol(const char *nptr);
+long long ft_atoll(const char *nptr);
+char *ft_itoa(int n);
+char *ft_itoa_base(intmax_t n, const char *base);
+char *ft_uitoa_base(uintmax_t n, const char *base);
+char *ft_ctoa(char c);
+
+#endif
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_gen.h :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2023/12/09 12:21:15 by ljiriste #+# #+# */
+/* Updated: 2023/12/09 11:22:31 by ljiriste ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#ifndef FT_GEN_H
+# define FT_GEN_H
+
+void ft_swap(void **a, void **b);
+
+#endif
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_io.h :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2023/12/09 11:38:28 by ljiriste #+# #+# */
+/* Updated: 2023/12/09 11:40:06 by ljiriste ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#ifndef FT_IO_H
+# define FT_IO_H
+
+void ft_putchar_fd(char c, int fd);
+void ft_putstr_fd(char *s, int fd);
+void ft_putendl_fd(char *s, int fd);
+void ft_putnbr_fd(int n, int fd);
+int ft_printf(const char *format, ...);
+char *get_next_line(int fd);
+
+#endif
char *buffer;
} t_ft;
-char *get_next_line(int fd);
-
#endif
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_lst.h :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2023/12/09 11:42:15 by ljiriste #+# #+# */
+/* Updated: 2023/11/03 11:43:31 by ljiriste ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#ifndef FT_LST_H
+# define FT_LST_H
+
+typedef struct s_list
+{
+ struct s_list *next;
+ void *content;
+} t_list;
+
+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 *));
+t_list *ft_lst_at(t_list *lst, unsigned int i);
+t_list *ft_lst_find(t_list *lst, void *content_red, int (*cmp)());
+void ft_lst_foreach_if(t_list *lst, void (*f)(void *),
+ void *content_ref, int (*cmp)());
+void ft_lst_merge(t_list **lst1, t_list *lst2);
+void ft_lst_remove_if(t_list **lst, void *content_ref,
+ int (*cmp)(), void (*free_fct)(void *));
+void ft_lst_reverse(t_list **lst);
+void ft_lst_sort(t_list **lst, int (*cmp)());
+void ft_lst_sorted_insert(t_list **lst, t_list *new, int (*cmp)());
+void ft_lst_sorted_merge(t_list **lst1, t_list *lst2, int (*cmp)());
+
+#endif
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_math.h :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2023/12/09 12:19:15 by ljiriste #+# #+# */
+/* Updated: 2023/12/09 12:20:31 by ljiriste ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#ifndef FT_MATH_H
+# define FT_MATH_H
+
+int ft_abs(int n);
+
+#endif
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_mem.h :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2023/12/09 12:45:15 by ljiriste #+# #+# */
+/* Updated: 2023/12/09 12:46:31 by ljiriste ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#ifndef FT_MEM_H
+# define FT_MEM_H
+
+# include <stddef.h>
+
+void *ft_memset(void *s, int c, size_t n);
+void *ft_memcpy(void *dest, const void *src, size_t n);
+void *ft_memmove(void *dest, const void *src, size_t n);
+void *ft_memchr(const void *s, int c, size_t n);
+void *ft_calloc(size_t nmemb, size_t size);
+void ft_bzero(void *s, size_t n);
+int ft_memcmp(const void *s1, const void *s2, size_t n);
+
+#endif
--- /dev/null
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_str.h :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2023/12/09 11:50:15 by ljiriste #+# #+# */
+/* Updated: 2023/12/09 11:51:31 by ljiriste ### ########.fr */
+/* */
+/* ************************************************************************** */
+
+#ifndef FT_STR_H
+# define FT_STR_H
+
+# include <stddef.h>
+
+size_t ft_strlen(const char *s);
+size_t ft_strlcpy(char *dst, const char *src, size_t size);
+size_t ft_strlcat(char *dst, const char *src, size_t size);
+char *ft_strncat_alloc(char **dest, const char *src, size_t n);
+int ft_strncmp(const char *s1, const char *s2, size_t n);
+char *ft_strchr(const char *s, int c);
+char *ft_strrchr(const char *s, int c);
+char *ft_strnstr(const char *big, const char *little, size_t len);
+char *ft_strdup(const char *s);
+char *ft_strndup(const char *s, size_t n);
+char *ft_substr(const char *s, unsigned int start, size_t len);
+char *ft_strjoin(const char *s1, const char *s2);
+char *ft_strtrim(const char *s1, const char *set);
+char **ft_split(const char *s, char c);
+char *ft_strmapi(const char *s, char (*f)(unsigned int, char));
+void ft_striteri(char *s, void (*f)(unsigned int, char *));
+
+#endif
/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/08/15 12:58:15 by ljiriste #+# #+# */
-/* Updated: 2023/11/03 16:57:31 by ljiriste ### ########.fr */
+/* Updated: 2023/12/09 12:23:31 by ljiriste ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef LIBFT_H
# define LIBFT_H
-# include <sys/types.h>
-# include <stdint.h>
-
-int ft_isalnum(int c);
-int ft_isalpha(int c);
-int ft_isdigit(int c);
-int ft_islower(int c);
-int ft_isprint(int c);
-int ft_isspace(int c);
-int ft_isupper(int c);
-int ft_isascii(int c);
-
-int ft_abs(int n);
-
-void *ft_memset(void *s, int c, size_t n);
-void *ft_memcpy(void *dest, const void *src, size_t n);
-void *ft_memmove(void *dest, const void *src, size_t n);
-void *ft_memchr(const void *s, int c, size_t n);
-void *ft_calloc(size_t nmemb, size_t size);
-void ft_bzero(void *s, size_t n);
-int ft_memcmp(const void *s1, const void *s2, size_t n);
-
-size_t ft_strlen(const char *s);
-size_t ft_strlcpy(char *dst, const char *src, size_t size);
-size_t ft_strlcat(char *dst, const char *src, size_t size);
-char *ft_strncat_alloc(char **dest, const char *src, size_t n);
-int ft_strncmp(const char *s1, const char *s2, size_t n);
-char *ft_strchr(const char *s, int c);
-char *ft_strrchr(const char *s, int c);
-char *ft_strnstr(const char *big, const char *little, size_t len);
-char *ft_strdup(const char *s);
-char *ft_strndup(const char *s, size_t n);
-
-int ft_toupper(int c);
-int ft_tolower(int c);
-
-int ft_atoi(const char *nptr);
-long ft_atol(const char *nptr);
-long long ft_atoll(const char *nptr);
-
-char *ft_substr(const char *s, unsigned int start, size_t len);
-char *ft_strjoin(const char *s1, const char *s2);
-char *ft_strtrim(const char *s1, const char *set);
-char **ft_split(const char *s, char c);
-
-char *ft_itoa(int n);
-char *ft_itoa_base(intmax_t n, const char *base);
-char *ft_uitoa_base(uintmax_t n, const char *base);
-char *ft_ctoa(char c);
-
-char *ft_strmapi(const char *s, char (*f)(unsigned int, char));
-void ft_striteri(char *s, void (*f)(unsigned int, char *));
-
-void ft_putchar_fd(char c, int fd);
-void ft_putstr_fd(char *s, int fd);
-void ft_putendl_fd(char *s, int fd);
-void ft_putnbr_fd(int n, int fd);
-int ft_printf(const char *format, ...);
-
-void ft_swap(void **a, void **b);
-
-char *get_next_line(int fd);
-
-typedef struct s_list
-{
- struct s_list *next;
- void *content;
-} t_list;
-
-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 *));
-t_list *ft_lst_at(t_list *lst, unsigned int i);
-t_list *ft_lst_find(t_list *lst, void *content_red, int (*cmp)());
-void ft_lst_foreach_if(t_list *lst, void (*f)(void *),
- void *content_ref, int (*cmp)());
-void ft_lst_merge(t_list **lst1, t_list *lst2);
-void ft_lst_remove_if(t_list **lst, void *content_ref,
- int (*cmp)(), void (*free_fct)(void *));
-void ft_lst_reverse(t_list **lst);
-void ft_lst_sort(t_list **lst, int (*cmp)());
-void ft_lst_sorted_insert(t_list **lst, t_list *new, int (*cmp)());
-void ft_lst_sorted_merge(t_list **lst1, t_list *lst2, int (*cmp)());
+# include "ft_gen.h"
+# include "ft_math.h"
+# include "ft_check.h"
+# include "ft_conv.h"
+# include "ft_str.h"
+# include "ft_mem.h"
+# include "ft_io.h"
+# include "ft_lst.h"
#endif