}
}
+
#endif // _H_SOURCE_H_
namespace Model {
/** Conector genérico de elementos
+ *
+ * El conector es un interfaz común que permite a objetos de distinto
+ * tipo comunicarse entre sí sin la necesidad de conocerse.
+ * Maneja una lista de elementos conectados a uno, que pueden estar
+ * tanto conectados a una entrada como a una salida.
*/
class IConector {
public:
namespace Model {
+/** Divisor de Flujo
+ *
+ * Divide el flujo entrante en 2 partes iguales que envía a sus salidas
+ */
class Splitter:public Transport {
public:
+ /// Constructor
Splitter(const std::string &_name);
+ /// Destructor
virtual ~Splitter();
virtual void recieve_msg(int msg, IConector *who, void *data);
namespace PlaQui {
namespace Model {
-
+
+/** Tanque de Agua/Líquido
+ *
+ * Se modela un tanque con una entrada y una salida. La cantidad máxima
+ * de flujo entrante estará dada por la diferencia entre la capacidad
+ * y la cantidad actual de líquido en el tanque.
+ * La cantidad máxima de flujo que puede ofrecer a la salida está dada
+ * por la cantidad de líquido en el tanque.
+ */
class Tank:public Source, public Drain {
public:
+ /// Constructor
Tank(const std::string &_name);
+ /// Destructor
virtual ~Tank();
virtual bool get_output();
virtual void update();
virtual void simulate();
protected:
- float litros;
- float actual_in_flow;
- float actual_out_flow;
+ float litros; ///< cantidad de líquido actual
+ float actual_in_flow; ///< flujo máximo a la entrada
+ float actual_out_flow; ///< flujo máximo de la salida
private:
Tank():Drain("null"),Source("null"),Control("null") {}
Tank &operator = (const Tank &) { return *this; }
}
#endif // _TANK_H_
+
namespace Model {
+/** Convina 2 flujos entrantes
+ *
+ * Este objeto tiene 2 entradas y una salida. El flujo entrante por cada salida
+ * se convina y se manda por la salida, aplicando la correcta suma de los colores.
+ *
+ * TODO : Hacer que anda bien
+ */
class Union:public Transport {
public:
+ /// Constructor
Union(const std::string &_name);
+ /// Destructor
virtual ~Union();
virtual void recieve_msg(int msg, IConector *who, void *data);
virtual void update(int dir=OUT);
virtual void simulate();
protected:
- int in_on_zero;
+ int in_on_zero;
int in_ready;
private:
Union(const Union &):Transport("null") {}