]> git.llucax.com Git - z.facultad/75.42/plaqui.git/commitdiff
* Se agrega la exclusa (alguien lo traduce ?, solo se me ocurre CutKey)
authorRicardo Markiewicz <gazer.arg@gmail.com>
Thu, 6 Nov 2003 03:19:49 +0000 (03:19 +0000)
committerRicardo Markiewicz <gazer.arg@gmail.com>
Thu, 6 Nov 2003 03:19:49 +0000 (03:19 +0000)
 * Se agrega herencia virtual de Drain y Source sobre Control, para poder poner
   el tanque. Se ajustan Pump y Drainage para que anden con el nuevo modelo de
   herencia.

Model/include/drain.h
Model/include/drainage.h
Model/include/exclusa.h [new file with mode: 0644]
Model/include/pump.h
Model/include/source.h
Model/src/drainage.cpp
Model/src/exclusa.cpp [new file with mode: 0644]
Model/src/pump.cpp

index a24c9a3fcce03520142851251990bb59585f8b67..25f75d850d20c76d169630f4f043fa4a4be5d762 100644 (file)
@@ -9,7 +9,7 @@ namespace PlaQui {
 namespace Model {
 
 /** Modela objetos que recibe liquido */
-class Drain:public Control {
+class Drain:virtual public Control {
 public:
        /// Constructor
        Drain(const std::string &_name);
index 0491fff7a1059849521662dec4084f2c90c81e2f..2ec4d2bca0f1a4d031bbb6a5213114110046e2e6 100644 (file)
@@ -26,7 +26,7 @@ public:
        virtual void set_capacity(float _f) { /* IGNORO EL CAMBIO DE CAPACIDAD! */ }
 protected:
 private:
-       Drainage(const Drainage &):Drain("null") {}
+       Drainage(const Drainage &):Drain("null"),Control("null") {}
        Drainage &operator = (const Drainage &) { return *this; }
 };
 
diff --git a/Model/include/exclusa.h b/Model/include/exclusa.h
new file mode 100644 (file)
index 0000000..db24be4
--- /dev/null
@@ -0,0 +1,33 @@
+
+#ifndef _EXCLUSE_H_
+#define _EXCLUSE_H_
+
+#include "control.h"
+
+namespace PlaQui {
+
+namespace Model {
+
+class Exclusa:public Control {
+public:
+       /// Constructor
+       Exclusa(const std::string &_name);
+       /// Destructor
+       virtual ~Exclusa();
+
+       virtual void update(int dir=OUT);
+       virtual void simulate();
+       virtual void recieve_msg(int msg, IConector *who, void *data);
+       
+       virtual bool get_output() { return open; }
+protected:
+       bool open;
+private:
+       Exclusa():Control("null") {}
+       Exclusa &operator = (const Exclusa &) { return *this; }
+};
+
+}
+}
+
+#endif // _EXCLUSE_H_
index ab7966ffe2b33f8228d6b211e955b7a2eca70440..6d137623b4e9336b72e677c83141bde609e258e7 100644 (file)
@@ -51,7 +51,7 @@ protected:
         */
        bool active;
 private:
-       Pump(const Pump &):Source("null") {}
+       Pump(const Pump &):Source("null"),Control("null") {}
        Pump &operator = (const Pump &) { return *this; }
 };
 
index fde6511666fd824ce4e17f4104e7aa5f1026dc18..8874dacb4b0d5337f3081b9976e6016e200e4e79 100644 (file)
@@ -9,7 +9,7 @@ namespace PlaQui {
 namespace Model {
 
 /** Modela objetos desde donde fluye liquido */
-class Source:public Control {
+class Source:virtual public Control {
 public:
        /// Constructor
        Source(const std::string &_name);
index 95c55e8c2bfbbefed375c2762cc4d026d167193b..ac2868a5155a6f3b359eb3b026399a8864540f86 100644 (file)
@@ -4,7 +4,7 @@
 
 using namespace PlaQui::Model;
 
-Drainage::Drainage(const std::string &_name):Drain(_name)
+Drainage::Drainage(const std::string &_name):Drain(_name),Control(_name)
 {
        in_slots = 1;
        out_slots = 0;
diff --git a/Model/src/exclusa.cpp b/Model/src/exclusa.cpp
new file mode 100644 (file)
index 0000000..553c8ce
--- /dev/null
@@ -0,0 +1,42 @@
+
+#include "exclusa.h"
+#include <iostream>
+
+using namespace PlaQui::Model;
+
+Exclusa::Exclusa(const std::string &_name):Control(_name)
+{
+       open = true;
+       in_slots = out_slots = 1;
+}
+
+Exclusa::~Exclusa()
+{
+}
+
+void Exclusa::update(int dir)
+{
+       // no hace nada
+}
+
+void Exclusa::simulate()
+{
+       std::cout << name << ": " << ((open)?"Abierta":"Cerrada") << std::endl;
+}
+
+void Exclusa::recieve_msg(int msg, IConector *who, void *data)
+{
+       float temp;
+       switch (msg) {
+               case MSG_QUERY_MAX_FLOW_OUT:
+                       temp = *((float *)data);
+                       send_msg(OUT, MSG_QUERY_MAX_FLOW_OUT, &temp);
+               break;
+               case MSG_RESPONSE_MAX_FLOW:
+                       temp = *((float *)data);
+               break;
+               default:
+                       Control::recieve_msg(msg, who, data);
+       }
+}
+       
index 086138f4844358407790d7d32da462ba3b3fc108..78d4dcd9f2e4ee6d3aaf96072e2700093f95f5a3 100644 (file)
@@ -4,7 +4,7 @@
 
 using namespace PlaQui::Model;
 
-Pump::Pump(const std::string &_name):Source(_name)
+Pump::Pump(const std::string &_name):Source(_name),Control(_name)
 {
        in_slots = 0;
        out_slots = 1;