aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCharles Cabergs <me@cacharle.xyz>2021-09-10 10:54:12 +0200
committerCharles Cabergs <me@cacharle.xyz>2021-09-10 10:54:12 +0200
commit7a6533373ab9b0dd075f995c98dcf332a7876fac (patch)
treea9fc5df9ab01c11a24e780dab47039504f122ef3 /src
parentc0124777afcbbb0d5ca7d841360434f25235fb0f (diff)
downloadpush_swap-7a6533373ab9b0dd075f995c98dcf332a7876fac.tar.gz
push_swap-7a6533373ab9b0dd075f995c98dcf332a7876fac.tar.bz2
push_swap-7a6533373ab9b0dd075f995c98dcf332a7876fac.zip
Updated to norm v3
Diffstat (limited to 'src')
-rw-r--r--src/checker/check.c37
-rw-r--r--src/checker/checker.h8
-rw-r--r--src/checker/main.c13
-rw-r--r--src/common/common.h15
-rw-r--r--src/common/parse.c19
-rw-r--r--src/common/stack_core.c17
-rw-r--r--src/common/stack_helper.c10
-rw-r--r--src/common/stack_op.c8
-rw-r--r--src/push_swap/main.c8
-rw-r--r--src/push_swap/sort.c24
10 files changed, 92 insertions, 67 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);
diff --git a/src/checker/checker.h b/src/checker/checker.h
index f6d50ef..d049e21 100644
--- a/src/checker/checker.h
+++ b/src/checker/checker.h
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/18 10:16:12 by cacharle #+# #+# */
-/* Updated: 2020/01/22 10:42:16 by cacharle ### ########.fr */
+/* Updated: 2021/09/10 10:26:37 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -19,7 +19,7 @@
# define ACTION_ID_BUF_SIZE 4
-typedef enum e_flag_arg
+typedef enum e_flag_arg
{
FLAG_ARG_A,
FLAG_ARG_B,
@@ -30,7 +30,7 @@ typedef enum e_flag_arg
typedef void (*t_func_arg_1)(t_stack *);
typedef void (*t_func_arg_2)(t_stack *, t_stack *);
-typedef struct s_action
+typedef struct s_action
{
const char *id;
t_flag_arg args;
@@ -38,7 +38,7 @@ typedef struct s_action
{
t_func_arg_1 arg_1;
t_func_arg_2 arg_2;
- } func;
+ } u_func;
} t_action;
t_status check(t_stack *a, t_stack *b);
diff --git a/src/checker/main.c b/src/checker/main.c
index a0a08b2..ca38105 100644
--- a/src/checker/main.c
+++ b/src/checker/main.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/18 10:16:14 by cacharle #+# #+# */
-/* Updated: 2020/01/19 09:08:41 by cacharle ### ########.fr */
+/* Updated: 2021/09/10 10:33:05 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -20,15 +20,14 @@ int main(int argc, char **argv)
if (argc == 1)
return (0);
- if ((a = stack_new(argc - 1)) == NULL)
+ a = stack_new(argc - 1);
+ if (a == NULL)
return (1);
if (parse(argc, argv, a) != STATUS_SUCCESS)
return (1);
- if ((b = stack_new(stack_length(a))) == NULL)
- {
- stack_destroy(a);
- return (1);
- }
+ b = stack_new(stack_length(a));
+ if (b == NULL)
+ return (stack_destroy(a));
s = check(a, b);
if (s == STATUS_SUCCESS)
ft_putendl("OK");
diff --git a/src/common/common.h b/src/common/common.h
index 87c4655..c4efad8 100644
--- a/src/common/common.h
+++ b/src/common/common.h
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/18 11:20:54 by cacharle #+# #+# */
-/* Updated: 2020/01/22 10:25:47 by cacharle ### ########.fr */
+/* Updated: 2021/09/10 10:33:19 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -14,24 +14,25 @@
# define COMMON_H
# include <stdlib.h>
+# include <stdbool.h>
# include "libft.h"
-typedef enum
+typedef enum e_status
{
- STATUS_SUCCESS,
- STATUS_FAILURE,
+ STATUS_FAILURE = false,
+ STATUS_SUCCESS = true,
STATUS_ERROR,
STATUS_EOF,
} t_status;
-typedef enum
+typedef enum e_stack_tag
{
STACK_NO_TAG,
STACK_A,
STACK_B
} t_stack_tag;
-typedef struct s_stack
+typedef struct s_stack
{
int *elements;
t_stack_tag tag;
@@ -43,7 +44,7 @@ typedef struct s_stack
*/
t_stack *stack_new(int size);
-void stack_destroy(t_stack *stack);
+int stack_destroy(t_stack *stack);
void stack_push(t_stack *stack, int n);
void stack_pop(t_stack *stack);
int stack_peek(t_stack *stack);
diff --git a/src/common/parse.c b/src/common/parse.c
index b0415cd..34f0749 100644
--- a/src/common/parse.c
+++ b/src/common/parse.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/19 09:03:28 by cacharle #+# #+# */
-/* Updated: 2020/01/19 13:33:17 by cacharle ### ########.fr */
+/* Updated: 2021/09/09 10:02:15 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -14,19 +14,22 @@
static t_status has_dup(int *xs, size_t size)
{
- int *tmp;
- t_status ret;
+ int *tmp;
+ t_bool is_set;
- if ((tmp = (int*)malloc(size * sizeof(int))) == NULL)
+ tmp = (int *)malloc(size * sizeof(int));
+ if (tmp == NULL)
return (STATUS_ERROR);
ft_memcpy(tmp, xs, size * sizeof(int));
- ret = ft_is_set(tmp, size, sizeof(int), &ft_compar_int) ?
- STATUS_SUCCESS : STATUS_FAILURE;
+ is_set = ft_is_set(tmp, size, sizeof(int), &ft_compar_int);
free(tmp);
- return (ret);
+ if (is_set)
+ return (STATUS_SUCCESS);
+ else
+ return (STATUS_FAILURE);
}
-t_status parse(int argc, char **argv, t_stack *a)
+t_status parse(int argc, char **argv, t_stack *a)
{
while (--argc >= 1)
{
diff --git a/src/common/stack_core.c b/src/common/stack_core.c
index adab5b1..68f74ca 100644
--- a/src/common/stack_core.c
+++ b/src/common/stack_core.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/19 06:37:45 by cacharle #+# #+# */
-/* Updated: 2020/01/22 10:23:18 by cacharle ### ########.fr */
+/* Updated: 2021/09/10 10:32:43 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -14,11 +14,13 @@
t_stack *stack_new(int size)
{
- t_stack *stack;
+ t_stack *stack;
- if ((stack = (t_stack*)malloc(sizeof(t_stack))) == NULL)
+ stack = (t_stack *)malloc(sizeof(t_stack));
+ if (stack == NULL)
return (NULL);
- if ((stack->elements = (int*)malloc(sizeof(int) * size)) == NULL)
+ stack->elements = (int *)malloc(sizeof(int) * size);
+ if (stack->elements == NULL)
{
free(stack);
return (NULL);
@@ -28,12 +30,13 @@ t_stack *stack_new(int size)
return (stack);
}
-void stack_destroy(t_stack *stack)
+int stack_destroy(t_stack *stack)
{
if (stack == NULL)
- return ;
+ return (1);
free(stack->elements);
free(stack);
+ return (1);
}
void stack_push(t_stack *stack, int n)
@@ -49,7 +52,7 @@ void stack_pop(t_stack *stack)
stack->top--;
}
-int stack_peek(t_stack *stack)
+int stack_peek(t_stack *stack)
{
if (stack_empty(stack))
return (0);
diff --git a/src/common/stack_helper.c b/src/common/stack_helper.c
index 968060f..fd6f0c5 100644
--- a/src/common/stack_helper.c
+++ b/src/common/stack_helper.c
@@ -6,25 +6,25 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/19 06:40:18 by cacharle #+# #+# */
-/* Updated: 2020/01/22 10:22:54 by cacharle ### ########.fr */
+/* Updated: 2021/09/09 09:53:59 by charles ### ########.fr */
/* */
/* ************************************************************************** */
#include "common.h"
-inline void stack_swap_2(t_stack *stack_a, t_stack *stack_b)
+inline void stack_swap_2(t_stack *stack_a, t_stack *stack_b)
{
stack_swap(stack_a);
stack_swap(stack_b);
}
-inline void stack_rotate_2(t_stack *stack_a, t_stack *stack_b)
+inline void stack_rotate_2(t_stack *stack_a, t_stack *stack_b)
{
stack_rotate(stack_a);
stack_rotate(stack_b);
}
-inline void stack_reverse_rotate_2(t_stack *stack_a, t_stack *stack_b)
+inline void stack_reverse_rotate_2(t_stack *stack_a, t_stack *stack_b)
{
stack_reverse_rotate(stack_a);
stack_reverse_rotate(stack_b);
@@ -35,7 +35,7 @@ inline t_bool stack_empty(t_stack *stack)
return (stack->top == -1);
}
-inline int stack_length(t_stack *stack)
+inline int stack_length(t_stack *stack)
{
return (stack->top + 1);
}
diff --git a/src/common/stack_op.c b/src/common/stack_op.c
index e1c095b..bb5a854 100644
--- a/src/common/stack_op.c
+++ b/src/common/stack_op.c
@@ -1,12 +1,12 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
-/* stack.c :+: :+: :+: */
+/* stack_op.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/19 06:37:44 by cacharle #+# #+# */
-/* Updated: 2020/01/19 07:06:58 by cacharle ### ########.fr */
+/* Updated: 2021/09/09 09:53:03 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -46,7 +46,7 @@ void stack_rotate(t_stack *stack)
return ;
tmp = stack_peek(stack);
ft_memmove(stack->elements + 1, stack->elements,
- (stack_length(stack) - 1) * sizeof(int));
+ (stack_length(stack) - 1) * sizeof(int));
stack->elements[0] = tmp;
}
@@ -58,6 +58,6 @@ void stack_reverse_rotate(t_stack *stack)
return ;
tmp = stack->elements[0];
ft_memmove(stack->elements, stack->elements + 1,
- (stack_length(stack) - 1) * sizeof(int));
+ (stack_length(stack) - 1) * sizeof(int));
stack->elements[stack->top] = tmp;
}
diff --git a/src/push_swap/main.c b/src/push_swap/main.c
index fa34b35..0d25ace 100644
--- a/src/push_swap/main.c
+++ b/src/push_swap/main.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/19 09:09:59 by cacharle #+# #+# */
-/* Updated: 2020/01/22 10:36:31 by cacharle ### ########.fr */
+/* Updated: 2021/09/09 10:02:47 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -19,11 +19,13 @@ int main(int argc, char **argv)
if (argc == 1)
return (0);
- if ((a = stack_new(argc - 1)) == NULL)
+ a = stack_new(argc - 1);
+ if (a == NULL)
return (1);
if (parse(argc, argv, a) != STATUS_SUCCESS)
return (1);
- if ((b = stack_new(stack_length(a))) == NULL)
+ b = stack_new(stack_length(a));
+ if (b == NULL)
{
stack_destroy(a);
return (1);
diff --git a/src/push_swap/sort.c b/src/push_swap/sort.c
index b6113e9..588dc54 100644
--- a/src/push_swap/sort.c
+++ b/src/push_swap/sort.c
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/19 09:12:02 by cacharle #+# #+# */
-/* Updated: 2020/07/21 11:43:00 by charles ### ########.fr */
+/* Updated: 2021/09/10 10:48:01 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -47,6 +47,14 @@ static int frame_length(t_stack *st, int frame_index)
/* stack_swap_print(main); */
/* } */
+static int not_a_ternary(bool cond, int x, int y)
+{
+ if (cond)
+ return (x);
+ else
+ return (y);
+}
+
/*
** main : stack to sort
** tmp : temporary stack used to store pivot > values
@@ -70,7 +78,7 @@ static void push_swap_qsort_partition(t_stack *main, t_stack *tmp,
int main_frame)
{
int pivot;
- int hidden_count;
+ int hidden_count;
int frame_len;
pivot = stack_peek(main);
@@ -79,8 +87,8 @@ static void push_swap_qsort_partition(t_stack *main, t_stack *tmp,
frame_len = frame_length(main, main_frame) - 1;
while (frame_len > 0)
{
- if (main->tag == STACK_A ?
- (stack_peek(main) < pivot) : (stack_peek(main) > pivot))
+ if (not_a_ternary(main->tag == STACK_A,
+ stack_peek(main) < pivot, stack_peek(main) > pivot))
stack_push_to_print(main, tmp);
else
{
@@ -118,9 +126,9 @@ static void push_swap_qsort_rec(t_stack *main, t_stack *tmp,
return ;
if (frame_length(main, main_frame) == 2)
{
- if (main->tag == STACK_A ?
- main->elements[main->top] > main->elements[main->top - 1]
- : main->elements[main->top] < main->elements[main->top - 1])
+ if (not_a_ternary(main->tag == STACK_A,
+ main->elements[main->top] > main->elements[main->top - 1],
+ main->elements[main->top] < main->elements[main->top - 1]))
stack_swap_print(main);
return ;
}
@@ -140,7 +148,7 @@ static void push_swap_qsort_rec(t_stack *main, t_stack *tmp,
** wrapper for push_swap_qsort_rec
*/
-void push_swap_qsort(t_stack *a, t_stack *b)
+void push_swap_qsort(t_stack *a, t_stack *b)
{
push_swap_qsort_rec(a, b, 0, 0);
}