diff --git a/includes/lem_in.h b/includes/lem_in.h index a43a9a1..5978dec 100644 --- a/includes/lem_in.h +++ b/includes/lem_in.h @@ -6,7 +6,7 @@ /* By: tmaze +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/03/23 17:31:19 by tmaze #+# #+# */ -/* Updated: 2019/05/06 07:39:55 by mndhlovu ### ########.fr */ +/* Updated: 2019/05/09 17:39:33 by mndhlovu ### ########.fr */ /* */ /* ************************************************************************** */ @@ -64,6 +64,7 @@ typedef struct s_holder int s_pos; int error; int s_error; + int state; int e_error; int v_error; int l_error; @@ -94,12 +95,14 @@ typedef struct s_lmdata int lm_parser(t_lmdata *ldata , t_holder *holder); -int lm_check_room_before(char **tab, t_holder *holder); -void lm_clear_unv(t_holder *holder, t_lmdata *ldata); +int lm_check_room_before(char **tab, t_holder *holder + , char **name); +void lm_clear_unv(t_holder *holder); int lm_add_vertex(t_lmdata *ldata, char *raw, char flag , t_holder *holder); int lm_ext_conn(t_holder *holder, t_lmdata *data , char *raw); +void lm_ext_conn_sub(t_holder *holder, t_temp *new_data); int lm_init_src_dest(int *src, int *dest, t_lmdata *data , char *raw); int lm_find_index(t_lmdata *data, char *str); diff --git a/map4 b/map4 new file mode 100644 index 0000000..1a43af6 --- /dev/null +++ b/map4 @@ -0,0 +1,28 @@ +10 +##start +1 23 3 +2 16 7 +#commentaire +3 16 3 +4 16 5 +5 9 3 +6 1 5 +7 4 8 +##end +0 9 5 +0-4 +10 9 5 +0-6 +1-3 +4-3 +5-2 +3-5 +#autre commentaire +4-2 +2-1 +7-6 +7-2 +7-4 +#C'est la fin +6-5 +#autre commentaire diff --git a/srcs/lem_in.c b/srcs/lem_in.c index a1b336a..0164c37 100644 --- a/srcs/lem_in.c +++ b/srcs/lem_in.c @@ -6,7 +6,7 @@ /* By: mndhlovu +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/03/25 06:31:05 by mndhlovu #+# #+# */ -/* Updated: 2019/05/09 16:24:17 by tmaze ### ########.fr */ +/* Updated: 2019/05/09 17:38:50 by mndhlovu ### ########.fr */ /* */ /* ************************************************************************** */ @@ -50,7 +50,7 @@ static int lem_in(t_holder *holder, return (0); if ((lm_adj_parser(lmdata, holder) == 0)) return (0); - lm_clear_unv(holder, lmdata); + lm_clear_unv(holder); if (start_end_link(lmdata, get_node_role(lmdata, 's')->ind , get_node_role(lmdata, 'e')->ind)) { @@ -59,6 +59,7 @@ static int lem_in(t_holder *holder, } else if (!do_algorithm(lmdata, ret)) return (0); + del_map(lmdata); return (1); } diff --git a/srcs/lm_check_errors.c b/srcs/lm_check_errors.c index 4640f25..bce4e9a 100644 --- a/srcs/lm_check_errors.c +++ b/srcs/lm_check_errors.c @@ -6,18 +6,23 @@ /* By: mndhlovu +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/04/22 08:55:30 by mndhlovu #+# #+# */ -/* Updated: 2019/05/06 07:34:46 by mndhlovu ### ########.fr */ +/* Updated: 2019/05/09 17:37:23 by mndhlovu ### ########.fr */ /* */ /* ************************************************************************** */ #include "lem_in.h" -int lm_check_room_before(char **tab, t_holder *holder) +int lm_check_room_before(char **tab, t_holder *holder + , char **name) { if (tab[0] != NULL && tab[1] != NULL && tab[2] != NULL) { - if (lm_validate_rooms(tab[0], tab[1], tab[2])) + if (lm_validate_rooms(tab[0], tab[1], tab[2]) && !holder->state) + { + if (!(*name = ft_strdup(tab[0]))) + return (0); return (1); + } } holder->v_error = 1; return (0); @@ -45,7 +50,7 @@ int lm_check_forbiden_chars(char *line, int flag) return (0); } -void lm_clear_unv(t_holder *holder, t_lmdata *ldata) +void lm_clear_unv(t_holder *holder) { t_temp *data; t_temp *flush; @@ -59,7 +64,6 @@ void lm_clear_unv(t_holder *holder, t_lmdata *ldata) flush = NULL; } holder->data = NULL; - del_map(ldata); } int lm_verify_links(t_holder *data, t_holder *hold) @@ -83,6 +87,6 @@ int lm_verify_cmd(t_holder *holder && lm_verify_links(holder, holder) && (data->nb_nodes > 0)) return (1); - lm_clear_unv(holder, data); + lm_clear_unv(holder); return (0); } diff --git a/srcs/lm_data_utils.c b/srcs/lm_data_utils.c index 582cfbc..f255dcb 100644 --- a/srcs/lm_data_utils.c +++ b/srcs/lm_data_utils.c @@ -6,7 +6,7 @@ /* By: mndhlovu +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/04/05 06:35:40 by mndhlovu #+# #+# */ -/* Updated: 2019/04/30 07:14:50 by mndhlovu ### ########.fr */ +/* Updated: 2019/05/09 17:35:34 by mndhlovu ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/lm_graph_utils.c b/srcs/lm_graph_utils.c index cffc110..1e269ce 100644 --- a/srcs/lm_graph_utils.c +++ b/srcs/lm_graph_utils.c @@ -6,7 +6,7 @@ /* By: mndhlovu +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/03/29 07:17:06 by mndhlovu #+# #+# */ -/* Updated: 2019/04/30 07:15:04 by mndhlovu ### ########.fr */ +/* Updated: 2019/05/09 17:26:36 by mndhlovu ### ########.fr */ /* */ /* ************************************************************************** */ @@ -29,6 +29,16 @@ static int is_link_in(t_lmdata *data, int src, int dest) return (0); } +void lm_ext_conn_sub(t_holder *holder, t_temp *new_data) +{ + t_temp *temp; + + temp = holder->data; + while (temp->next) + temp = temp->next; + temp->next = new_data; +} + int lm_adj_parser(t_lmdata *lmdata, t_holder *holder) { t_temp *data; diff --git a/srcs/lm_initdata.c b/srcs/lm_initdata.c index 65890ae..aa4bbcb 100644 --- a/srcs/lm_initdata.c +++ b/srcs/lm_initdata.c @@ -6,7 +6,7 @@ /* By: tmaze +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/03/23 17:43:34 by tmaze #+# #+# */ -/* Updated: 2019/05/06 07:25:15 by mndhlovu ### ########.fr */ +/* Updated: 2019/05/09 17:35:50 by mndhlovu ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/lm_mem_utils.c b/srcs/lm_mem_utils.c index 02069f8..d76ce48 100644 --- a/srcs/lm_mem_utils.c +++ b/srcs/lm_mem_utils.c @@ -6,7 +6,7 @@ /* By: mndhlovu +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/03/25 06:31:37 by mndhlovu #+# #+# */ -/* Updated: 2019/05/06 07:34:54 by mndhlovu ### ########.fr */ +/* Updated: 2019/05/09 17:33:39 by mndhlovu ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,7 +23,7 @@ void lm_init_data(t_holder *holder, t_lmdata *ldata) holder->l_error = 0; holder->s_vert = 0; holder->e_vert = 0; - holder->gr_status = 0; + holder->state = 0; holder->s_pos = 0; holder->e_pos = 0; holder->v_flag = 0; @@ -57,18 +57,15 @@ int lm_add_vertex(t_lmdata *ldata, char *raw, char flag, { char **tab; t_node *new; + char *str; if (!(new = (t_node *)ft_memalloc(sizeof(t_node)))) return (0); - tab = ft_strsplit(raw, ' '); - if (tab != NULL) + if ((tab = ft_strsplit(raw, ' ')) != NULL) { - if (lm_check_room_before(tab, holder)) + if (lm_check_room_before(tab, holder, &str)) { - if ((new->name = ft_strdup(tab[0])) == NULL) - ft_del_words_tables(&tab); - if (new->name == NULL) - return (0); + new->name = str; new->x = ft_atoi(tab[1]); new->y = ft_atoi(tab[2]); new->role = flag; @@ -100,7 +97,6 @@ int lm_find_index(t_lmdata *data, char *str) int lm_ext_conn(t_holder *holder, t_lmdata *data, char *raw) { - t_temp *temp; t_temp *new; int src; int dest; @@ -115,13 +111,9 @@ int lm_ext_conn(t_holder *holder, t_lmdata *data, char *raw) if (holder->data == NULL) holder->data = new; else - { - temp = holder->data; - while (temp->next) - temp = temp->next; - temp->next = new; - } + lm_ext_conn_sub(holder, new); (holder->count)++; + holder->state = 1; return (1); } free(new); diff --git a/srcs/lm_parser.c b/srcs/lm_parser.c index e80968e..29d3b08 100644 --- a/srcs/lm_parser.c +++ b/srcs/lm_parser.c @@ -6,7 +6,7 @@ /* By: mndhlovu +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/04/20 15:24:51 by mndhlovu #+# #+# */ -/* Updated: 2019/05/02 13:35:43 by mndhlovu ### ########.fr */ +/* Updated: 2019/05/09 16:55:53 by mndhlovu ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/srcs/lm_utils_parser.c b/srcs/lm_utils_parser.c index eacd9b5..77ed3ca 100644 --- a/srcs/lm_utils_parser.c +++ b/srcs/lm_utils_parser.c @@ -6,7 +6,7 @@ /* By: mndhlovu +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2019/04/04 09:24:45 by mndhlovu #+# #+# */ -/* Updated: 2019/05/06 07:25:00 by mndhlovu ### ########.fr */ +/* Updated: 2019/05/09 17:40:24 by mndhlovu ### ########.fr */ /* */ /* ************************************************************************** */