diff options
| author | Dominik Kaiser | 2024-04-12 20:51:04 +0200 |
|---|---|---|
| committer | Dominik Kaiser | 2024-04-12 20:51:04 +0200 |
| commit | 925c50a9b094f6d244b621c8750d5ecf0caa38a1 (patch) | |
| tree | 405616d0682be11b48bacb9a773b47da86f755ef | |
| parent | 9c64c9d253fa22b29005ec53dca6fedcead2ae6c (diff) | |
| download | push_swap-925c50a9b094f6d244b621c8750d5ecf0caa38a1.tar.gz push_swap-925c50a9b094f6d244b621c8750d5ecf0caa38a1.zip | |
Add error handling and create base for commands
| -rw-r--r-- | command_handling.c | 48 | ||||
| -rw-r--r-- | main.c | 12 | ||||
| -rw-r--r-- | stack_utils.c | 54 |
3 files changed, 111 insertions, 3 deletions
diff --git a/command_handling.c b/command_handling.c new file mode 100644 index 0000000..484c858 --- /dev/null +++ b/command_handling.c @@ -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); +} @@ -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 index 0000000..7a22b47 --- /dev/null +++ b/stack_utils.c @@ -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; +} |
