Include accumulators on statistics engine in order to centralize and ease asXML....
[anna.git] / source / statistics / Engine.cpp
index b90b609..ebde06c 100644 (file)
@@ -158,10 +158,10 @@ bool Engine::logSample(const int & conceptId, const anna::Millisecond & unixTime
 //------------------------------------------------------------------------------
 //----------------------------------------------------------- Engine::asString()
 //------------------------------------------------------------------------------
-Accumulator *Engine::createAccumulator() throw() {
+Accumulator *Engine::createAccumulator(const std::string &name) throw() {
   Accumulator *result;
 
-  result = new Accumulator();
+  result = new Accumulator(name);
   a_accumulators.push_back(result);
   return result;
 }
@@ -201,6 +201,14 @@ std::string Engine::asString(void) const throw() {
   }
 
   trace += "\n";
+
+  // Accumulators:
+  trace += "\nNumber of accumulators= "; trace += anna::functions::asString(a_accumulators.size());
+  for (_accumulator_vector_it it = a_accumulators.begin(); it != a_accumulators.end(); it++) {
+    trace += "\n";
+    trace += (*it)->asString();
+  }
+
   return (trace);
 }
 
@@ -230,10 +238,10 @@ anna::xml::Node* Engine::asXML(anna::xml::Node* parent, const int & numberOfDeci
   }
 
   // Accumulators:
-  for (_accumulator_vector_it it = a_accumulators.begin(); it != a_accumulators.end(); it++) {
-    anna::xml::Node* accumulators = result->createChild("anna.statistics.Accumulators");
+  anna::xml::Node* accumulators = result->createChild("anna.statistics.Accumulators");
+  accumulators->createAttribute("RegisteredAccumulators", a_accumulators.size());
+  for (_accumulator_vector_it it = a_accumulators.begin(); it != a_accumulators.end(); it++)
     (*it)->asXML(accumulators);
-  }
 
   return result;
 }