typedef unsigned long t_id;
+typedef enum e_orientation
+{
+ UP,
+ RIGHT,
+ DOWN,
+ LEFT,
+} t_orientation;
+
+typedef chtype t_symbol;
+
+typedef struct s_position
+{
+ long x;
+ long y;
+} t_position;
+
+typedef struct s_node_segment
+{
+ t_position position;
+ t_symbol symbol;
+} t_node_segment;
+
typedef struct s_node
{
t_id id;
t_state state;
t_state set_state;
t_vec connected;
+ t_vec segments;
} t_node;
typedef struct s_mosfet
{
- t_id id;
- int is_opened;
- t_type type;
- t_node *gate;
- t_node *source;
- t_node *drain;
-} t_mosfet;
+ t_id id;
+ int is_opened;
+ t_type type;
+ t_node *gate;
+ t_node *source;
+ t_node *drain;
+ t_position position;
+ t_orientation orientation;
+} t_mosfet;
typedef enum e_command
{
} t_windows;
t_node *add_node(t_vec *nodes, t_state set_state);
-t_mosfet *add_mosfet(t_vec *mosfets, t_type type);
+t_mosfet *add_mosfet(t_vec *mosfets, t_type type, t_position pos, t_orientation orient);
t_node *get_node_by_id(t_vec *nodes, t_id id);
t_mosfet *get_mosfet_by_id(t_vec *mosfets, t_id id);
void bind_fet_node(t_mosfet *mosfet, t_node *node, t_terminal terminal);
node.state = set_state;
node.set_state = set_state;
ft_vec_init(&node.connected, sizeof(t_mosfet *));
+ ft_vec_init(&node.segments, sizeof(t_node_segment));
ft_vec_append(nodes, &node);
return (ft_vec_access(nodes, nodes->size - 1));
}
-t_mosfet *add_mosfet(t_vec *mosfets, t_type type)
+t_mosfet *add_mosfet(t_vec *mosfets, t_type type, t_position pos, t_orientation orient)
{
t_mosfet mosfet;
mosfet.gate = NULL;
mosfet.drain = NULL;
mosfet.source = NULL;
+ mosfet.position = pos;
+ mosfet.orientation = orient;
ft_vec_append(mosfets, &mosfet);
return (ft_vec_access(mosfets, mosfets->size - 1));
}
}
while (num > 0)
{
- mosfet = add_mosfet(mosfets, input.argv[0].val.type);
+ mosfet = add_mosfet(mosfets, input.argv[0].val.type, (t_position){.x = -2, .y = -2}, LEFT);
if (!mosfet)
return (0);
wprintw(command_win, "%lu ", mosfet->id);