From: = <=> Date: Wed, 3 Dec 2025 15:05:33 +0000 (+0100) Subject: Makefile update, ops, and fixes X-Git-Url: https://git.uwuaxy.net/?a=commitdiff_plain;h=ae8e7307a2cbee99739c0c23512fcfd029bfa609;p=axy%2Fft%2Fpushswap.git Makefile update, ops, and fixes --- diff --git a/.gitignore b/.gitignore index 78fb450..93245e6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -**.out -**.o +.obj push_swap checker diff --git a/Makefile b/Makefile index c26fefc..01878bd 100644 --- a/Makefile +++ b/Makefile @@ -2,17 +2,22 @@ NAME=push_swap SRCS=cheatalloc.c clist.c main_pushswap.c ops.c ops_output.c ops_p.c ops_r.c ops_rr.c ops_s.c output.c psval.c stack.c stacks.c -OBJS=${SRCS:.c=.o} +OBJS=${SRCS:%.c=${OBJDIR}/%.o} -CFLAGS=-Wall -Wextra -Werror +OBJDIR=.obj + +CFLAGS=-Wall -Wextra -Werror -g CC=cc all : ${NAME} -%.o : %.c +${OBJDIR}/%.o : %.c | ${OBJDIR} ${CC} ${CFLAGS} -c -o $@ $< +${OBJDIR} : + mkdir ${OBJDIR} + ${NAME} : ${OBJS} cc -o $@ $^ @@ -21,11 +26,10 @@ clean : fclean : clean rm -f ${NAME} + rmdir ${OBJDIR} re : fclean all -bonus : ${NAME} - remakefile : sed -i "s/^SRCS=.*/$$(echo -n SRCS=; echo -n *.c)/" Makefile diff --git a/clist.c b/clist.c index 4a78d4b..4952c8c 100644 --- a/clist.c +++ b/clist.c @@ -6,7 +6,7 @@ /* By: agilliar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/12/02 11:02:13 by agilliar #+# #+# */ -/* Updated: 2025/12/02 23:05:13 by agilliar ### ########.fr */ +/* Updated: 2025/12/03 16:03:51 by agilliar ### ########.fr */ /* */ /* ************************************************************************** */ @@ -43,6 +43,7 @@ t_clist *clist_pop(t_clist **src) *src = NULL; return (res); } + *src = res->prev; res->next->prev = res->prev; res->prev->next = res->next; return (res); @@ -66,8 +67,14 @@ void clist_push(t_clist **dst, t_clist *lst) // *dst : Nullable void clist_push_back(t_clist **dst, t_clist *lst) { - if (!*dst) - *dst = lst; - else - clist_push(&(*dst)->prev, lst); + lst->next = lst; + lst->prev = lst; + if (*dst) + { + lst->prev = (*dst)->prev; + (*dst)->prev->next = lst; + lst->next = *dst; + (*dst)->prev = lst; + } + *dst = lst; } diff --git a/main_pushswap.c b/main_pushswap.c index d5f26cc..d0c92f3 100644 --- a/main_pushswap.c +++ b/main_pushswap.c @@ -6,21 +6,30 @@ /* By: agilliar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/12/02 22:15:12 by agilliar #+# #+# */ -/* Updated: 2025/12/03 12:52:57 by agilliar ### ########.fr */ +/* Updated: 2025/12/03 15:19:10 by agilliar ### ########.fr */ /* */ /* ************************************************************************** */ #include "pushswap.h" +static void algorithm(const t_stacks *stacks, t_closure clos) +{ + (void) stacks; + for (t_op i = OP_SA; i <= OP_RRR; i++) + (clos.func)(clos.data, i); +} + int main(int argc, char **argv) { t_stacks stacks; + t_ops ops; stacks = stacks_new(); + ops = ops_init(); + ops_add_output(&ops); for (int i = 1; i < argc; i++) stack_push_back(&stacks.a, psval_parse(argv[i])); - for (int i = 1; i < argc; i++) - psval_output(psval_parse(argv[i])); + stacks_apply(&stacks, &ops, &algorithm); output_flush(); cheatexit(!stacks_is_solved(&stacks)); } diff --git a/ops.c b/ops.c index b848200..b3a134d 100644 --- a/ops.c +++ b/ops.c @@ -6,7 +6,7 @@ /* By: agilliar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/12/03 10:57:30 by agilliar #+# #+# */ -/* Updated: 2025/12/03 13:12:42 by agilliar ### ########.fr */ +/* Updated: 2025/12/03 15:07:01 by agilliar ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,3 +31,36 @@ t_closure ops_compose(t_closure first, t_closure second) closure.data = data; return (closure); } + +t_ops ops_init(void) +{ + const t_ops res = { + .ops = { + ops_sa(), + ops_sb(), + ops_ss(), + ops_pa(), + ops_pb(), + ops_ra(), + ops_rb(), + ops_rr(), + ops_rra(), + ops_rrb(), + ops_rrr(), + } + }; + + return (res); +} + +void ops_add_output(t_ops *ops) +{ + t_op op; + + op = OP_SA; + while (op <= OP_RRR) + { + ops->ops[op] = ops_compose(ops->ops[op], ops_output(op)); + op++; + } +} diff --git a/ops_output.c b/ops_output.c index 15ed678..b245dfc 100644 --- a/ops_output.c +++ b/ops_output.c @@ -6,15 +6,22 @@ /* By: agilliar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/12/03 12:28:28 by agilliar #+# #+# */ -/* Updated: 2025/12/03 12:34:38 by agilliar ### ########.fr */ +/* Updated: 2025/12/03 15:01:10 by agilliar ### ########.fr */ /* */ /* ************************************************************************** */ #include "pushswap.h" -static void ops_output_inner(void *data, t_op op) +static void ops_output_inner(const char *data, t_stack stack) { - const char *const array[11] = { + (void) stack; + output_str_ln(data); +} + +t_closure ops_output(t_op op) +{ + t_closure res; + static char *ops[11] = { "sa", "sb", "ss", @@ -27,15 +34,8 @@ static void ops_output_inner(void *data, t_op op) "rrb", "rrr", }; - (void) data; - output_str_ln(array[op]); -} - -t_closure ops_output(void) -{ - t_closure res; - res.data = NULL; + res.data = ops[op]; res.func = &ops_output_inner; return (res); } diff --git a/pushswap.h b/pushswap.h index a7eecee..488b2cc 100644 --- a/pushswap.h +++ b/pushswap.h @@ -6,7 +6,7 @@ /* By: agilliar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/12/02 11:02:44 by agilliar #+# #+# */ -/* Updated: 2025/12/03 13:25:21 by agilliar ### ########.fr */ +/* Updated: 2025/12/03 15:08:03 by agilliar ### ########.fr */ /* */ /* ************************************************************************** */ @@ -104,8 +104,6 @@ void stack_move(t_stack *src, t_stack *dst); t_psval psval_parse(const char *s); void psval_output(t_psval val); -t_closure ops_compose(t_closure first, t_closure second); -t_closure ops_output(void); t_closure ops_pa(void); t_closure ops_pb(void); t_closure ops_ra(void); @@ -118,4 +116,10 @@ t_closure ops_sa(void); t_closure ops_sb(void); t_closure ops_ss(void); +t_closure ops_output(t_op op); + +t_closure ops_compose(t_closure first, t_closure second); +t_ops ops_init(void); +void ops_add_output(t_ops *ops); + #endif diff --git a/stack.c b/stack.c index 91071e3..09bfe8d 100644 --- a/stack.c +++ b/stack.c @@ -6,7 +6,7 @@ /* By: agilliar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/12/03 12:53:25 by agilliar #+# #+# */ -/* Updated: 2025/12/03 13:08:25 by agilliar ### ########.fr */ +/* Updated: 2025/12/03 15:40:28 by agilliar ### ########.fr */ /* */ /* ************************************************************************** */