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, 23 insertions, 14 deletions
diff --git a/src/checker/check.c b/src/checker/check.c
index bbe509f..1459dc6 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/19 09:02:08 by cacharle ### ########.fr */
+/* Updated: 2021/09/10 10:26:47 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -16,11 +16,17 @@ t_status check(t_stack *a, t_stack *b)
{
t_status read_status;
- while ((read_status = read_action(a, b)) != STATUS_EOF)
+ read_status = read_action(a, b);
+ while (read_status != STATUS_EOF)
+ {
+ read_status = read_action(a, b);
if (read_status == STATUS_ERROR)
return (STATUS_ERROR);
- return (stack_sorted(a) && stack_empty(b) ?
- STATUS_SUCCESS : STATUS_FAILURE);
+ }
+ if (stack_sorted(a) && stack_empty(b))
+ return (STATUS_SUCCESS);
+ else
+ return (STATUS_FAILURE);
}
t_status read_action(t_stack *a, t_stack *b)
@@ -41,10 +47,13 @@ t_status read_action(t_stack *a, t_stack *b)
buf[i++] = c;
buf[i] = '\0';
}
- return (ret == 0 ? STATUS_EOF : STATUS_ERROR);
+ if (ret == 0)
+ return (STATUS_EOF);
+ else
+ return (STATUS_ERROR);
}
-static t_action g_actions[] = {
+static const t_action g_actions[] = {
{"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}},
@@ -58,7 +67,7 @@ static t_action g_actions[] = {
{"rrr", FLAG_ARG_A_B, {.arg_2 = &stack_reverse_rotate_2}},
};
-#define ACTIONS_SIZE (sizeof(g_actions) / sizeof(t_action))
+static const int g_actions_size = sizeof(g_actions) / sizeof(t_action);
t_status exec_action(char action_id[ACTION_ID_BUF_SIZE],
t_stack *a, t_stack *b)
@@ -68,24 +77,24 @@ t_status exec_action(char action_id[ACTION_ID_BUF_SIZE],
i = 0;
while (ft_strcmp(action_id, g_actions[i].id) != 0)
i++;
- if (i == ACTIONS_SIZE)
+ if (i == g_actions_size)
return (STATUS_ERROR);
if (g_actions[i].args == FLAG_ARG_A)
- g_actions[i].func.arg_1(a);
+ g_actions[i].u_func.arg_1(a);
else if (g_actions[i].args == FLAG_ARG_B)
- g_actions[i].func.arg_1(b);
+ g_actions[i].u_func.arg_1(b);
else if (g_actions[i].args == FLAG_ARG_A_B)
- g_actions[i].func.arg_2(a, b);
+ g_actions[i].u_func.arg_2(a, b);
else if (g_actions[i].args == FLAG_ARG_B_A)
- g_actions[i].func.arg_2(b, a);
+ g_actions[i].u_func.arg_2(b, a);
else
return (STATUS_ERROR);
return (STATUS_SUCCESS);
}
-t_bool stack_sorted(t_stack *stack)
+t_bool stack_sorted(t_stack *stack)
{
- int i;
+ int i;
if (stack_length(stack) < 2)
return (TRUE);