aboutsummaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-01-22 10:48:21 +0100
committerCharles <sircharlesaze@gmail.com>2020-01-22 11:14:36 +0100
commit2e79b4ac22321abd69c7f1a9748b5761abaab1ec (patch)
treee7f3cb04aa24ddb39fa2ae7418aac3a69f7fe791 /src/common
parent6a83ee598406e9ee4bdd7169dfc4bb46284a2062 (diff)
downloadpush_swap-2e79b4ac22321abd69c7f1a9748b5761abaab1ec.tar.gz
push_swap-2e79b4ac22321abd69c7f1a9748b5761abaab1ec.tar.bz2
push_swap-2e79b4ac22321abd69c7f1a9748b5761abaab1ec.zip
Added micro optimisation when sorting frame == 2 and less reverse rotate when frame == full stack, norming
Diffstat (limited to 'src/common')
-rw-r--r--src/common/action.c72
-rw-r--r--src/common/common.h51
-rw-r--r--src/common/stack_core.c12
-rw-r--r--src/common/stack_helper.c8
4 files changed, 35 insertions, 108 deletions
diff --git a/src/common/action.c b/src/common/action.c
deleted file mode 100644
index c095e59..0000000
--- a/src/common/action.c
+++ /dev/null
@@ -1,72 +0,0 @@
-#include "common.h"
-
-void swap_a(t_stack *a)
-{
- stack_swap(a);
-}
-
-void swap_b(t_stack *b)
-{
- stack_swap(b);
-}
-
-void swap_both(t_stack *a, t_stack *b)
-{
- swap_a(a);
- swap_b(b);
-}
-
-void push_a(t_stack *a, t_stack *b)
-{
- int tmp;
-
- if (stack_empty(b))
- return ;
- tmp = stack_peek(b);
- stack_pop(b);
- stack_push(a, tmp);
-}
-
-void push_b(t_stack *b, t_stack *a)
-{
- int tmp;
-
- if (stack_empty(a))
- return ;
- tmp = stack_peek(a);
- stack_pop(a);
- stack_push(b, tmp);
-
-}
-
-void rotate_a(t_stack *a)
-{
- stack_rotate(a);
-}
-
-void rotate_b(t_stack *b)
-{
- stack_rotate(b);
-}
-
-void rotate_both(t_stack *a, t_stack *b)
-{
- rotate_a(a);
- rotate_b(b);
-}
-
-void reverse_rotate_a(t_stack *a)
-{
- stack_reverse_rotate(a);
-}
-
-void reverse_rotate_b(t_stack *b)
-{
- stack_reverse_rotate(b);
-}
-
-void reverse_rotate_both(t_stack *a, t_stack *b)
-{
- reverse_rotate_a(a);
- reverse_rotate_b(b);
-}
diff --git a/src/common/common.h b/src/common/common.h
index 97881c8..87c4655 100644
--- a/src/common/common.h
+++ b/src/common/common.h
@@ -6,16 +6,15 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/18 11:20:54 by cacharle #+# #+# */
-/* Updated: 2020/01/19 13:31:27 by cacharle ### ########.fr */
+/* Updated: 2020/01/22 10:25:47 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
-#include <stdio.h>
-#ifndef STACK_H
-# define STACK_H
+#ifndef COMMON_H
+# define COMMON_H
-#include <stdlib.h>
-#include "libft.h"
+# include <stdlib.h>
+# include "libft.h"
typedef enum
{
@@ -23,55 +22,55 @@ typedef enum
STATUS_FAILURE,
STATUS_ERROR,
STATUS_EOF,
-} t_status;
+} t_status;
typedef enum
{
STACK_NO_TAG,
STACK_A,
STACK_B
-} t_stack_tag;
+} t_stack_tag;
-typedef struct
+typedef struct s_stack
{
- int *elements;
+ int *elements;
t_stack_tag tag;
- int top;
+ int top;
} t_stack;
/*
** stack_core.c
*/
-t_stack *stack_new(int size);
-void 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);
+t_stack *stack_new(int size);
+void 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);
/*
** stack_op.c
*/
-void stack_swap(t_stack *stack);
-void stack_push_to(t_stack *from, t_stack *to);
-void stack_rotate(t_stack *stack);
-void stack_reverse_rotate(t_stack *stack);
+void stack_swap(t_stack *stack);
+void stack_push_to(t_stack *from, t_stack *to);
+void stack_rotate(t_stack *stack);
+void stack_reverse_rotate(t_stack *stack);
/*
** stack_helper.c
*/
-void stack_swap_2(t_stack *stack_a, t_stack *stack_b);
-void stack_rotate_2(t_stack *stack_a, t_stack *stack_b);
-void stack_reverse_rotate_2(t_stack *stack_a, t_stack *stack_b);
-t_bool stack_empty(t_stack *stack);
-int stack_length(t_stack *stack);
+void stack_swap_2(t_stack *stack_a, t_stack *stack_b);
+void stack_rotate_2(t_stack *stack_a, t_stack *stack_b);
+void stack_reverse_rotate_2(t_stack *stack_a, t_stack *stack_b);
+t_bool stack_empty(t_stack *stack);
+int stack_length(t_stack *stack);
/*
** parse.c
*/
-t_status parse(int argc, char **argv, t_stack *a);
+t_status parse(int argc, char **argv, t_stack *a);
#endif
diff --git a/src/common/stack_core.c b/src/common/stack_core.c
index bf766d4..adab5b1 100644
--- a/src/common/stack_core.c
+++ b/src/common/stack_core.c
@@ -6,13 +6,13 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/01/19 06:37:45 by cacharle #+# #+# */
-/* Updated: 2020/01/19 13:33:08 by cacharle ### ########.fr */
+/* Updated: 2020/01/22 10:23:18 by cacharle ### ########.fr */
/* */
/* ************************************************************************** */
#include "common.h"
-t_stack *stack_new(int size)
+t_stack *stack_new(int size)
{
t_stack *stack;
@@ -28,7 +28,7 @@ t_stack *stack_new(int size)
return (stack);
}
-void stack_destroy(t_stack *stack)
+void stack_destroy(t_stack *stack)
{
if (stack == NULL)
return ;
@@ -36,20 +36,20 @@ void stack_destroy(t_stack *stack)
free(stack);
}
-void stack_push(t_stack *stack, int n)
+void stack_push(t_stack *stack, int n)
{
stack->top++;
stack->elements[stack->top] = n;
}
-void stack_pop(t_stack *stack)
+void stack_pop(t_stack *stack)
{
if (stack_empty(stack))
return ;
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 31d0fea..968060f 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/21 11:08:06 by cacharle ### ########.fr */
+/* Updated: 2020/01/22 10:22:54 by cacharle ### ########.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);