++i;
}
i = 0;
+ while (i < node2->connected_gates.size)
+ {
+ mosfet = ft_vec_access(&node2->connected_gates, i);
+ transfer_mosfet(*mosfet, node2, node1);
+ ++i;
+ }
+ i = 0;
while (i < node2->segments.size)
{
seg = ft_vec_access(&node2->segments, i);
old = mosfet->source;
mosfet->source = node;
ft_vec_append(&node->connected, &mosfet);
+ if (old && ft_vec_find_index(&node->connected, &mosfet, &index, mosfet_identity_indirect) == success)
+ ft_vec_forget(&old->connected, index);
}
else if (terminal == drain)
{
old = mosfet->drain;
mosfet->drain = node;
ft_vec_append(&node->connected, &mosfet);
+ if (old && ft_vec_find_index(&node->connected, &mosfet, &index, mosfet_identity_indirect) == success)
+ ft_vec_forget(&old->connected, index);
}
else
{
+ old = mosfet->gate;
mosfet->gate = node;
- }
- if (old && ft_vec_find_index(&old->connected, &mosfet, &index, mosfet_identity_indirect) == success)
- {
- ft_vec_forget(&old->connected, index);
+ ft_vec_append(&node->connected_gates, &mosfet);
+ if (old && ft_vec_find_index(&node->connected_gates, &mosfet, &index, mosfet_identity_indirect) == success)
+ ft_vec_forget(&old->connected_gates, index);
}
return ;
}
node.state = set_state;
node.set_state = set_state;
ft_vec_init(&node.connected, sizeof(t_mosfet *));
+ ft_vec_init(&node.connected_gates, 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));