]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Model/src/simulator.cpp
Se agrega generacion de XML para dar el estado actual de la planta simulada.
[z.facultad/75.42/plaqui.git] / Model / src / simulator.cpp
index c5eb3818d2d86511f17bdee705e74d4573e354ed..3f432b930a519544607f652cec36f12265de5ca5 100644 (file)
@@ -5,6 +5,7 @@ using namespace PlaQui::Model;
 
 Simulator::Simulator(const std::string &filename)
 {
 
 Simulator::Simulator(const std::string &filename)
 {
+       frame = 0;
        /* Parseo de ejemplo de un XML desde archivo */
        xmlDocPtr document;
        document = xmlParseFile(filename.c_str());
        /* 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();
        std::list<PlantItem *>::iterator i2;
        for(i2=items.begin(); i2!=items.end(); i2++)
                (*i2)->simulate();
+
+       frame++;
 }
 
 IConector *Simulator::find(const std::string &name)
 }
 
 IConector *Simulator::find(const std::string &name)
@@ -301,3 +304,21 @@ void Simulator::loadUnion(xmlNodePtr nodo)
        add_union(name);
 }
 
        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();;
+}
+