From: = <=> Date: Wed, 10 Dec 2025 16:55:30 +0000 (+0100) Subject: Embedded file attrocities X-Git-Url: https://git.uwuaxy.net/?a=commitdiff_plain;h=2c78b788ea032e5014c3d5fd915a329b8466fcbc;p=axy%2Fft%2Fpushswap.git Embedded file attrocities --- diff --git a/.gitignore b/.gitignore index 93245e6..08077be 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ -.obj +.build push_swap checker diff --git a/Makefile b/Makefile index 2ba8855..538e5a2 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,14 @@ NAME=push_swap -SRCS=algorithm_quicksort.c algorithm_selection_sort.c cheatalloc.c clist.c list.c main_pushswap.c op_output.c op_p.c op_r.c op_rr.c op_s.c ops.c ops_groups.c ops_optimizer.c output.c psval.c stack.c stacks.c +SRCS=algorithm_quicksort.c algorithm_selection_sort.c cheatalloc.c clist.c list.c main_pushswap.c op_output.c op_p.c op_r.c op_rr.c op_s.c ops.c ops_groups.c ops_optimizer.c output.c psval.c slice.c stack.c stacks.c -OBJS=${SRCS:%.c=${OBJDIR}/%.o} +RESSRCS=_res_leaf_sort_lookup.h -OBJDIR=.obj +BUILDDIR=.build + +RESDAT=${RESSRCS:_res_%.h=${BUILDDIR}/%.res} + +OBJS=${SRCS:%.c=${BUILDDIR}/%.o} ${RESDAT:%.res=%.o} CFLAGS=-Wall -Wextra -Werror -g @@ -12,25 +16,34 @@ CC=cc all : ${NAME} -${OBJDIR}/%.o : %.c | ${OBJDIR} +%.o : %.res + ld -r -b binary -o $@ $< + +${BUILDDIR}/%.res: _res_%.h | ${BUILDDIR} + sed -n '\?/\*?d; n; n; :x p; n; bx' $^ | head -n-1 > $@ + +${BUILDDIR}/%.o : %.c | ${BUILDDIR} ${CC} ${CFLAGS} -c -o $@ $< -${OBJDIR} : - mkdir ${OBJDIR} +${BUILDDIR} : + mkdir ${BUILDDIR} ${NAME} : ${OBJS} cc -o $@ $^ clean : - rm -f ${OBJS} + rm -f ${OBJS} ${RESDAT} fclean : clean rm -f ${NAME} - rm -fd ${OBJDIR} + rm -fd ${BUILDDIR} re : fclean all -remakefile : +remakefile : clean sed -i "s/^SRCS=.*/$$(echo -n SRCS=; echo -n *.c)/" Makefile + sed -i "s/^BINSRCS=.*/$$(echo -n ASSETSRCS=; echo -n _res_*.h)/" Makefile + +.PHONY : all clean fclean re bonus remakefile -.PHONY : all clean fclean re bonus +.SECONDARY : ${RESDAT} diff --git a/_res_leaf_sort_lookup.h b/_res_leaf_sort_lookup.h new file mode 100644 index 0000000..365fde3 --- /dev/null +++ b/_res_leaf_sort_lookup.h @@ -0,0 +1,82 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* _res_leaf_sort_lookup.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: agilliar +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/12/10 16:53:22 by agilliar #+# #+# */ +/* Updated: 2025/12/10 17:07:25 by agilliar ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* + +ra +ra ra +sa ra ra +ra ra ra +ra sa ra ra +sa ra ra ra +pb sa ra pa ra ra +pb sa ra ra pa ra +sa ra sa ra ra +ra ra ra ra +ra ra sa ra ra +ra sa ra ra ra +ra pb sa ra pa ra ra +ra pb sa ra ra pa ra +ra sa ra sa ra ra +sa ra ra ra ra +sa ra ra sa ra ra +pb sa ra pa ra ra ra +pb pb sa ra pa pa ra ra ra +pb pb ss ra pa ra ra pa ra +sa pb sa ra ra ra pa ra +pb sa ra ra pa ra ra +pb pb sa ra pa ra pa ra ra +sa ra sa ra ra ra +pb ra sa ra pa ra ra +pb sa ra sa ra pa ra ra +pb pb sa ra ra pa pa ra ra +pb pb sa ra pa ra ra pa ra +pb sa ra ra ra pa ra +pb pb sa ra ra pa ra pa ra +pb sa ra sa ra ra pa ra +pb ra sa ra ra pa ra +pb ra ra ra pa ra + +pb +sa pb pb +pb pb +sa pb sa pb sb pb +sa pb sa pb pb +pb sa pb sb pb +sa pb pb pb +pb pb pb +pb sa pb pb +sa pb rr sa pb pb rrr pb +sa pb rr pb pb rrr pb +pb pb ss rb pb sb pb rrb +sa pb sa pb ss pb pb +pb rb pb pb pb rrb +pb pb ss pb sb pb sb +pb rr sa pb pb rrr pb +pb rr pb pb rrr pb +sa pb pb rr pb sb rrr pb +sa pb sa pb sb pb pb +sa pb sa pb pb pb +pb pb ss pb sb pb +pb pb rr pb sb rrr pb +pb sa pb sb pb pb +pb sa pb rr pb sb rrr pb +pb sa pb ss pb pb +pb pb ss pb pb +sa pb pb pb pb +pb sa pb pb pb +pb pb sa pb sb pb +pb pb pb pb +pb pb sa pb pb +pb sa pb sa pb pb +pb sa pb sa pb sb pb +*/ diff --git a/main_pushswap.c b/main_pushswap.c index 8fc7ba6..224bedd 100644 --- a/main_pushswap.c +++ b/main_pushswap.c @@ -6,7 +6,7 @@ /* By: clefrere +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/12/02 22:15:12 by agilliar #+# #+# */ -/* Updated: 2025/12/09 16:06:44 by clefrere ### ########.fr */ +/* Updated: 2025/12/10 17:45:36 by agilliar ### ########.fr */ /* */ /* ************************************************************************** */ @@ -44,6 +44,10 @@ int main(int argc, char **argv) t_ops ops; t_optimizer opt; + slice_output(slice_new_range( + &_binary__build_leaf_sort_lookup_res_start, + &_binary__build_leaf_sort_lookup_res_end + )); args.state = stacks_new(); args.bench = false; args.algo = NULL; diff --git a/pushswap.h b/pushswap.h index c4b98ca..41bdfeb 100644 --- a/pushswap.h +++ b/pushswap.h @@ -6,7 +6,7 @@ /* By: clefrere +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/12/02 11:02:44 by agilliar #+# #+# */ -/* Updated: 2025/12/09 15:54:48 by clefrere ### ########.fr */ +/* Updated: 2025/12/10 17:44:35 by agilliar ### ########.fr */ /* */ /* ************************************************************************** */ @@ -58,6 +58,7 @@ typedef struct s_args typedef enum e_op { + OP_SENTINEL = -1, OP_SA = 0, OP_SB = 1, OP_SS = 2, @@ -89,6 +90,15 @@ typedef struct s_optimizer t_ops commit; } t_optimizer; +typedef struct s_slice +{ + size_t len; + const char *ptr; +} t_slice; + +extern void _binary__build_leaf_sort_lookup_res_start(void); +extern void _binary__build_leaf_sort_lookup_res_end(void); + void cheatexit(int errcode); void *cheatalloc(size_t len); @@ -146,6 +156,12 @@ t_list list_new(t_stack stack); t_list list_sub(t_list self, size_t start, size_t end); void list_sort(t_list list); +t_slice slice_new(const char *s); +t_slice slice_new_range(void *start, void *end); +bool slice_eq(t_slice lhs, t_slice rhs); +t_slice slice_split_first(t_slice *rem, char at); +void slice_output(t_slice s); + void algorithm_selection_sort(const t_stacks *stacks, t_closure cb); void algorithm_quicksort(const t_stacks *stacks, t_closure cb); diff --git a/slice.c b/slice.c new file mode 100644 index 0000000..1f102a9 --- /dev/null +++ b/slice.c @@ -0,0 +1,73 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* slice.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: agilliar +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/12/10 17:08:21 by agilliar #+# #+# */ +/* Updated: 2025/12/10 17:45:51 by agilliar ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "pushswap.h" + +t_slice slice_new(const char *s) +{ + t_slice res; + + res.ptr = s; + res.len = 0; + while (res.ptr[res.len]) + res.len++; + return (res); +} + +t_slice slice_new_range(void *start, void *end) +{ + t_slice res; + + res.len = (size_t) (end - start); + res.ptr = start; + return (res); +} + +bool slice_eq(t_slice lhs, t_slice rhs) +{ + size_t i; + + if (lhs.len != rhs.len) + return (false); + i = 0; + while (i < lhs.len && lhs.ptr[i] == rhs.ptr[i]) + i++; + return (i == lhs.len); +} + +t_slice slice_split_first(t_slice *rem, char at) +{ + t_slice res; + + res.len = 0; + res.ptr = rem->ptr; + while (rem->len) + { + if (*rem->ptr == at) + break ; + rem->len--; + rem->ptr++; + res.len++; + } + if (rem->len) + { + rem->len--; + rem->ptr++; + } + return (res); +} + +void slice_output(t_slice s) +{ + while (s.len--) + output_char(*(s.ptr++)); +}