5 #include "logiccontrol.h"
13 /** Paso directo de dato
15 * Este elemento tiene la funcionalidad para trabajar como entrada
16 * o salida de un elemento conectado.
17 * Si el elemento es utilizado como entrada, a este se le conecta
18 * lógica de control a su entrada. Cuando el elemento al que sirve
19 * requiere saber su estado, llama al método get_output de este objeto
20 * y este le responde segun corresponda.
21 * Si este objeto es utilizado como salida, se le debe asignar un
22 * elemento a quién controlar. Cuando la lógica de control llama
23 * al get_output de éste objeto, éste le consulta al objeto a quién
24 * controla para pasar el dato al circuito lógico.
28 class ByPass:public LogicControl {
30 ByPass():LogicControl(1,1) { control = NULL; }
33 virtual bool get_output() {
34 LogicControl *mi_entrada;
35 bool mi_salida = false;
36 // Si tengo asignado un objeto a quien controlar, es porque
37 // le tengo que consultar a el.
38 // Si no, es porque tengo que consultar a mis entradas
39 if (control == NULL) {
40 // No tcontrolo a nadie!, pregunto a mi entradas, si es
42 if (in_list.begin() != in_list.end()) {
43 mi_entrada = (LogicControl *)(*in_list.begin());
44 mi_salida = mi_entrada->get_output();
46 mi_salida = true; // Paso true por defecto
49 mi_salida = control->get_output();
54 /** Setea el objeto a controlar
56 * El ByPass puede ser utilizado para consultar el estado
57 * de un elemento Control (utilizado en el slot output de
58 * la lógica de control) o para que un elemento de Control
59 * le pregunte por que valor tiene que tener a su entrada.
60 * Si Control == NULL se asume que esta funcionando como entrada
61 * y en caso contrario como salida de un objeto Control.
62 * \param NULL No controla a nadie
63 * \param Objeto Controla al objeto pasado
65 void set_control(Control *c) { control = c; }
67 /// Objeto a controlar