From 7e9a54f8fbfb2b56d38a19d844924ea909dd3172 Mon Sep 17 00:00:00 2001 From: Ricardo Markiewicz Date: Fri, 5 Dec 2003 16:49:41 +0000 Subject: [PATCH 1/1] Se arregla un bug que hacia que la Or siempre tirara 1 a su salida, y eso hacia que no andaran bien los ejemplos con logica. La linea decia : mi_salida = mi_entrada || mi_entrada->get_output(); y como mi_entrada es un puntero valido, mi_salida siempre estaba entru :-( Ahora es : mi_salida = mi_salida || mi_entrada->get_output(); Este habria que mandarselo a Nicolas porque es importante. --- Model/include/or.h | 3 ++- Model/src/simulator.cpp | 2 +- Model/src/tank.cpp | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Model/include/or.h b/Model/include/or.h index b7d6d0c..92b5406 100644 --- a/Model/include/or.h +++ b/Model/include/or.h @@ -22,7 +22,8 @@ public: std::list::iterator it; for(it = in_list.begin(); it != in_list.end(); it++) { mi_entrada = static_cast(*it); - mi_salida = mi_entrada || mi_entrada->get_output(); + std::cout << name << " -> " << mi_entrada->get_name() << " " << mi_entrada->get_output() << std::endl; + mi_salida = mi_salida || mi_entrada->get_output(); } return mi_salida; } diff --git a/Model/src/simulator.cpp b/Model/src/simulator.cpp index be68005..6a85446 100644 --- a/Model/src/simulator.cpp +++ b/Model/src/simulator.cpp @@ -597,7 +597,7 @@ void Simulator::connect_logic(LogicControl *current, xmlNodePtr nodo) if (xmlStrcmp(nodo->name, BAD_CAST"entrada") == 0) { item = dynamic_cast(find((char *)XML_GET_CONTENT(nodo->children))); if (item != NULL) { - if (dynamic_cast(item)) { + if (dynamic_cast(item) != NULL) { std::string donde = (char *)xmlGetProp(nodo, BAD_CAST"id"); if (donde == "inferior") { current->connect( item->get_logic_output(), IConector::IN ); diff --git a/Model/src/tank.cpp b/Model/src/tank.cpp index 58a90ff..16e745c 100644 --- a/Model/src/tank.cpp +++ b/Model/src/tank.cpp @@ -12,6 +12,8 @@ Tank::Tank(const std::string &_name):Source(_name),Drain(_name),Control(_name) /* Utilizo en input como el flotante de arriba y el output como el de abajo */ input = new Condition(Condition::GT, 0.9, this); output = new Condition(Condition::LT, 0.1, this); + input->set_name(name+" superior"); + output->set_name(name+" inferior"); } Tank::~Tank() -- 2.43.0