summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--command_handling.c48
-rw-r--r--main.c12
-rw-r--r--stack_utils.c54
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);
+}
diff --git a/main.c b/main.c
index 2643ec2..e9a96e1 100644
--- 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
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;
+}