]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blob - Model/include/tank.h
Se agrega al EXAMPLE_PATH Constructor/doc para los ejemplos de XML.
[z.facultad/75.42/plaqui.git] / Model / include / tank.h
1
2
3 #ifndef _TANK_H_
4 #define _TANK_H_
5
6 #include "source.h"
7 #include "drain.h"
8
9 namespace PlaQui {
10         
11 namespace Model {
12
13 /** Tanque de Agua/Líquido
14  *
15  *  Se modela un tanque con una entrada y una salida. La cantidad máxima
16  *  de flujo entrante estará dada por la diferencia entre la capacidad
17  *  y la cantidad actual de líquido en el tanque.
18  *  La cantidad máxima de flujo que puede ofrecer a la salida está dada
19  *  por la cantidad de líquido en el tanque.
20  */ 
21 class Tank:public Source, public Drain {
22 public:
23         /// Constructor
24         Tank(const std::string &_name);
25         /// Destructor
26         virtual ~Tank();
27
28         virtual bool get_output();
29
30         virtual void recieve_msg(int msg, IConector *who, void *data);
31         virtual void update(int dir=OUT);
32         virtual void simulate();
33
34         void set_litros(float l) { litros = l; }
35         float get_litros() { return litros; }
36         void get_state_as_xml(std::stringstream &out);
37 protected:
38         float litros;   ///< cantidad de líquido actual
39         float actual_in_flow; ///< flujo máximo a la entrada
40         float actual_out_flow; ///< flujo máximo de la salida
41 private:
42         Tank():Control("null"),Source("null"),Drain("null") {}
43         Tank &operator = (const Tank &) { return *this; } 
44 };
45
46 }
47 }
48
49 #endif // _TANK_H_
50