- i = lista_lineas_out.begin();
- while ( i != lista_lineas_out.end() ){
- if ( (*i).logic->get_id() == _id ) {
- lista_lineas_out.erase(i);
- i = lista_lineas_out.begin();
- }
- i++;
+
+ /* Borra la linea desde la compuerta eliminada hasta el item conectado a ella */
+ j = lista_lineas_out.begin();
+ while ( j != lista_lineas_out.end() ){
+ if ( get_logic_item((*j).logic_id) != NULL )
+ if ( get_logic_item((*j).logic_id)->get_id() == _id ) {
+ lista_lineas_out.erase(j);
+ j = lista_lineas_out.begin();
+ }
+ j++;
+ }
+
+ /* LINEAS ENTRE COMPUERTAS */
+ /* Borra la linea entre al compuerta eliminada y la que esta conectada a ella en su entrada */
+ std::list<t_line>::iterator k = lista_lineas_logic.begin();
+ while ( k != lista_lineas_logic.end() ){
+ if ( get_logic_item((*k).store_id) != NULL )
+ if ( get_logic_item((*k).store_id)->get_id() == _id ) {
+ get_logic_item((*k).logic_id)->set_out_connected(false);
+ std::cout<< get_logic_item((*k).logic_id)->get_name() <<std::endl;
+ lista_lineas_logic.erase(k);
+ k = lista_lineas_logic.begin();
+ }
+ k++;
+ }
+
+ /* Borra la linea entre al compuerta eliminada y la que esta conectada a ella en su salida*/
+ k = lista_lineas_logic.begin();
+ while ( k != lista_lineas_logic.end() ){
+ if ( get_logic_item((*k).logic_id) != NULL )
+ if ( get_logic_item((*k).logic_id)->get_id() == _id ) {
+ if (dynamic_cast<Not *>(get_logic_item((*k).store_id)))
+ get_logic_item((*k).store_id)->set_in_connected(false);
+ lista_lineas_logic.erase(k);
+ k = lista_lineas_logic.begin();
+ }
+ k++;