diff --git a/libftasm/includes/btree.h b/libftasm/includes/btree.h index 6a60a5df..a711616f 100644 --- a/libftasm/includes/btree.h +++ b/libftasm/includes/btree.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/16 11:13:15 by jhalford #+# #+# */ -/* Updated: 2016/11/25 18:33:24 by jhalford ### ########.fr */ +/* Updated: 2016/11/25 20:37:02 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,9 +30,10 @@ enum e_printdata is_left, offset, depth, + left, + right, }; - t_btree *btree_create_node(void const *item, size_t content_size); void btree_insert_data( diff --git a/libftasm/includes/mytime.h b/libftasm/includes/mytime.h index ad6ec422..140e1100 100644 --- a/libftasm/includes/mytime.h +++ b/libftasm/includes/mytime.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/25 11:43:12 by jhalford #+# #+# */ -/* Updated: 2016/11/25 18:33:09 by jhalford ### ########.fr */ +/* Updated: 2016/11/25 20:26:20 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,9 +14,7 @@ # define MYTIME_H # include "libft.h" -typedef struct s_mytime t_mytime; - -struct s_mytime +struct s_mytime { char *year; char *month; @@ -26,6 +24,7 @@ struct s_mytime char *sec; }; +typedef struct s_mytime t_mytime; int ft_time_isrecent(time_t event); diff --git a/libftasm/src/btree/btree_print.c b/libftasm/src/btree/btree_print.c index 4e44e8cc..395a6a3d 100644 --- a/libftasm/src/btree/btree_print.c +++ b/libftasm/src/btree/btree_print.c @@ -6,53 +6,59 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/14 18:06:24 by jhalford #+# #+# */ -/* Updated: 2016/11/25 18:33:47 by jhalford ### ########.fr */ +/* Updated: 2016/11/25 20:44:56 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ #include "btree.h" +static int print_t2(int data[5], char s[20][255], char b[20]) +{ + int width; + int i; + + width = 5; + i = -1; + while (++i < width) + s[2 * data[depth]][data[offset] + data[left] + i] = b[i]; + i = -1; + if (data[depth] && data[is_left]) + { + while (++i < width + data[right]) + s[2 * data[depth] - 1] + [data[offset] + data[left] + width / 2 + i] = '-'; + s[2 * data[depth] - 1][data[offset] + data[left] + width / 2] = '+'; + s[2 * data[depth] - 1] + [data[offset] + data[left] + data[right] + 3 * width / 2] = '+'; + } + else if (data[depth] && !data[is_left]) + { + while (++i < width + data[left]) + s[2 * data[depth] - 1][data[offset] - width / 2 + i] = '-'; + s[2 * data[depth] - 1][data[offset] + data[left] + width / 2] = '+'; + s[2 * data[depth] - 1][data[offset] - width / 2 - 1] = '+'; + } + return (data[left] + data[width] + right); +} + static int print_t(t_btree *tree, - int data[3], char s[20][255], char *(*printer)(void *)) + int data[5], char s[20][255], char *(*printer)(void *)) { char b[20]; int width; - int left; - int right; - int i; width = 5; if (!tree) return (0); sprintf(b, "%5s", printer(tree->item)); - left = print_t(tree->left, (int[3]){ + data[left] = print_t(tree->left, (int[3]){ 1, data[offset], data[depth] + 1}, s, printer); - right = print_t(tree->right, (int[3]){ - 0, data[offset] + left + width, data[depth] + 1}, s, printer); - i = -1; - while (++i < width) - s[2 * data[depth]][data[offset] + left + i] = b[i]; - if (data[depth] && data[is_left]) - { - i = -1; - while (++i < width + right) - s[2 * data[depth] - 1][data[offset] + left + width / 2 + i] = '-'; - s[2 * data[depth] - 1][data[offset] + left + width / 2] = '+'; - s[2 * data[depth] - 1][ data[offset] + left + right + 3 * width / 2] - = '+'; - } - else if (data[depth] && !data[is_left]) - { - i = -1; - while (++i < width + left) - s[2 * data[depth] - 1][data[offset] - width / 2 + i] = '-'; - s[2 * data[depth] - 1][data[offset] + left + width / 2] = '+'; - s[2 * data[depth] - 1][data[offset] - width / 2 - 1] = '+'; - } - return (left + width + right); + data[right] = print_t(tree->right, (int[3]){ + 0, data[offset] + data[left] + width, data[depth] + 1}, s, printer); + return (print_t2(data, s, b)); } -void btree_print(t_btree *tree, char *(*printer)(void *)) +void btree_print(t_btree *tree, char *(*printer)(void *)) { char s[20][255]; char empty[255]; @@ -62,7 +68,7 @@ void btree_print(t_btree *tree, char *(*printer)(void *)) while (++i < 20) sprintf(s[i], "%80s", " "); sprintf(empty, "%80s", " "); - print_t(tree, (int[3]){0, 0, 0}, s, printer); + print_t(tree, (int[5]){0, 0, 0, 0, 0}, s, printer); i = -1; while (++i < 20) {