From 42f67cc750874f0d60c8cdd612c86cf6259fa0c3 Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 11 Nov 2023 18:45:48 +0100 Subject: [PATCH] finished libfttttttttttttttttttttttttttttttttttttt --- Makefile | 21 ++++++++++++++++++--- ft_lstadd_back.c | 25 +++++++++++++++++++++++++ ft_lstadd_back.o | Bin 0 -> 1184 bytes ft_lstadd_front.c | 23 +++++++++++++++++++++++ ft_lstadd_front.o | Bin 0 -> 1032 bytes ft_lstclear.c | 26 ++++++++++++++++++++++++++ ft_lstclear.o | Bin 0 -> 1208 bytes ft_lstdelone.c | 21 +++++++++++++++++++++ ft_lstdelone.o | Bin 0 -> 1144 bytes ft_lstiter.c | 24 ++++++++++++++++++++++++ ft_lstiter.o | Bin 0 -> 1048 bytes ft_lstlast.c | 22 ++++++++++++++++++++++ ft_lstlast.o | Bin 0 -> 1032 bytes ft_lstmap.c | 35 +++++++++++++++++++++++++++++++++++ ft_lstmap.o | Bin 0 -> 1392 bytes ft_lstnew.c | 25 +++++++++++++++++++++++++ ft_lstnew.o | Bin 0 -> 1160 bytes ft_lstsize.c | 26 ++++++++++++++++++++++++++ ft_lstsize.o | Bin 0 -> 1008 bytes libft.h | 18 +++++++++++++++++- 20 files changed, 262 insertions(+), 4 deletions(-) create mode 100644 ft_lstadd_back.c create mode 100644 ft_lstadd_back.o create mode 100644 ft_lstadd_front.c create mode 100644 ft_lstadd_front.o create mode 100644 ft_lstclear.c create mode 100644 ft_lstclear.o create mode 100644 ft_lstdelone.c create mode 100644 ft_lstdelone.o create mode 100644 ft_lstiter.c create mode 100644 ft_lstiter.o create mode 100644 ft_lstlast.c create mode 100644 ft_lstlast.o create mode 100644 ft_lstmap.c create mode 100644 ft_lstmap.o create mode 100644 ft_lstnew.c create mode 100644 ft_lstnew.o create mode 100644 ft_lstsize.c create mode 100644 ft_lstsize.o diff --git a/Makefile b/Makefile index fa8085a..2a8896b 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ # By: adjoly +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # 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) diff --git a/ft_lstadd_back.c b/ft_lstadd_back.c new file mode 100644 index 0000000..f1c1b98 --- /dev/null +++ b/ft_lstadd_back.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstadd_back.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* 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; +} diff --git a/ft_lstadd_back.o b/ft_lstadd_back.o new file mode 100644 index 0000000000000000000000000000000000000000..8cf09a8033c9fdc4aea77ab0064aa29f1547fd5f GIT binary patch literal 1184 zcmbu7%}N6?5XWcRs#W|bA}FY^FJMp*DIT<<)f}t`!IMh6t?LKwZlxQg3PqtPE?#^D zeGoy=R}m_BsJ9-3I@2aKEWP=MWM+OdlWelNPH(P93;_NY`5IAz4F& z9hn*rc$`o87We&@Mq1%%UCDcuw*`v~=RIwj_w5rSa2j z%aojU(07ReE7^|4gk2VJD6)<(9LpEL3PsnoJ#@UHu-V4e&Wtat!l|sW4i2(;3Yp_v zxLFMG;*R86_Hp*GWVv>zmKA{cq9m+5+Dn)0|K;Km(Jsq8%SToT<-%{T7xTo(>PpEV zr$h9^cTT-@&nXG>2HE^uQZ{OZPS_6_bZS=r`!4O literal 0 HcmV?d00001 diff --git a/ft_lstadd_front.c b/ft_lstadd_front.c new file mode 100644 index 0000000..41bec2b --- /dev/null +++ b/ft_lstadd_front.c @@ -0,0 +1,23 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstadd_front.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* 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; +} diff --git a/ft_lstadd_front.o b/ft_lstadd_front.o new file mode 100644 index 0000000000000000000000000000000000000000..4e0634ba4e74e8061d15e6b0d1e33ce66977c731 GIT binary patch literal 1032 zcmbtTOH0E*5Zw_05h?>b_>Re7#oF>YnTPgc`1Go0vGRZ_fXl4R%P4+2uHXcbBUr zehyIuF|J9jPl++RFILX7B#w&^QJ>@Z#~811Je$v=40V<#Tc494k@LNUq5fjz4S{=! zH9H9{rV@wqfYY!Pj#uJAOEHf+{DUw( +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* 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; + } +} diff --git a/ft_lstclear.o b/ft_lstclear.o new file mode 100644 index 0000000000000000000000000000000000000000..8bf87e0bebd34a8e5ccf8fab4cadd47f51b490eb GIT binary patch literal 1208 zcmb_aPiqrV5T8wA8?~As3W5sj2k_Z|NP5u~U44frDD)%}wwu=)x_@-D4XIKTqS7@N zFWv<&egwr!LBX%!7m&8#q26*3)|vE8`&e>x;O%ebH@}(LH@p{a>vqYqfX#wya2PQQ z&@3JL&ct=#7%CTK_Dc?b+cMi2%WQ2={&06FEk}39jV(D`fK7M1_UbrM!;LZ2-ftoC z*4_SO)m|S#cK7l`?T+OLi=3*=+#NZhuqj7td)#cF%c{E{^E{Ws@Aji_a7!(9y~y?h zFIuttD(Q9O$ZlK_^WrL;#;#=6vj<=e>ejir+3GvI*m>mWkUgi*jg$2^rJE;aN_|ui zG2I>_U4cLOv}_rSMbFzhlKyfy4a>XrPUYx_|^-#;+veoJaL4kIXd8dbFR2^s-- +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* 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); +} diff --git a/ft_lstdelone.o b/ft_lstdelone.o new file mode 100644 index 0000000000000000000000000000000000000000..7e2fa121bcdb68c15416f01dd6ec992443e05032 GIT binary patch literal 1144 zcmb_aPfHs?6n~qf)|S{VqEcvuTzYh{Rm4ImD;hh8REyMO3F~H}lKmsQ+n9>MNN6GC z;W*+Y(Usz8W1}GTt4*q(I1xPf~ z>d_WF#>{Qr`o){KCU4af-ulwv&3Xb)zdgW|n;8_mo$v7WhlID^bT4_ko?KHgZ(f+6 z&tXmM?Aw0MaczG$R~2EjANaXfi)@}PQ5IpUufRCk0;6Uc&$AE5&+siTkf%dY#VY z01Jg{vslz(U{2t9!bigoV!_^TY|llp?NordZq+N=r4o*47s_$bjpCAU17FB;u~#gI zwkMz*3KUubbAUy07~4Cjzj~zq2OPX4J>sHMxhK(3Ok1B`WDF&7q;*)*QFB(Y;aO8H z&DT;1Qh$_(zUyo}m1`2T(y{ S`0W(Ck_k1bsgCw!xc?tg%V{S7 literal 0 HcmV?d00001 diff --git a/ft_lstiter.c b/ft_lstiter.c new file mode 100644 index 0000000..a9b1717 --- /dev/null +++ b/ft_lstiter.c @@ -0,0 +1,24 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstiter.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* 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; + } +} diff --git a/ft_lstiter.o b/ft_lstiter.o new file mode 100644 index 0000000000000000000000000000000000000000..12fd2861f4a10f9d32085ccd30fdb62316094ffb GIT binary patch literal 1048 zcmb_b%}OId5Uxq0iTF3j9t2m(UA9pW(MuRvv-UwfECd!ovSVyDI5Uw+E4mO?h%1C# z_6_z$_8{m3c+(fyLtqc_Hn*`Vc56H4XhC&Vef53aJ>5M&i|b!fmIc}@D8NglQGj~` zbb7D@L&z-g)<53-Z}V0o;;rK@Z#E(rzZgaerd=5SHGpY{(LgfQpP{r}?DFKpox3=WdGp5JzJ^t?Q+0!U#dCxG{D}zb)mo6BUtn`=k*0$Wy%E6r@fEC7 z+nO55=6>T|KO#;}R;FQP%)U&09vw_=A%lSa#u3iIL)@>MhSVF_Mr6Xkdut(j8 zQZXq`C9q1(_eCIKPnNy9tV$6A3u;oZwawC}x^ydtz&!87FT1aCQ`!hDw2-wS +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* 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); +} diff --git a/ft_lstlast.o b/ft_lstlast.o new file mode 100644 index 0000000000000000000000000000000000000000..74fc159330d8ae7964e2cafc4b6398b908a0e8e9 GIT binary patch literal 1032 zcmb_aJ4*vW5S~kXMDP)Vg`h%uaZwP_CYJlz7JVfp-_lEfR&G-~)n<;2-fn zSm@8N5wwe4x^pJ(=z6AfU~Xo<`M%k`-92~KR#KJ)Y!(#Yr(zV~*#PY}Y(pP1i*Do9 zZPc6YWxWYQ*8|vcpPUvk-lyn8nS1LXp_YN6t6?s0?Tp)Sn(r@h9Jl)or-iY#^$5#y z=g;#8!(@(~E%KM6|S?k@iDK8ULHJs}TDdsQ!x#sE6#v1BI3wL* z&bGdHndlkMq1~aHyeGl4b +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* 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); +} diff --git a/ft_lstmap.o b/ft_lstmap.o new file mode 100644 index 0000000000000000000000000000000000000000..eaf43d297c002e75b9d58c9506bfd4ad96ab1e72 GIT binary patch literal 1392 zcmbu8&5P4e5WrvBZe2gtEg~X*U{7AeM+FtVNJOLWuzC;+9+aA9U+ZF$u4(o|p(xfB zLRs)C_y_n`cv)euIri9#&;<|i)`Jjdnt5#q*^>k5%=~8Fyf<(9-Ww|q3Yx~0XzUJ~ zdx|m^73Q`+HFb6jGV3DvCHlW>BIrdT*cgkTJ`(+2#Fjsufiy73U>;A*5nJ9_LUZ4k zV2y*V#2KPPtDd7dFveo=C=!F)aVUcQ@iZP7A>@Qmf7VgXFDH=@BEuvy zFrbXSC;}ro_!`GC)EFq~0^a?25Gw`g$*G=6{KicmhL_(F<*OYw4wSBYZ>=`KnOW!CZ=cGq|1 z7UQ0@P43HWpK+_>IMVegYT45C$ac(i#@&uD`NPNct6kr;UQ@(eU2Qbc<+i=)G{A*n zwW+Lp)o6L9Bj;7P#dz2Ee6tDqt%Lf1r3VFyIYlgLdN&ixz9pO)GQ7LA=;WyRs#tc$ z_>yo=x=K)*_7~(I1&v7k70(jKM~VB_$XBXJ2fe5OX?1?3ZvaW+XAx`4w)0k=MVVf~rsKAMaSLSNtik;!4~B^#Q(_yrlJNwzwW8+tv=S?AbBz P86|#42LxTLmEHdzG~%|D literal 0 HcmV?d00001 diff --git a/ft_lstnew.c b/ft_lstnew.c new file mode 100644 index 0000000..298e054 --- /dev/null +++ b/ft_lstnew.c @@ -0,0 +1,25 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstnew.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* 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); +} diff --git a/ft_lstnew.o b/ft_lstnew.o new file mode 100644 index 0000000000000000000000000000000000000000..79695bb3ae3cad5b4c54ab61d5d5314665addd83 GIT binary patch literal 1160 zcmbtSOG_g`5Uxpr8=o6QL{M@5!1lVZh!UoVF1H`dFWWo0;Cfi-D;^8 z^kL+tU46AHe@(l3R)5T(qef1Ex_yoQYPuy}tTg%B zRJMV#VOO5bKTohMxA&dEbUi01m`Ac$+7AQs$4@aWW?+PJ5XR{*Fv=NYeBev^1{Zr^f?g#ByHVaNMS(m9QIwt|B3X_=xS{XM0F@w&q*z_w{8ow__W*?F9r<}@X9uTL zP#JPBzgu*C3BKcbq1(ApxFAYVF>~hJSTBb1Oi|-iCjJTdyoTY4@ zFT3M2?nejB)#3mp_f(-VW%r__IrAzoKZ+cMPUF#WuZ&5ZM4kI*Nt?~O9{QjgnjVi` zZ08?RZ#p=CRwq&C{+XUbrQ7>2R3UyRy`N^x`OJSuE}3i6Z@R$qAGa!>`=xvW+ieS= UfJ(e~^3_#9SxL&HJ&D)<2MQE#p#T5? literal 0 HcmV?d00001 diff --git a/ft_lstsize.c b/ft_lstsize.c new file mode 100644 index 0000000..62a77a5 --- /dev/null +++ b/ft_lstsize.c @@ -0,0 +1,26 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_lstsize.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* 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); +} diff --git a/ft_lstsize.o b/ft_lstsize.o new file mode 100644 index 0000000000000000000000000000000000000000..94fa721900091e800ae822adba65194b97359996 GIT binary patch literal 1008 zcmb_ay-EW?5Z+5-62YG!7UB=w3%EoO(I%Ye=@r33NEzZK*~H-8MRH3>0zn}ngfv#- zWB3Syg{{4{g{6=p-8mC?b#rRxz}(DyGvCba&Rv+YUNTqujdB?a~>cj?;7t zcDW4qtda^ZI6n7l9Y$z_IW}ddg-XMAnUbL;LVe!gb`fmbMf(qugC5ae`dDJWER<8$ zKF(l_8V}VOB9`wY(<$i)n*fXabO>*YcrAp>`O;!P>8qu;YM}Vx+RP{ad}4Qi-3iXN z!bLayPvQMypa!TaX)$O?fXJHym3)cofJL)G9n2-@m&o^*faHbGpNE3**^%=sh$q4# K5BDtl$oU@)w_6zi literal 0 HcmV?d00001 diff --git a/libft.h b/libft.h index 37289a5..5d540b8 100644 --- a/libft.h +++ b/libft.h @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* 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 # include +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 \ No newline at end of file