5 #include "logiccontrol.h"
13 class ByPass:public LogicControl {
15 ByPass():LogicControl(1,1) { control = NULL; }
18 virtual bool get_output() {
19 LogicControl *mi_entrada;
20 bool mi_salida = false;
21 // Si tengo conectado algo a mi salida, es porque
22 // le tengo que consultar a el.
23 // Si no tengo nadia a mi salida, es porque tengo
24 // que consultar a mis entradas
25 if (control == NULL) {
26 // No tengo nadie a mi salida!, pregunto a mis entradas, si es
28 if (in_list.begin() != in_list.end()) {
29 mi_entrada = (LogicControl *)(*in_list.begin());
30 mi_salida = mi_entrada->get_output();
32 mi_salida = true; // Paso true por defecto
35 mi_salida = control->get_output();
40 /** Setea el objeto a controlar
42 * El ByPass puede ser utilizado para consultar el estado
43 * de un elemento Control (utilizado en el slot output de
44 * la lógica de control) o para que un elemento de Control
45 * le pregunte por que valor tiene que tener a su entrada.
46 * Si Control == NULL se asume que esta funcionando como entrada
47 * y en caso contrario como salida de un objeto Control.
48 * \param NULL No controla a nadie
49 * \param Objeto Controla al objeto pasado
51 void set_control(Control *c) { control = c; }
53 /// Objeto a controlar