diff options
Diffstat (limited to 'command_handling.c')
| -rw-r--r-- | command_handling.c | 70 |
1 files changed, 35 insertions, 35 deletions
diff --git a/command_handling.c b/command_handling.c index 7599bdf..7919d4e 100644 --- a/command_handling.c +++ b/command_handling.c @@ -6,7 +6,7 @@ /* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/04/13 14:38:47 by dkaiser #+# #+# */ -/* Updated: 2024/04/26 13:55:07 by dkaiser ### ########.fr */ +/* Updated: 2024/04/27 13:38:41 by dkaiser ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,40 +31,6 @@ static int add_cmd_to_queue(t_list **cmds, enum e_pscmd cmd) return (0); } -static void run_for_both(t_stack *stack_a, t_stack *stack_b, - void (*f)(t_stack *)) -{ - f(stack_a); - f(stack_b); -} - -void run_command(t_psdata *data, enum e_pscmd cmd) -{ - if (cmd == SA) - stack_swap(data->a); - else if (cmd == SB) - stack_swap(data->b); - else if (cmd == SS) - run_for_both(data->a, data->b, stack_swap); - else if (cmd == PA) - stack_push(data->a, data->b); - else if (cmd == PB) - stack_push(data->b, data->a); - else if (cmd == RA) - stack_rotate(data->a); - else if (cmd == RB) - stack_rotate(data->b); - else if (cmd == RR) - run_for_both(data->a, data->b, stack_rotate); - else if (cmd == RRA) - stack_rrotate(data->a); - else if (cmd == RRB) - stack_rrotate(data->b); - else if (cmd == RRR) - run_for_both(data->a, data->b, stack_rrotate); - add_cmd_to_queue(&data->cmds, cmd); -} - static void print_cmd(void *ptr_cmd) { enum e_pscmd cmd; @@ -98,3 +64,37 @@ void print_commands(t_list *cmds) { ft_lstiter(cmds, print_cmd); } + +static void run_for_both(t_stack *stack_a, t_stack *stack_b, + void (*f)(t_stack *)) +{ + f(stack_a); + f(stack_b); +} + +void run_command(t_psdata *data, enum e_pscmd cmd) +{ + if (cmd == SA) + stack_swap(data->a); + else if (cmd == SB) + stack_swap(data->b); + else if (cmd == SS) + run_for_both(data->a, data->b, stack_swap); + else if (cmd == PA) + stack_push(data->a, data->b); + else if (cmd == PB) + stack_push(data->b, data->a); + else if (cmd == RA) + stack_rotate(data->a); + else if (cmd == RB) + stack_rotate(data->b); + else if (cmd == RR) + run_for_both(data->a, data->b, stack_rotate); + else if (cmd == RRA) + stack_rrotate(data->a); + else if (cmd == RRB) + stack_rrotate(data->b); + else if (cmd == RRR) + run_for_both(data->a, data->b, stack_rrotate); + add_cmd_to_queue(&data->cmds, cmd); +} |
