From df3a0ffec60c5102dd2127f0815b07ddab78656d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Radovan=20=C4=8Cerven=C3=BD?= <radovan.cerveny@gmail.com>
Date: Wed, 17 Feb 2016 10:45:50 +0100
Subject: [PATCH] refactored measurements xml interface

---
 .../src/measurements/MeasurementFrame.cpp     |  27 ----
 .../src/measurements/MeasurementFrame.hpp     |   1 -
 .../src/measurements/MeasurementResults.cpp   |  16 +-
 .../src/measurements/MeasurementResults.hpp   |   2 -
 .../measurements/MeasurementXmlFactory.cpp    | 142 ++++++++++++++++++
 .../measurements/MeasurementXmlFactory.hpp    |  55 +++++++
 .../measurements/frames/CounterDataFrame.cpp  |  38 -----
 .../measurements/frames/CounterDataFrame.hpp  |   1 -
 .../measurements/frames/MemoryDataFrame.cpp   |  16 --
 .../measurements/frames/MemoryDataFrame.hpp   |   1 -
 .../src/measurements/frames/TimeDataFrame.cpp |  13 --
 .../src/measurements/frames/TimeDataFrame.hpp |   1 -
 12 files changed, 200 insertions(+), 113 deletions(-)
 create mode 100644 alib2measure/src/measurements/MeasurementXmlFactory.cpp
 create mode 100644 alib2measure/src/measurements/MeasurementXmlFactory.hpp

diff --git a/alib2measure/src/measurements/MeasurementFrame.cpp b/alib2measure/src/measurements/MeasurementFrame.cpp
index 31a8d9b1a4..d78f5646ba 100644
--- a/alib2measure/src/measurements/MeasurementFrame.cpp
+++ b/alib2measure/src/measurements/MeasurementFrame.cpp
@@ -10,33 +10,6 @@ namespace measurements {
 MeasurementFrame::MeasurementFrame ( measurements::stealth_string name, measurements::Type type, unsigned parent_idx ) : name ( std::move ( name ) ), type ( type ), parent_idx ( parent_idx ), time ( ), memory ( ) {
 }
 
-void MeasurementFrame::xml_tokens ( std::deque < sax::Token > & tokens, unsigned idx, const measurements::stealth_vector < MeasurementFrame > & frames ) {
-	const MeasurementFrame & frame = frames[idx];
-
-	tokens.emplace_back ( "MeasurementFrame", sax::Token::TokenType::START_ELEMENT );
-	tokens.emplace_back ( "Name", sax::Token::TokenType::START_ELEMENT );
-	tokens.emplace_back ( measurements::to_string ( frame.name ), sax::Token::TokenType::CHARACTER );
-	tokens.emplace_back ( "Name", sax::Token::TokenType::END_ELEMENT );
-	tokens.emplace_back ( "Type", sax::Token::TokenType::START_ELEMENT );
-	tokens.emplace_back ( measurements::to_string ( frame.type ), sax::Token::TokenType::CHARACTER );
-	tokens.emplace_back ( "Type", sax::Token::TokenType::END_ELEMENT );
-
-	if ( frame.type != measurements::Type::ROOT ) {
-		TimeDataFrame::xml_tokens ( tokens, idx, frames );
-		MemoryDataFrame::xml_tokens ( tokens, idx, frames );
-		CounterDataFrame::xml_tokens ( tokens, idx, frames );
-	}
-
-	tokens.emplace_back ( "SubFrames", sax::Token::TokenType::START_ELEMENT );
-
-	for ( unsigned sub_idx : frame.sub_idxs )
-		xml_tokens ( tokens, sub_idx, frames );
-
-	tokens.emplace_back ( "SubFrames", sax::Token::TokenType::END_ELEMENT );
-
-	tokens.emplace_back ( "MeasurementFrame", sax::Token::TokenType::END_ELEMENT );
-}
-
 std::ostream & operator <<( std::ostream & os, const MeasurementFrame & frame ) {
 
 	std::stringstream ss;
diff --git a/alib2measure/src/measurements/MeasurementFrame.hpp b/alib2measure/src/measurements/MeasurementFrame.hpp
index 02d423dc24..a9b51b7337 100644
--- a/alib2measure/src/measurements/MeasurementFrame.hpp
+++ b/alib2measure/src/measurements/MeasurementFrame.hpp
@@ -28,7 +28,6 @@ struct MeasurementFrame {
 	CounterDataFrame counter;
 
 	MeasurementFrame ( measurements::stealth_string, measurements::Type, unsigned );
-	static void xml_tokens ( std::deque < sax::Token > &, unsigned, const measurements::stealth_vector < MeasurementFrame > & );
 };
 
 std::ostream & operator <<( std::ostream &, const MeasurementFrame & );
diff --git a/alib2measure/src/measurements/MeasurementResults.cpp b/alib2measure/src/measurements/MeasurementResults.cpp
index e767ad3cd9..498072a3e4 100644
--- a/alib2measure/src/measurements/MeasurementResults.cpp
+++ b/alib2measure/src/measurements/MeasurementResults.cpp
@@ -2,6 +2,7 @@
  * Author: Radovan Cerveny
  */
 #include "MeasurementResults.hpp"
+#include "MeasurementXmlFactory.hpp"
 
 namespace measurements {
 
@@ -11,17 +12,6 @@ MeasurementResults::MeasurementResults ( ) {
 MeasurementResults::MeasurementResults ( const measurements::stealth_vector < MeasurementFrame > & frames ) : frames ( frames ) {
 }
 
-std::deque < sax::Token > MeasurementResults::xml_tokens ( ) const {
-	std::deque < sax::Token > tokens;
-
-	tokens.emplace_back ( "MeasurementResults", sax::Token::TokenType::START_ELEMENT );
-
-	MeasurementFrame::xml_tokens ( tokens, 0, frames );
-
-	tokens.emplace_back ( "MeasurementResults", sax::Token::TokenType::END_ELEMENT );
-	return tokens;
-}
-
 void MeasurementResults::print_as_list ( std::ostream & os ) const {
 	print_as_list ( os, 0 );
 }
@@ -114,7 +104,7 @@ std::ostream & operator <<( std::ostream & os, const MeasurementResults & mr ) {
 
 	int os_format = os.iword ( MeasurementXalloc::FORMAT );
 
-	// if format was set, use that format, otherwise default to XML
+	 // if format was set, use that format, otherwise default to XML
 	if ( os_format )
 		mf = static_cast < MeasurementFormat > ( os_format );
 
@@ -128,7 +118,7 @@ std::ostream & operator <<( std::ostream & os, const MeasurementResults & mr ) {
 		break;
 
 	case MeasurementFormat::XML:
-		sax::SaxComposeInterface::printStream ( os, mr.xml_tokens ( ) );
+		sax::SaxComposeInterface::printStream ( os, MeasurementXmlFactory::composeMeasurementResults ( mr ) );
 		break;
 	}
 
diff --git a/alib2measure/src/measurements/MeasurementResults.hpp b/alib2measure/src/measurements/MeasurementResults.hpp
index 699e1e019b..880b2ef10e 100644
--- a/alib2measure/src/measurements/MeasurementResults.hpp
+++ b/alib2measure/src/measurements/MeasurementResults.hpp
@@ -29,8 +29,6 @@ struct MeasurementResults {
 	void print_as_list ( std::ostream & ) const;
 	void print_as_tree ( std::ostream & ) const;
 
-	std::deque < sax::Token > xml_tokens ( ) const;
-
 private:
 	void print_as_list ( std::ostream &, unsigned ) const;
 	void print_as_tree ( std::ostream &, unsigned, std::string &, bool ) const;
diff --git a/alib2measure/src/measurements/MeasurementXmlFactory.cpp b/alib2measure/src/measurements/MeasurementXmlFactory.cpp
new file mode 100644
index 0000000000..67ae1a6fe8
--- /dev/null
+++ b/alib2measure/src/measurements/MeasurementXmlFactory.cpp
@@ -0,0 +1,142 @@
+/*
+ * Author: Radovan Cerveny
+ */
+
+#include "MeasurementXmlFactory.hpp"
+
+namespace measurements {
+
+std::deque < sax::Token > MeasurementXmlFactory::composeMeasurementResults ( const MeasurementResults & mr ) {
+	std::deque < sax::Token > tokens;
+
+	tokens.emplace_back ( MEASUREMENT_RESULTS_TAG, sax::Token::TokenType::START_ELEMENT );
+
+	MeasurementXmlFactory::composeMeasurementFrames ( tokens, 0, mr.frames );
+
+	tokens.emplace_back ( MEASUREMENT_RESULTS_TAG, sax::Token::TokenType::END_ELEMENT );
+	return tokens;
+}
+
+void MeasurementXmlFactory::composeMeasurementFrames ( std::deque < sax::Token > & tokens, unsigned idx, const measurements::stealth_vector < MeasurementFrame > & frames ) {
+
+	const MeasurementFrame & frame = frames[idx];
+
+	tokens.emplace_back ( MEASUREMENT_FRAME_TAG, sax::Token::TokenType::START_ELEMENT );
+	tokens.emplace_back ( MEASUREMENT_FRAME_NAME_TAG, sax::Token::TokenType::START_ELEMENT );
+	tokens.emplace_back ( measurements::to_string ( frame.name ), sax::Token::TokenType::CHARACTER );
+	tokens.emplace_back ( MEASUREMENT_FRAME_NAME_TAG, sax::Token::TokenType::END_ELEMENT );
+	tokens.emplace_back ( MEASUREMENT_FRAME_TYPE_TAG, sax::Token::TokenType::START_ELEMENT );
+	tokens.emplace_back ( measurements::to_string ( frame.type ), sax::Token::TokenType::CHARACTER );
+	tokens.emplace_back ( MEASUREMENT_FRAME_TYPE_TAG, sax::Token::TokenType::END_ELEMENT );
+
+	if ( frame.type != measurements::Type::ROOT ) {
+		composeTimeDataFrame ( tokens, idx, frames );
+		composeMemoryDataFrame ( tokens, idx, frames );
+		composeCounterDataFrame ( tokens, idx, frames );
+	}
+
+	tokens.emplace_back ( MEASUREMENT_SUBFRAMES_TAG, sax::Token::TokenType::START_ELEMENT );
+
+	for ( unsigned sub_idx : frame.sub_idxs )
+		composeMeasurementFrames ( tokens, sub_idx, frames );
+
+	tokens.emplace_back ( MEASUREMENT_SUBFRAMES_TAG, sax::Token::TokenType::END_ELEMENT );
+
+	tokens.emplace_back ( MEASUREMENT_FRAME_TAG, sax::Token::TokenType::END_ELEMENT );
+}
+
+void MeasurementXmlFactory::composeTimeDataFrame ( std::deque < sax::Token > & tokens, unsigned idx, const measurements::stealth_vector < MeasurementFrame > & frames ) {
+	const TimeDataFrame & frame = frames[idx].time;
+
+	tokens.emplace_back ( TIME_DATA_FRAME_TAG, sax::Token::TokenType::START_ELEMENT );
+	tokens.emplace_back ( TIME_DATA_FRAME_DURATION_TAG, sax::Token::TokenType::START_ELEMENT );
+	tokens.emplace_back ( std::to_string ( frame.duration.count ( ) ), sax::Token::TokenType::CHARACTER );
+	tokens.emplace_back ( TIME_DATA_FRAME_DURATION_TAG, sax::Token::TokenType::END_ELEMENT );
+	tokens.emplace_back ( TIME_DATA_FRAME_REAL_DURATION_TAG, sax::Token::TokenType::START_ELEMENT );
+	tokens.emplace_back ( std::to_string ( frame.real_duration.count ( ) ), sax::Token::TokenType::CHARACTER );
+	tokens.emplace_back ( TIME_DATA_FRAME_REAL_DURATION_TAG, sax::Token::TokenType::END_ELEMENT );
+	tokens.emplace_back ( TIME_DATA_FRAME_TAG, sax::Token::TokenType::END_ELEMENT );
+}
+
+void MeasurementXmlFactory::composeMemoryDataFrame ( std::deque < sax::Token > & tokens, unsigned idx, const measurements::stealth_vector < MeasurementFrame > & frames ) {
+	const MemoryDataFrame & frame = frames[idx].memory;
+
+	tokens.emplace_back ( MEMORY_DATA_FRAME_TAG, sax::Token::TokenType::START_ELEMENT );
+	tokens.emplace_back ( MEMORY_DATA_FRAME_START_HEAP_USAGE_TAG, sax::Token::TokenType::START_ELEMENT );
+	tokens.emplace_back ( std::to_string ( frame.start_heap_usage ), sax::Token::TokenType::CHARACTER );
+	tokens.emplace_back ( MEMORY_DATA_FRAME_START_HEAP_USAGE_TAG, sax::Token::TokenType::END_ELEMENT );
+	tokens.emplace_back ( MEMORY_DATA_FRAME_END_HEAP_USAGE_TAG, sax::Token::TokenType::START_ELEMENT );
+	tokens.emplace_back ( std::to_string ( frame.end_heap_usage ), sax::Token::TokenType::CHARACTER );
+	tokens.emplace_back ( MEMORY_DATA_FRAME_END_HEAP_USAGE_TAG, sax::Token::TokenType::END_ELEMENT );
+	tokens.emplace_back ( MEMORY_DATA_FRAME_HIGH_WATERMARK_TAG, sax::Token::TokenType::START_ELEMENT );
+	tokens.emplace_back ( std::to_string ( frame.high_watermark ), sax::Token::TokenType::CHARACTER );
+	tokens.emplace_back ( MEMORY_DATA_FRAME_HIGH_WATERMARK_TAG, sax::Token::TokenType::END_ELEMENT );
+	tokens.emplace_back ( MEMORY_DATA_FRAME_TAG, sax::Token::TokenType::END_ELEMENT );
+}
+
+void MeasurementXmlFactory::composeCounterDataFrame ( std::deque < sax::Token > & tokens, unsigned idx, const measurements::stealth_vector < MeasurementFrame > & frames ) {
+	const CounterDataFrame & cdf = frames[idx].counter;
+
+	tokens.emplace_back ( COUNTER_DATA_FRAME_TAG, sax::Token::TokenType::START_ELEMENT );
+
+	tokens.emplace_back ( COUNTER_DATA_FRAME_COUNTERS_TAG, sax::Token::TokenType::START_ELEMENT );
+
+	for ( const auto & elem : cdf.counters ) {
+		tokens.emplace_back ( COUNTER_DATA_FRAME_COUNTER_TAG, sax::Token::TokenType::START_ELEMENT );
+		tokens.emplace_back ( COUNTER_DATA_FRAME_COUNTER_NAME_TAG, sax::Token::TokenType::START_ELEMENT );
+		tokens.emplace_back ( measurements::to_string ( elem.first ), sax::Token::TokenType::CHARACTER );
+		tokens.emplace_back ( COUNTER_DATA_FRAME_COUNTER_NAME_TAG, sax::Token::TokenType::END_ELEMENT );
+		tokens.emplace_back ( COUNTER_DATA_FRAME_COUNTER_VALUE_TAG, sax::Token::TokenType::START_ELEMENT );
+		tokens.emplace_back ( std::to_string ( elem.second ), sax::Token::TokenType::CHARACTER );
+		tokens.emplace_back ( COUNTER_DATA_FRAME_COUNTER_VALUE_TAG, sax::Token::TokenType::END_ELEMENT );
+		tokens.emplace_back ( COUNTER_DATA_FRAME_COUNTER_TAG, sax::Token::TokenType::END_ELEMENT );
+	}
+
+	tokens.emplace_back ( COUNTER_DATA_FRAME_COUNTERS_TAG, sax::Token::TokenType::END_ELEMENT );
+
+	tokens.emplace_back ( COUNTER_DATA_FRAME_REAL_COUNTERS_TAG, sax::Token::TokenType::START_ELEMENT );
+
+	for ( const auto & elem : cdf.real_counters ) {
+		tokens.emplace_back ( COUNTER_DATA_FRAME_COUNTER_TAG, sax::Token::TokenType::START_ELEMENT );
+		tokens.emplace_back ( COUNTER_DATA_FRAME_COUNTER_NAME_TAG, sax::Token::TokenType::START_ELEMENT );
+		tokens.emplace_back ( measurements::to_string ( elem.first ), sax::Token::TokenType::CHARACTER );
+		tokens.emplace_back ( COUNTER_DATA_FRAME_COUNTER_NAME_TAG, sax::Token::TokenType::END_ELEMENT );
+		tokens.emplace_back ( COUNTER_DATA_FRAME_COUNTER_VALUE_TAG, sax::Token::TokenType::START_ELEMENT );
+		tokens.emplace_back ( std::to_string ( elem.second ), sax::Token::TokenType::CHARACTER );
+		tokens.emplace_back ( COUNTER_DATA_FRAME_COUNTER_VALUE_TAG, sax::Token::TokenType::END_ELEMENT );
+		tokens.emplace_back ( COUNTER_DATA_FRAME_COUNTER_TAG, sax::Token::TokenType::END_ELEMENT );
+	}
+
+	tokens.emplace_back ( COUNTER_DATA_FRAME_REAL_COUNTERS_TAG, sax::Token::TokenType::END_ELEMENT );
+
+	tokens.emplace_back ( COUNTER_DATA_FRAME_TAG, sax::Token::TokenType::END_ELEMENT );
+}
+
+MeasurementResults MeasurementXmlFactory::parseMeasurementResults ( std::deque < sax::Token > & ) {
+	return MeasurementResults ( );
+}
+
+std::string MeasurementXmlFactory::MEASUREMENT_RESULTS_TAG = "MeasurementResults";
+
+std::string MeasurementXmlFactory::MEASUREMENT_FRAME_TAG = "MeasurementFrame";
+std::string MeasurementXmlFactory::MEASUREMENT_FRAME_NAME_TAG = "Name";
+std::string MeasurementXmlFactory::MEASUREMENT_FRAME_TYPE_TAG = "Type";
+
+std::string MeasurementXmlFactory::MEASUREMENT_SUBFRAMES_TAG = "SubFrames";
+
+std::string MeasurementXmlFactory::TIME_DATA_FRAME_TAG = "TimeData";
+std::string MeasurementXmlFactory::TIME_DATA_FRAME_DURATION_TAG = "Duration";
+std::string MeasurementXmlFactory::TIME_DATA_FRAME_REAL_DURATION_TAG = "RealDuration";
+
+std::string MeasurementXmlFactory::MEMORY_DATA_FRAME_TAG = "MemoryData";
+std::string MeasurementXmlFactory::MEMORY_DATA_FRAME_START_HEAP_USAGE_TAG = "StartHeapUsage";
+std::string MeasurementXmlFactory::MEMORY_DATA_FRAME_END_HEAP_USAGE_TAG = "EndHeapUsage";
+std::string MeasurementXmlFactory::MEMORY_DATA_FRAME_HIGH_WATERMARK_TAG = "HighWatermark";
+
+std::string MeasurementXmlFactory::COUNTER_DATA_FRAME_TAG = "CounterData";
+std::string MeasurementXmlFactory::COUNTER_DATA_FRAME_COUNTERS_TAG = "Counters";
+std::string MeasurementXmlFactory::COUNTER_DATA_FRAME_REAL_COUNTERS_TAG = "RealCounters";
+std::string MeasurementXmlFactory::COUNTER_DATA_FRAME_COUNTER_TAG = "Counter";
+std::string MeasurementXmlFactory::COUNTER_DATA_FRAME_COUNTER_NAME_TAG	 = "Name";
+std::string MeasurementXmlFactory::COUNTER_DATA_FRAME_COUNTER_VALUE_TAG = "Value";
+}
diff --git a/alib2measure/src/measurements/MeasurementXmlFactory.hpp b/alib2measure/src/measurements/MeasurementXmlFactory.hpp
new file mode 100644
index 0000000000..04ad1ebc49
--- /dev/null
+++ b/alib2measure/src/measurements/MeasurementXmlFactory.hpp
@@ -0,0 +1,55 @@
+/*
+ * Author: Radovan Cerveny
+ */
+
+#ifndef MEASUREMENT_PROVISIONER_XML_FACTORY_HPP_
+#define MEASUREMENT_PROVISIONER_XML_FACTORY_HPP_
+
+#include <deque>
+#include "sax/Token.h"
+#include "MeasurementResults.hpp"
+
+namespace measurements {
+
+class MeasurementXmlFactory {
+
+	static std::string MEASUREMENT_RESULTS_TAG;
+
+	static std::string MEASUREMENT_FRAME_TAG;
+	static std::string MEASUREMENT_FRAME_NAME_TAG;
+	static std::string MEASUREMENT_FRAME_TYPE_TAG;
+
+	static std::string MEASUREMENT_SUBFRAMES_TAG;
+
+	 // TimeDataFrame
+	static std::string TIME_DATA_FRAME_TAG;
+	static std::string TIME_DATA_FRAME_DURATION_TAG;
+	static std::string TIME_DATA_FRAME_REAL_DURATION_TAG;
+
+	 // MemoryDataFrame
+	static std::string MEMORY_DATA_FRAME_TAG;
+	static std::string MEMORY_DATA_FRAME_START_HEAP_USAGE_TAG;
+	static std::string MEMORY_DATA_FRAME_END_HEAP_USAGE_TAG;
+	static std::string MEMORY_DATA_FRAME_HIGH_WATERMARK_TAG;
+
+	 // CounterDataFrame
+	static std::string COUNTER_DATA_FRAME_TAG;
+	static std::string COUNTER_DATA_FRAME_COUNTERS_TAG;
+	static std::string COUNTER_DATA_FRAME_REAL_COUNTERS_TAG;
+	static std::string COUNTER_DATA_FRAME_COUNTER_TAG;
+	static std::string COUNTER_DATA_FRAME_COUNTER_NAME_TAG;
+	static std::string COUNTER_DATA_FRAME_COUNTER_VALUE_TAG;
+
+	static void composeMeasurementFrames ( std::deque < sax::Token > &, unsigned, const measurements::stealth_vector < MeasurementFrame > & );
+	static void composeTimeDataFrame ( std::deque < sax::Token > &, unsigned, const measurements::stealth_vector < MeasurementFrame > & );
+	static void composeMemoryDataFrame ( std::deque < sax::Token > &, unsigned, const measurements::stealth_vector < MeasurementFrame > & );
+	static void composeCounterDataFrame ( std::deque < sax::Token > &, unsigned, const measurements::stealth_vector < MeasurementFrame > & );
+
+public:
+	static std::deque < sax::Token > composeMeasurementResults ( const MeasurementResults & );
+	static MeasurementResults parseMeasurementResults ( std::deque < sax::Token > & );
+};
+
+}
+
+#endif /* MEASUREMENT_PROVISIONER_XML_FACTORY_HPP_ */
diff --git a/alib2measure/src/measurements/frames/CounterDataFrame.cpp b/alib2measure/src/measurements/frames/CounterDataFrame.cpp
index d1478e33e4..5924d6e04f 100644
--- a/alib2measure/src/measurements/frames/CounterDataFrame.cpp
+++ b/alib2measure/src/measurements/frames/CounterDataFrame.cpp
@@ -54,44 +54,6 @@ void CounterDataFrame::hint ( unsigned frame_idx, measurements::stealth_vector <
 	}
 }
 
-void CounterDataFrame::xml_tokens ( std::deque < sax::Token > & tokens, unsigned idx, const measurements::stealth_vector < MeasurementFrame > & frames ) {
-	const CounterDataFrame & cdf = frames[idx].counter;
-
-	tokens.emplace_back ( "CounterData", sax::Token::TokenType::START_ELEMENT );
-
-	tokens.emplace_back ( "Counters", sax::Token::TokenType::START_ELEMENT );
-
-	for ( const auto & elem : cdf.counters ) {
-		tokens.emplace_back ( "Counter", sax::Token::TokenType::START_ELEMENT );
-		tokens.emplace_back ( "Name", sax::Token::TokenType::START_ELEMENT );
-		tokens.emplace_back ( measurements::to_string ( elem.first ), sax::Token::TokenType::CHARACTER );
-		tokens.emplace_back ( "Name", sax::Token::TokenType::END_ELEMENT );
-		tokens.emplace_back ( "Value", sax::Token::TokenType::START_ELEMENT );
-		tokens.emplace_back ( std::to_string ( elem.second ), sax::Token::TokenType::CHARACTER );
-		tokens.emplace_back ( "Value", sax::Token::TokenType::END_ELEMENT );
-		tokens.emplace_back ( "Counter", sax::Token::TokenType::END_ELEMENT );
-	}
-
-	tokens.emplace_back ( "Counters", sax::Token::TokenType::END_ELEMENT );
-
-	tokens.emplace_back ( "RealCounters", sax::Token::TokenType::START_ELEMENT );
-
-	for ( const auto & elem : cdf.real_counters ) {
-		tokens.emplace_back ( "Counter", sax::Token::TokenType::START_ELEMENT );
-		tokens.emplace_back ( "Name", sax::Token::TokenType::START_ELEMENT );
-		tokens.emplace_back ( measurements::to_string ( elem.first ), sax::Token::TokenType::CHARACTER );
-		tokens.emplace_back ( "Name", sax::Token::TokenType::END_ELEMENT );
-		tokens.emplace_back ( "Value", sax::Token::TokenType::START_ELEMENT );
-		tokens.emplace_back ( std::to_string ( elem.second ), sax::Token::TokenType::CHARACTER );
-		tokens.emplace_back ( "Value", sax::Token::TokenType::END_ELEMENT );
-		tokens.emplace_back ( "Counter", sax::Token::TokenType::END_ELEMENT );
-	}
-
-	tokens.emplace_back ( "RealCounters", sax::Token::TokenType::END_ELEMENT );
-
-	tokens.emplace_back ( "CounterData", sax::Token::TokenType::END_ELEMENT );
-}
-
 std::ostream & operator <<( std::ostream & os, const CounterDataFrame & cdf ) {
 
 	os << "(";
diff --git a/alib2measure/src/measurements/frames/CounterDataFrame.hpp b/alib2measure/src/measurements/frames/CounterDataFrame.hpp
index f2e3bf3b48..1f84f8a7e0 100644
--- a/alib2measure/src/measurements/frames/CounterDataFrame.hpp
+++ b/alib2measure/src/measurements/frames/CounterDataFrame.hpp
@@ -33,7 +33,6 @@ struct CounterDataFrame {
 	static void init ( unsigned, measurements::stealth_vector < MeasurementFrame > & );
 	static void update ( unsigned, measurements::stealth_vector < MeasurementFrame > & );
 	static void hint ( unsigned, measurements::stealth_vector < MeasurementFrame > &, CounterHint );
-	static void xml_tokens ( std::deque < sax::Token > &, unsigned, const measurements::stealth_vector < MeasurementFrame > & );
 };
 
 std::ostream & operator <<( std::ostream &, const CounterDataFrame & );
diff --git a/alib2measure/src/measurements/frames/MemoryDataFrame.cpp b/alib2measure/src/measurements/frames/MemoryDataFrame.cpp
index 37fe201ce1..4e3f6635be 100644
--- a/alib2measure/src/measurements/frames/MemoryDataFrame.cpp
+++ b/alib2measure/src/measurements/frames/MemoryDataFrame.cpp
@@ -50,22 +50,6 @@ void MemoryDataFrame::hint ( unsigned frame_idx, measurements::stealth_vector <
 	}
 }
 
-void MemoryDataFrame::xml_tokens ( std::deque < sax::Token > & tokens, unsigned idx, const measurements::stealth_vector < MeasurementFrame > & frames ) {
-	const MemoryDataFrame & frame = frames[idx].memory;
-
-	tokens.emplace_back ( "MemoryData", sax::Token::TokenType::START_ELEMENT );
-	tokens.emplace_back ( "StartHeapUsage", sax::Token::TokenType::START_ELEMENT );
-	tokens.emplace_back ( std::to_string ( frame.start_heap_usage ), sax::Token::TokenType::CHARACTER );
-	tokens.emplace_back ( "StartHeapUsage", sax::Token::TokenType::END_ELEMENT );
-	tokens.emplace_back ( "EndHeapUsage", sax::Token::TokenType::START_ELEMENT );
-	tokens.emplace_back ( std::to_string ( frame.end_heap_usage ), sax::Token::TokenType::CHARACTER );
-	tokens.emplace_back ( "EndHeapUsage", sax::Token::TokenType::END_ELEMENT );
-	tokens.emplace_back ( "HighWatermark", sax::Token::TokenType::START_ELEMENT );
-	tokens.emplace_back ( std::to_string ( frame.high_watermark ), sax::Token::TokenType::CHARACTER );
-	tokens.emplace_back ( "HighWatermark", sax::Token::TokenType::END_ELEMENT );
-	tokens.emplace_back ( "MemoryData", sax::Token::TokenType::END_ELEMENT );
-}
-
 std::ostream & operator <<( std::ostream & os, const MemoryDataFrame & mdf ) {
 	os << mdf.start_heap_usage << "shu, " << mdf.end_heap_usage << "ehu, " << mdf.high_watermark << "hw";
 	return os;
diff --git a/alib2measure/src/measurements/frames/MemoryDataFrame.hpp b/alib2measure/src/measurements/frames/MemoryDataFrame.hpp
index 91f45516ae..989d35784c 100644
--- a/alib2measure/src/measurements/frames/MemoryDataFrame.hpp
+++ b/alib2measure/src/measurements/frames/MemoryDataFrame.hpp
@@ -34,7 +34,6 @@ struct MemoryDataFrame {
 	static void init ( unsigned, measurements::stealth_vector < MeasurementFrame > & );
 	static void update ( unsigned, measurements::stealth_vector < MeasurementFrame > & );
 	static void hint ( unsigned, measurements::stealth_vector < MeasurementFrame > &, MemoryHint );
-	static void xml_tokens ( std::deque < sax::Token > &, unsigned, const measurements::stealth_vector < MeasurementFrame > & );
 };
 
 std::ostream & operator <<( std::ostream &, const MemoryDataFrame & );
diff --git a/alib2measure/src/measurements/frames/TimeDataFrame.cpp b/alib2measure/src/measurements/frames/TimeDataFrame.cpp
index ea46d97582..11a194db82 100644
--- a/alib2measure/src/measurements/frames/TimeDataFrame.cpp
+++ b/alib2measure/src/measurements/frames/TimeDataFrame.cpp
@@ -26,19 +26,6 @@ void TimeDataFrame::update ( unsigned frame_idx, measurements::stealth_vector <
 	parent_frame.time.real_duration -= current_frame.time.duration;
 }
 
-void TimeDataFrame::xml_tokens ( std::deque < sax::Token > & tokens, unsigned idx, const measurements::stealth_vector < MeasurementFrame > & frames ) {
-	const TimeDataFrame & frame = frames[idx].time;
-
-	tokens.emplace_back ( "TimeData", sax::Token::TokenType::START_ELEMENT );
-	tokens.emplace_back ( "Duration", sax::Token::TokenType::START_ELEMENT );
-	tokens.emplace_back ( std::to_string ( frame.duration.count ( ) ), sax::Token::TokenType::CHARACTER );
-	tokens.emplace_back ( "Duration", sax::Token::TokenType::END_ELEMENT );
-	tokens.emplace_back ( "RealDuration", sax::Token::TokenType::START_ELEMENT );
-	tokens.emplace_back ( std::to_string ( frame.real_duration.count ( ) ), sax::Token::TokenType::CHARACTER );
-	tokens.emplace_back ( "RealDuration", sax::Token::TokenType::END_ELEMENT );
-	tokens.emplace_back ( "TimeData", sax::Token::TokenType::END_ELEMENT );
-}
-
 std::ostream & operator <<( std::ostream & os, const TimeDataFrame & tdf ) {
 	os << tdf.duration << ", " << tdf.real_duration;
 	return os;
diff --git a/alib2measure/src/measurements/frames/TimeDataFrame.hpp b/alib2measure/src/measurements/frames/TimeDataFrame.hpp
index 5213c1a10d..f5ebcec7f3 100644
--- a/alib2measure/src/measurements/frames/TimeDataFrame.hpp
+++ b/alib2measure/src/measurements/frames/TimeDataFrame.hpp
@@ -22,7 +22,6 @@ struct TimeDataFrame {
 
 	static void init ( unsigned, measurements::stealth_vector < MeasurementFrame > & );
 	static void update ( unsigned, measurements::stealth_vector < MeasurementFrame > & );
-	static void xml_tokens ( std::deque < sax::Token > &, unsigned, const measurements::stealth_vector < MeasurementFrame > & );
 };
 
 std::ostream & operator <<( std::ostream &, const std::chrono::microseconds & );
-- 
GitLab