]> git.dkaiser.de - 42/push_swap.git/commitdiff
Simplify arguments into t_psdata
authorDominik Kaiser <dominik@dominik-XPS.fritz.box>
Tue, 16 Apr 2024 07:28:12 +0000 (09:28 +0200)
committerDominik Kaiser <dominik@dominik-XPS.fritz.box>
Tue, 16 Apr 2024 07:28:12 +0000 (09:28 +0200)
command_handling.c
main.c
push_swap.h
sorting.c

index e4dc476319cf3a61a3f17921ec133c1999cd98ab..0b5f335c7e6e83cbc650a3bc8b72554ce83671e7 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/04/13 14:38:47 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/04/15 16:35:05 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/04/16 09:27:41 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -38,32 +38,31 @@ static void run_for_both(t_stack *stack_a, t_stack *stack_b,
        f(stack_b);
 }
 
-void   run_command(t_stack *stack_a, t_stack *stack_b, t_list **cmds,
-               enum e_pscmd cmd)
+void   run_command(t_psdata *data, enum e_pscmd cmd)
 {
        if (cmd == SA)
-               stack_swap(stack_a);
+               stack_swap(data->a);
        else if (cmd == SB)
-               stack_swap(stack_b);
+               stack_swap(data->b);
        else if (cmd == SS)
-               run_for_both(stack_a, stack_b, stack_swap);
+               run_for_both(data->a, data->b, stack_swap);
        else if (cmd == PA)
-               stack_push(stack_a, stack_b);
+               stack_push(data->a, data->b);
        else if (cmd == PB)
-               stack_push(stack_b, stack_a);
+               stack_push(data->b, data->a);
        else if (cmd == RA)
-               stack_rotate(stack_a);
+               stack_rotate(data->a);
        else if (cmd == RB)
-               stack_rotate(stack_b);
+               stack_rotate(data->b);
        else if (cmd == RR)
-               run_for_both(stack_a, stack_b, stack_rotate);
+               run_for_both(data->a, data->b, stack_rotate);
        else if (cmd == RRA)
-               stack_rrotate(stack_a);
+               stack_rrotate(data->a);
        else if (cmd == RRB)
-               stack_rrotate(stack_b);
+               stack_rrotate(data->b);
        else if (cmd == RRR)
-               run_for_both(stack_a, stack_b, stack_rrotate);
-       add_cmd_to_queue(cmds, cmd);
+               run_for_both(data->a, data->b, stack_rrotate);
+       add_cmd_to_queue(&data->cmds, cmd);
 }
 
 static void    print_cmd(void *ptr_cmd)
diff --git a/main.c b/main.c
index 803f6eb6b974e2369adab2a4c0cc8efab15c09f7..9d083c01d8dd0c08a68e4b1e1e32cd3be3bc4b3c 100644 (file)
--- a/main.c
+++ b/main.c
@@ -6,44 +6,73 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/04/12 17:03:30 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/04/15 17:53:19 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/04/16 09:22:00 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
 #include "libft/ft_printf.h"
 #include "push_swap.h"
 
-int    main(int argc, char *argv[])
+static void free_data(t_psdata *data)
 {
-       t_stack *stack_a;
-       t_stack *stack_b;
-       t_list  *pscmds;
-
-       stack_a = create_stack(argc, argv);
-       if (!stack_a)
+       if (data->a)
        {
-               ft_putendl_fd("Error", 2);
-               return (1);
+               if (data->a->stack)
+                       free(data->a->stack);
+               free(data->a);
        }
+       if (data->b)
+       {
+               if (data->b->stack)
+                       free(data->b->stack);
+               free(data->b);
+       }
+       free(data);
+}
+
+static t_psdata *initialize_data(int argc, char *argv[])
+{
+       t_psdata *result;
 
-       stack_b = malloc(sizeof(t_stack));
-       if (!stack_b)
+       result = malloc(sizeof(t_psdata));
+       if (result)
        {
-               //free everything
+               result->a = create_stack(argc, argv);
+               if (result->a)
+               {
+                       result->b = malloc(sizeof(t_stack));
+                       if (result->b)
+                       {
+                               result->b->stack = malloc(sizeof(int) * (argc - 1));
+                               if (result->b->stack)
+                               {
+                                       result->b->size = 0;
+                                       return result;
+                               }
+                       }
+               }
        }
-       stack_b->stack = malloc(sizeof(int) * (argc - 1));
-       if (!stack_b->stack)
+       free_data(result);
+       return NULL;
+}
+
+int    main(int argc, char *argv[])
+{
+       t_psdata *data;
+
+       data = initialize_data(argc, argv);
+       if (!data)
        {
-               //free everything
+               ft_putendl_fd("Error", 2);
+               return (1);
        }
-       stack_b->size = 0;
-       stack_optimize(stack_a);
-       pscmds = stack_sort(stack_a, stack_b);
+       stack_optimize(data->a);
+       data->cmds = stack_sort(data->a, data->b);
        /* optimize_commands(&pscmds); */
-       print_commands(pscmds);
+       print_commands(data->cmds);
        ft_printf("\nA: ");
-       stack_print(stack_a);
+       stack_print(data->a);
        ft_printf("B: ");
-       stack_print(stack_b);
+       stack_print(data->b);
        return (0);
 }
index 35001711261d5372ee3e9926fddd84e1c4bb689a..7fcc9f89b7b2b8a05e520e091a0affd0b687e552 100644 (file)
@@ -6,7 +6,7 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/04/12 16:59:09 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/04/15 17:41:05 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/04/16 09:25:17 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -37,6 +37,13 @@ typedef struct s_stack
        int size;
 } t_stack;
 
+typedef struct s_psdata
+{
+       t_stack *a;
+       t_stack *b;
+       t_list *cmds;
+} t_psdata;
+
 t_stack        *create_stack(int argc, char *argv[]);
 
 void   stack_swap(t_stack *stack);
@@ -45,13 +52,12 @@ void        stack_rotate(t_stack *stack);
 void   stack_rrotate(t_stack *stack);
 void stack_print(t_stack *stack);
 
-void   run_command(t_stack *stack_a, t_stack *stack_b, t_list **cmds,
-                       enum e_pscmd cmd);
+void   run_command(t_psdata *data, enum e_pscmd cmd);
 void   print_commands(t_list *cmds);
 
 int    stack_optimize(t_stack *stack);
-void   optimize_commands(t_list **cmds);
+void   optimize_c/*   Updated: 2024/04/15 17:54:23 by dkaiser          ###   ########.fr       */ommands(t_list **cmds);
 
-t_list *stack_sort(t_stack *stack_a, t_stack *stack_b);
+void   stack_sort(t_psdata *data);
 
 #endif // PUSH_SWAP_H
index f04304f16aba2817388e35b7d07400a99fc223cb..8f5d31f35c9ddc7a562215ee00f78587df0f3457 100644 (file)
--- a/sorting.c
+++ b/sorting.c
@@ -6,14 +6,13 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/04/13 15:04:19 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/04/15 17:54:23 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/04/16 09:27:53 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
 #include "push_swap.h"
 
-
-t_list *stack_sort(t_stack *stack_a, t_stack *stack_b)
+void stack_sort(t_psdata *data)
 {
-    return NULL;
+
 }