]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blob - Model/include/control.h
* Se arregla la union, por n-esima vez, para que actualice correctamente los flujos.
[z.facultad/75.42/plaqui.git] / Model / include / control.h
1
2 #ifndef _CONTROL_H_
3 #define _CONTROL_H_
4
5 #include "plantitem.h"
6 #include "logiccontrol.h"
7
8 namespace PlaQui {
9
10 namespace Model {
11
12 /** Elementos que pueden ser automatizados
13  *
14  *  Estos elementos tienen entradas y salidas lógicas para que dan la
15  *  posibilidad de conectar elementos \e Control entre ellos y así
16  *  poder crear circuitos "inteligentes".
17  *  \see LogicControl
18  * */
19 class Control:public PlantItem {
20 public:
21         /// Constructor
22         Control(const std::string &_name);
23         /// Destructor
24         virtual ~Control();
25
26         /// Retorna un booleano dependiendo de su estado actual
27         virtual bool get_output() = 0;
28
29         /** Conecta una lógica de control a mi entrada */
30         void connect_input_logic(LogicControl *);
31         /** Conecta una lógica de control a mi salida */
32         void connect_output_logic(LogicControl *);
33
34         LogicControl *get_logic_output() { return output; }
35         LogicControl *get_logic_input() { return input; }
36 protected:
37         LogicControl *input;
38         LogicControl *output;
39 private:
40         Control(const Control &):PlantItem("null") {}
41         Control &operator = (const Control &) { return (*this); }
42 };
43
44 }
45 }
46
47 #endif // _CONTROL_H_
48