From: Lukáš Jiřiště Date: Fri, 16 Feb 2024 22:00:58 +0000 (+0100) Subject: Add ID to t_node so that it can be drawn easily. X-Git-Url: https://git.ljiriste.work/?a=commitdiff_plain;h=ee7c94b90b6363fecd3fe42bce4620ac44c13ae5;p=FET_sim.git Add ID to t_node so that it can be drawn easily. --- diff --git a/inc/FET_sim.h b/inc/FET_sim.h index 612fc5d..4647b11 100644 --- a/inc/FET_sim.h +++ b/inc/FET_sim.h @@ -27,6 +27,7 @@ typedef enum e_terminal typedef struct s_node { + size_t id; int checked; t_state state; t_state set_state; @@ -102,7 +103,7 @@ int process_input(t_vec *nodes, t_vec *mosfets); int get_input(t_input *input); const char *state_color_escape(t_state state); -void draw_single(t_vec *nodes, t_vec *mosfets, size_t i); +void draw_single(t_vec *mosfets, size_t i); void update_nodes(t_vec *nodes); int sim_step(t_vec *nodes, t_vec *mosfets); @@ -120,7 +121,7 @@ t_state reduce_state(t_state state); int c_addfet(t_input input, t_vec *mosfets); int c_addnode(t_input input, t_vec *nodes); int c_bind(t_input input, t_vec *nodes, t_vec *mosfets); -int c_draw(t_input input, t_vec *nodes, t_vec *mosfets); +int c_draw(t_input input, t_vec *mosfets); int c_help(t_input input); int c_next(t_input input, t_vec *nodes, t_vec *mosfets); int c_setnode(t_input input, t_vec *nodes); diff --git a/src/build_helper.c b/src/build_helper.c index 20a9f7d..5a856f2 100644 --- a/src/build_helper.c +++ b/src/build_helper.c @@ -36,6 +36,7 @@ void add_node(t_vec *nodes, t_state set_state) t_node node; ft_memset(&node, 0, sizeof(node)); + node.id = nodes->size; node.checked = 0; node.state = set_state; node.set_state = set_state; diff --git a/src/c_draw.c b/src/c_draw.c index b9d354c..b0d8a7e 100644 --- a/src/c_draw.c +++ b/src/c_draw.c @@ -1,7 +1,7 @@ #include "FET_sim.h" #include "libft.h" -int c_draw(t_input input, t_vec *nodes, t_vec *mosfets) +int c_draw(t_input input, t_vec *mosfets) { size_t i; @@ -10,13 +10,13 @@ int c_draw(t_input input, t_vec *nodes, t_vec *mosfets) i = 0; while (i < mosfets->size) { - draw_single(nodes, mosfets, i); + draw_single(mosfets, i); ++i; } } else if (input.argc == 1 && input.argv[0].type == num) { - draw_single(nodes, mosfets, input.argv[0].val.num); + draw_single(mosfets, input.argv[0].val.num); } /*else { diff --git a/src/colors.c b/src/colors.c index deb0795..21f75cd 100644 --- a/src/colors.c +++ b/src/colors.c @@ -20,15 +20,14 @@ const char *state_color_escape(t_state state) return (g_red_ac); } -void draw_single(t_vec *nodes, t_vec *mosfets, size_t i) +void draw_single(t_vec *mosfets, size_t i) { t_mosfet *mosfet; - size_t index; mosfet = ft_vec_access(mosfets, i); - if (ft_vec_find_index(nodes, mosfet->source, &index) == success) + if (mosfet->source) { - ft_printf(" %u\n", index); + ft_printf(" %u\n", mosfet->source->id); ft_printf(" %s|%s\n", state_color_escape(mosfet->source->state), g_default_ac); } else @@ -36,14 +35,14 @@ void draw_single(t_vec *nodes, t_vec *mosfets, size_t i) ft_printf(" %sNULL%s\n", g_red_ac, g_default_ac); ft_printf(" %s|%s\n", g_red_ac, g_default_ac); } - if (ft_vec_find_index(nodes, mosfet->gate, &index) == success) - ft_printf("%4u%s--%s%c\n", index, state_color_escape(mosfet->gate->state), g_default_ac, mosfet->type); + if (mosfet->gate) + ft_printf("%4u%s--%s%c\n", mosfet->gate->id, state_color_escape(mosfet->gate->state), g_default_ac, mosfet->type); else ft_printf("%sNULL--%s%c\n", g_red_ac, g_default_ac, mosfet->type); - if (ft_vec_find_index(nodes, mosfet->drain, &index) == success) + if (mosfet->drain) { ft_printf(" %s|%s\n", state_color_escape(mosfet->drain->state), g_default_ac); - ft_printf(" %u\n\n", index); + ft_printf(" %u\n\n", mosfet->drain->id); } else { diff --git a/src/main.c b/src/main.c index 9d51dfb..e7e9ab3 100644 --- a/src/main.c +++ b/src/main.c @@ -244,7 +244,7 @@ int process_input(t_vec *nodes, t_vec *mosfets) if (input.command == next) res = c_next(input, nodes, mosfets); else if (input.command == draw) - res = c_draw(input, nodes, mosfets); + res = c_draw(input, mosfets); else if (input.command == setnode) res = c_setnode(input, nodes); else if (input.command == addnode)