#define _CONDUCTO_H_
#include "transport.h"
+#include <iostream>
+#include <sstream>
namespace PlaQui {
virtual void update(int dir=OUT);
virtual void simulate();
+ virtual void get_state_as_xml(std::stringstream &out);
protected:
private:
Conduct():Transport("null") {}
/// 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
#include <list>
#include <string>
+#include <sstream>
#include "pump.h"
#include "splitter.h"
#include "union.h"
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.
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;
};
}
#include "conduct.h"
-#include <iostream>
using namespace PlaQui::Model;
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;
+}
+
int i=0;
while (i<10) {
sim->simulate();
+
+ std::cout << sim->get_state_as_xml() << std::endl << std::endl;
i++;
}
Simulator::Simulator(const std::string &filename)
{
+ frame = 0;
/* Parseo de ejemplo de un XML desde archivo */
xmlDocPtr document;
document = xmlParseFile(filename.c_str());
std::list<PlantItem *>::iterator i2;
for(i2=items.begin(); i2!=items.end(); i2++)
(*i2)->simulate();
+
+ frame++;
}
IConector *Simulator::find(const std::string &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();;
+}
+