]> git.llucax.com Git - z.facultad/75.42/plaqui.git/commitdiff
Se agrega generacion de XML para dar el estado actual de la planta simulada.
authorRicardo Markiewicz <gazer.arg@gmail.com>
Mon, 17 Nov 2003 03:48:51 +0000 (03:48 +0000)
committerRicardo Markiewicz <gazer.arg@gmail.com>
Mon, 17 Nov 2003 03:48:51 +0000 (03:48 +0000)
Model/include/conduct.h
Model/include/plantitem.h
Model/include/simulator.h
Model/src/conduct.cpp
Model/src/main.cpp
Model/src/simulator.cpp

index 7013622dc2830993e813bd811b66bc74b15e9b0a..edf23fd83eca368e67d5ebd6a9770eedc645ee27 100644 (file)
@@ -4,6 +4,8 @@
 #define _CONDUCTO_H_
 
 #include "transport.h"
+#include <iostream>
+#include <sstream>
 
 namespace PlaQui {
 
@@ -26,6 +28,7 @@ public:
        virtual void update(int dir=OUT);
        virtual void simulate();
 
+       virtual void get_state_as_xml(std::stringstream &out);
 protected:
 private:
        Conduct():Transport("null") {}
index 8c083ddb0e9cc1e2c03b72ec2c25746eb90c026b..880864136b2f6084cb23a99564c169eca6a9728d 100644 (file)
@@ -70,6 +70,7 @@ public:
        
        /// Retorna el flujo actual que maneja el objeto.
        float get_actual_flow() { return actual_flow; }
+       virtual void get_state_as_xml(std::stringstream &out) { } 
 protected:
        RGB fluid_color;
        // es de solo lectura
index 8fe8dabc246d29a73fb673298460ad1507051457..cb86d15b869a33234b408e8d9a641157dbfb3242 100644 (file)
@@ -5,6 +5,7 @@
 
 #include <list>
 #include <string>
+#include <sstream>
 #include "pump.h"
 #include "splitter.h"
 #include "union.h"
@@ -31,6 +32,9 @@ public:
        void add_tank(const std::string &name);
        void add_drainage(const std::string &name);
 
+       /** Retorna el estado de todos los items como un XML */
+       std::string get_state_as_xml();
+
        /** Conecta 2 elementos
         *
         *  Esta funcion conecta el elemanto name1 con el elemento name2.
@@ -71,6 +75,9 @@ protected:
        void loadExclusa(xmlNodePtr nodo);
        void loadTank(xmlNodePtr nodo);
        void loadUnion(xmlNodePtr nodo);
+
+       // Frame. Define el orden para los cuadros del XML
+       unsigned long int frame;
 };
 
 }
index 4a4e731665ddaf96f29e15b6efb8761d94ed1ca5..63cd7e953638a03d5fff4895a165d87b55b3b81d 100644 (file)
@@ -1,6 +1,5 @@
 
 #include "conduct.h"
-#include <iostream>
 
 using namespace PlaQui::Model;
 
@@ -76,3 +75,10 @@ void Conduct::simulate()
        actual_flow = 99999;
 }
 
+void Conduct::get_state_as_xml(std::stringstream &out)
+{
+       out << "\t<conduct name=\"" << name << "\">" << std::endl;
+       out << "\t\t<actual_flow>" << actual_flow << "</actual_flow>" << std::endl;
+       out << "\t</conduct>" << std::endl;
+}
+
index 1151dcfa642feb2970f9e59e453a38f37ad92956..a656492b6385d9122ffdfa2e0f0cdc390e547b78 100644 (file)
@@ -21,6 +21,8 @@ int main(int argc, char *argv[])
        int i=0;
        while (i<10) {
                sim->simulate();
+
+               std::cout << sim->get_state_as_xml() << std::endl << std::endl;
                i++;
        }
 
index c5eb3818d2d86511f17bdee705e74d4573e354ed..3f432b930a519544607f652cec36f12265de5ca5 100644 (file)
@@ -5,6 +5,7 @@ using namespace PlaQui::Model;
 
 Simulator::Simulator(const std::string &filename)
 {
+       frame = 0;
        /* Parseo de ejemplo de un XML desde archivo */
        xmlDocPtr document;
        document = xmlParseFile(filename.c_str());
@@ -140,6 +141,8 @@ void Simulator::simulate()
        std::list<PlantItem *>::iterator i2;
        for(i2=items.begin(); i2!=items.end(); i2++)
                (*i2)->simulate();
+
+       frame++;
 }
 
 IConector *Simulator::find(const std::string &name)
@@ -301,3 +304,21 @@ void Simulator::loadUnion(xmlNodePtr nodo)
        add_union(name);
 }
 
+
+std::string Simulator::get_state_as_xml()
+{
+       std::stringstream out;
+
+       // XML Header
+       out << "<?xml version=\"1.0\" ?>" << std::endl;
+
+       out << "<plantstatus frame=\"" << frame << "\">" << std::endl;
+       
+       std::list<PlantItem *>::iterator i2;
+       for(i2=items.begin(); i2!=items.end(); i2++)
+               (*i2)->get_state_as_xml(out);
+
+       out << "</plantstatus>";
+       return out.str();;
+}
+