aboutsummaryrefslogtreecommitdiff
path: root/src/checker/check.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/checker/check.c')
-rw-r--r--src/checker/check.c37
1 files changed, 20 insertions, 17 deletions
diff --git a/src/checker/check.c b/src/checker/check.c
index 35bd992..125fdb7 100644
--- a/src/checker/check.c
+++ b/src/checker/check.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/18 10:16:08 by cacharle #+# #+# */
-/* Updated: 2020/01/18 12:04:41 by cacharle ### ########.fr */
+/* Updated: 2020/01/19 07:11:05 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
@@ -45,17 +45,17 @@ t_status read_action(t_stack *a, t_stack *b)
}
static t_action g_actions[] = {
- {"sa", FLAG_ARG_A, {.arg_1 = &swap_a}},
- {"sb", FLAG_ARG_B, {.arg_1 = &swap_b}},
- {"ss", FLAG_ARG_A_B, {.arg_2 = &swap_both}},
- {"pa", FLAG_ARG_A_B, {.arg_2 = &push_a}},
- {"pb", FLAG_ARG_B_A, {.arg_2 = &push_a}},
- {"ra", FLAG_ARG_A, {.arg_1 = &rotate_a}},
- {"rb", FLAG_ARG_B, {.arg_1 = &rotate_b}},
- {"rr", FLAG_ARG_A_B, {.arg_2 = &rotate_both}},
- {"rra", FLAG_ARG_A, {.arg_1 = &reverse_rotate_a}},
- {"rrb", FLAG_ARG_B, {.arg_1 = &reverse_rotate_b}},
- {"rrr", FLAG_ARG_A_B, {.arg_2 = &reverse_rotate_both}},
+ {"sa", FLAG_ARG_A, {.arg_1 = &stack_swap}},
+ {"sb", FLAG_ARG_B, {.arg_1 = &stack_swap}},
+ {"ss", FLAG_ARG_A_B, {.arg_2 = &stack_swap_2}},
+ {"pa", FLAG_ARG_A_B, {.arg_2 = &stack_push_to}},
+ {"pb", FLAG_ARG_B_A, {.arg_2 = &stack_push_to}},
+ {"ra", FLAG_ARG_A, {.arg_1 = &stack_rotate}},
+ {"rb", FLAG_ARG_B, {.arg_1 = &stack_rotate}},
+ {"rr", FLAG_ARG_A_B, {.arg_2 = &stack_rotate_2}},
+ {"rra", FLAG_ARG_A, {.arg_1 = &stack_reverse_rotate}},
+ {"rrb", FLAG_ARG_B, {.arg_1 = &stack_reverse_rotate}},
+ {"rrr", FLAG_ARG_A_B, {.arg_2 = &stack_reverse_rotate_2}},
};
#define ACTIONS_SIZE (sizeof(g_actions) / sizeof(t_action))
@@ -65,18 +65,21 @@ t_status exec_action(char action_id[ACTION_ID_BUF_SIZE],
{
int i;
- printf("action id %s\n", action_id);
i = 0;
while (ft_strcmp(action_id, g_actions[i].id) != 0)
i++;
if (i == ACTIONS_SIZE)
return (STATUS_ERROR);
- if (g_actions[i].args & FLAG_ARG_A)
+ if (g_actions[i].args == FLAG_ARG_A)
g_actions[i].func.arg_1(a);
- else if (g_actions[i].args & FLAG_ARG_B)
+ else if (g_actions[i].args == FLAG_ARG_B)
g_actions[i].func.arg_1(b);
- else if (g_actions[i].args & FLAG_ARG_A_B)
+ else if (g_actions[i].args == FLAG_ARG_A_B)
g_actions[i].func.arg_2(a, b);
+ else if (g_actions[i].args == FLAG_ARG_B_A)
+ g_actions[i].func.arg_2(b, a);
+ else
+ return (STATUS_ERROR);
return (STATUS_SUCCESS);
}
@@ -87,7 +90,7 @@ t_bool stack_sorted(t_stack *stack)
if (stack_length(stack) < 2)
return (TRUE);
i = -1;
- while (++i < stack->top - 1)
+ while (++i < stack->top)
if (stack->elements[i] > stack->elements[i + 1])
return (FALSE);
return (TRUE);