/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* lem_in.h :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: tmaze +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/03/23 17:31:19 by tmaze #+# #+# */ /* Updated: 2019/04/11 10:50:04 by tmaze ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef LEM_IN_H # define LEM_IN_H # include "libft.h" # include "limits.h" typedef struct s_node { char *name; int x; int y; char role; int ind; struct s_node *next; } t_node; typedef struct s_ind { int index; int weight; struct s_ind *next; } t_ind; typedef struct s_lmdata { int nbants; int nb_nodes; t_node *nodes_data; t_ind **adj; } t_lmdata; typedef struct s_bfs { int parent; char visited; int queue; } t_bfs; typedef struct s_ants { int nb_ant; int nb_path; int nb_node; char end; struct s_ants *next; } t_ants; typedef struct s_syntax { int nb_state; int s_cmd; int s_pos; int error; int s_error; int e_error; int v_error; int l_error; int s_vert; int e_vert; int e_cmd; int e_pos; int v_flag; } t_syntax; typedef struct s_temp { int src_ind; int dest_ind; struct s_temp *next; } t_temp; typedef struct s_holder { int count; t_temp *data; } t_holder; typedef struct s_rdata { char *line; struct s_rdata *next; } t_rdata; int lm_error_exit(void); int lm_validate(t_syntax *synt, t_lmdata *lmdata); int lm_parser(t_syntax *synt, t_lmdata *ldata , t_holder *holder); int lm_check_room_before(char **tab, t_syntax *synt); int lm_add_vertex(t_lmdata *ldata, char *raw, char flag , t_syntax *synt); int lm_ext_conn(t_holder *holder, t_lmdata *data , char *raw); int lm_find_index(t_lmdata *data, char *str); int lm_get_value(char *line); void lm_get_cmd_vert(int count, t_syntax *synt , t_lmdata *ldata, char *line); void lm_get_vert_link(int count, t_syntax *synt , t_lmdata *ldata, t_holder *holder , char *line); int lm_validate_rooms(char *name, char *x, char *y); int lm_adj_parser(t_lmdata *lmdata, t_holder *holder); void lm_init_data(t_syntax *synt, t_holder *holder , t_lmdata *ldata); int lm_verify_cmd(t_syntax *synt, t_holder *holder , t_lmdata *data); void lm_initdata(t_lmdata *data); int lm_getparams(t_lmdata *data); void lm_clean_data(t_lmdata *data); t_ind **lst_indinit(t_lmdata *data); int lst_indadd_link(t_lmdata *data, int n1, int n2); t_ind *lst_indadd(t_ind **lst, int ind); void lst_inddel(t_ind **lst); void tablst_inddel(t_ind **tab); t_ants *add_ant(t_ants **ants, int nb_ant, int nb_path , t_ind **paths); void del_ants(t_ants **ants); t_node *get_node(t_lmdata *data, int index); t_ind *get_node_path(t_ind *lst, int index); void bfs(t_lmdata *data, t_bfs *tab, int start_ind , int end_ind); t_ind **edmunds_karp(t_lmdata *data, int start_ind , int end_ind); int push_ants(t_lmdata *data, t_ind **paths , int nb_paths); #endif