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.
std::list<IConector *>::iterator it;
for(it = in_list.begin(); it != in_list.end(); it++) {
mi_entrada = static_cast<LogicControl *>(*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;
}
if (xmlStrcmp(nodo->name, BAD_CAST"entrada") == 0) {
item = dynamic_cast<Control *>(find((char *)XML_GET_CONTENT(nodo->children)));
if (item != NULL) {
- if (dynamic_cast<Tank *>(item)) {
+ if (dynamic_cast<Tank *>(item) != NULL) {
std::string donde = (char *)xmlGetProp(nodo, BAD_CAST"id");
if (donde == "inferior") {
current->connect( item->get_logic_output(), IConector::IN );
/* 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()