From 2d34349b54a9fed4d34c96bdbec5172f7695cf60 Mon Sep 17 00:00:00 2001 From: Charles Date: Sat, 18 Jan 2020 10:54:03 +0100 Subject: refactoring checker to a more simple, 'pipe' like and generic approche --- src/checker/checker.h | 42 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 5 deletions(-) (limited to 'src/checker/checker.h') diff --git a/src/checker/checker.h b/src/checker/checker.h index 1fbb46f..a6a2cc3 100644 --- a/src/checker/checker.h +++ b/src/checker/checker.h @@ -1,3 +1,15 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* checker.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/01/18 10:16:12 by cacharle #+# #+# */ +/* Updated: 2020/01/18 10:51:42 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + #ifndef CHECKER_H # define CHECKER_H @@ -9,7 +21,8 @@ typedef enum { STATUS_SUCCESS, STATUS_FAILURE, - STATUS_ERROR + STATUS_ERROR, + STATUS_EOF, } t_status; typedef enum @@ -27,12 +40,31 @@ typedef enum ACTION_RRR, ACTION_ERROR, ACTION_EOF -} t_action; +} t_action_id; + + + +# define FLAG_ARG_A (1 << 0) +# define FLAG_ARG_B (1 << 1) +# define FLAG_ARG_A_B (1 << 2) +# define FLAG_ARG_B_A (1 << 3) + +typedef char t_flag_arg; + +typedef struct +{ + char *id; + t_flag_arg args; + union + { + void (*arg_1)(t_stack *); + void (*arg_2)(t_stack *, t_stack *); + } func; +} t_action; t_status check(t_stack *a, t_stack *b); -t_action read_action(void); -t_action str_action(char *s); -void exec_action(t_action action, t_stack *a, t_stack *b); +t_status read_action(t_stack *a, t_stack *b); +t_status exec_action(char *action_id, t_stack *a, t_stack *b); t_bool stack_sorted(t_stack *stack); #endif -- cgit