]> git.dkaiser.de - 42/push_swap.git/commitdiff
Add error handling and create base for commands
authorDominik Kaiser <dkaiser@2-F-4.42heilbronn.de>
Fri, 12 Apr 2024 18:51:04 +0000 (20:51 +0200)
committerDominik Kaiser <dkaiser@2-F-4.42heilbronn.de>
Fri, 12 Apr 2024 18:51:04 +0000 (20:51 +0200)
command_handling.c [new file with mode: 0644]
main.c
stack_utils.c [new file with mode: 0644]

diff --git a/command_handling.c b/command_handling.c
new file mode 100644 (file)
index 0000000..484c858
--- /dev/null
@@ -0,0 +1,48 @@
+#include "libft/libft.h"
+#include "push_swap.h"
+
+static int add_cmd_to_queue(t_list **cmds, enum e_pscmd cmd)
+{
+    t_list *new_elem;
+    enum e_pscmd *ptr_cmd;
+
+    ptr_cmd = malloc(sizeof(enum e_pscmd));
+    if (!ptr_cmd)
+        return 1;
+
+    new_elem = ft_lstnew(ptr_cmd);
+    if (!new_elem)
+    {
+        free(ptr_cmd);
+        return 1;
+    }
+    ft_lstadd_back(cmds, new_elem);
+    return 0;
+}
+
+void run_command(t_list **stack_a, t_list **stack_b, t_list **cmds, enum e_pscmd cmd)
+{
+    if (cmd == SA)
+        ;
+    else if (cmd == SB)
+        ;
+    else if (cmd == SS)
+        ;
+    else if (cmd == PA)
+        ;
+    else if (cmd == PB)
+        ;
+    else if (cmd == RA)
+        ;
+    else if (cmd == RB)
+        ;
+    else if (cmd == RR)
+        ;
+    else if (cmd == RRA)
+        ;
+    else if (cmd == RRB)
+        ;
+    else if (cmd == RRR)
+        ;
+    add_cmd_to_queue(cmds, cmd);
+}
diff --git a/main.c b/main.c
index 2643ec2714672324f50c5ea453cd59b8464f4775..e9a96e1999af887dc9d9df431020bac1faa316c3 100644 (file)
--- a/main.c
+++ b/main.c
@@ -6,7 +6,7 @@
 /*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
 /*                                                +#+#+#+#+#+   +#+           */
 /*   Created: 2024/04/12 17:03:30 by dkaiser           #+#    #+#             */
-/*   Updated: 2024/04/12 18:49:56 by dkaiser          ###   ########.fr       */
+/*   Updated: 2024/04/12 18:55:38 by dkaiser          ###   ########.fr       */
 /*                                                                            */
 /* ************************************************************************** */
 
@@ -23,11 +23,17 @@ int main(int argc, char *argv[])
        t_list  *stack_a;
 
        stack_a = create_stack(argc, argv);
-       ft_lstiter(stack_a, print_content);
        if (!stack_a)
-               return 1; // TODO: Print error message
+       {
+               ft_putendl_fd("Error", 2);
+               return 1;
+       }
+
+       ft_lstiter(stack_a, print_content);
 
        // TODO: Sort stack
        // TODO: Optimize commands
        // TODO: Print commands
+
+       return 0;
 }
diff --git a/stack_utils.c b/stack_utils.c
new file mode 100644 (file)
index 0000000..7a22b47
--- /dev/null
@@ -0,0 +1,54 @@
+/* ************************************************************************** */
+/*                                                                            */
+/*                                                        :::      ::::::::   */
+/*   stack_utils.c                                      :+:      :+:    :+:   */
+/*                                                    +:+ +:+         +:+     */
+/*   By: dkaiser <dkaiser@student.42heilbronn.de    +#+  +:+       +#+        */
+/*                                                +#+#+#+#+#+   +#+           */
+/*   Created: 2024/04/12 20:31:30 by dkaiser           #+#    #+#             */
+/*   Updated: 2024/04/12 20:50:17 by dkaiser          ###   ########.fr       */
+/*                                                                            */
+/* ************************************************************************** */
+
+#include "libft/libft.h"
+#include "push_swap.h"
+
+void   stack_swap(t_list **stack)
+{
+       t_list  *first_elem;
+
+       first_elem = *stack;
+       *stack = (*stack)->next;
+       first_elem->next = (*stack)->next;
+       (*stack)->next = first_elem;
+}
+
+void   stack_push(t_list **dst_stack, t_list **src_stack)
+{
+       t_list  *elem;
+
+       elem = *src_stack;
+       *src_stack = elem->next;
+       ft_lstadd_front(dst_stack, elem);
+}
+
+void   stack_rotate(t_list **stack)
+{
+       t_list  *first_elem;
+
+       first_elem = *stack;
+       *stack = (*stack)->next;
+       first_elem->next = NULL;
+       ft_lstlast(*stack)->next = first_elem;
+}
+
+void   stack_rrotate(t_list **stack)
+{
+    t_list *first_elem;
+
+    first_elem = *stack;
+    while((*stack)->next->next)
+        *stack = (*stack)->next;
+    (*stack)->next->next = first_elem;
+    (*stack)->next = NULL;
+}