From 900895adad518529794609bc357234050e6e2658 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Radovan=20=C4=8Cerven=C3=BD?= <radovan.cerveny@gmail.com>
Date: Mon, 1 Feb 2016 01:24:10 +0100
Subject: [PATCH] started from scratch, new usable design for now

---
 .../src/measurements/MeasurementEngine.cpp    | 61 +++++++++++++++++++
 .../src/measurements/MeasurementEngine.hpp    | 21 +++++--
 .../src/measurements/MeasurementFrame.hpp     | 53 ++++++++++++++++
 .../src/measurements/MeasurementTypes.hpp     |  2 +-
 alib2algo/src/measurements/Measurements.cpp   | 44 -------------
 alib2algo/src/measurements/Measurements.hpp   | 33 ----------
 .../src/measurements/MemoryDataFrame.cpp      | 29 +++++++++
 .../measurements/MemoryMeasurementEngine.cpp  | 58 ------------------
 .../measurements/MemoryMeasurementEngine.hpp  | 42 -------------
 alib2algo/src/measurements/TimeDataFrame.cpp  | 36 +++++++++++
 .../measurements/TimeMeasurementEngine.cpp    | 59 ------------------
 .../measurements/TimeMeasurementEngine.hpp    | 44 -------------
 alib2algo/src/measurements/measurements.hpp   | 26 ++++++++
 .../measurements/MeasurementsTest.cpp         | 33 +++++-----
 14 files changed, 238 insertions(+), 303 deletions(-)
 create mode 100644 alib2algo/src/measurements/MeasurementEngine.cpp
 create mode 100644 alib2algo/src/measurements/MeasurementFrame.hpp
 delete mode 100644 alib2algo/src/measurements/Measurements.cpp
 delete mode 100644 alib2algo/src/measurements/Measurements.hpp
 create mode 100644 alib2algo/src/measurements/MemoryDataFrame.cpp
 delete mode 100644 alib2algo/src/measurements/MemoryMeasurementEngine.cpp
 delete mode 100644 alib2algo/src/measurements/MemoryMeasurementEngine.hpp
 create mode 100644 alib2algo/src/measurements/TimeDataFrame.cpp
 delete mode 100644 alib2algo/src/measurements/TimeMeasurementEngine.cpp
 delete mode 100644 alib2algo/src/measurements/TimeMeasurementEngine.hpp
 create mode 100644 alib2algo/src/measurements/measurements.hpp

diff --git a/alib2algo/src/measurements/MeasurementEngine.cpp b/alib2algo/src/measurements/MeasurementEngine.cpp
new file mode 100644
index 0000000000..8b837ab78c
--- /dev/null
+++ b/alib2algo/src/measurements/MeasurementEngine.cpp
@@ -0,0 +1,61 @@
+/*
+ * Author: Radovan Cerveny
+ */
+
+#include <iostream>
+#include "MeasurementEngine.hpp"
+
+namespace measurements {
+
+MeasurementEngine MeasurementEngine::INSTANCE;
+
+MeasurementEngine::MeasurementEngine ( ) {
+	frames.emplace_back ( std::move ( "Root" ), measurements::Type::ROOT, 0 );
+	frame_idx_stack.push_back ( 0 );
+}
+
+void MeasurementEngine::push_measurement_frame ( std::string frame_name, measurements::Type frame_type ) {
+	unsigned parent_idx = frame_idx_stack.back ( );
+
+	frames.emplace_back ( std::move ( frame_name ), frame_type, parent_idx );
+
+	unsigned current_idx = frames.size ( ) - 1;
+
+	frames[parent_idx].sub_idxs.push_back ( current_idx );
+	frame_idx_stack.push_back ( current_idx );
+
+	TimeDataFrame::init ( current_idx, frames );
+	MemoryDataFrame::init ( current_idx, frames );
+}
+
+void MeasurementEngine::pop_measurement_frame ( ) {
+	unsigned current_idx = frame_idx_stack.back ( );
+
+	frame_idx_stack.pop_back ( );
+
+	TimeDataFrame::update ( current_idx, frames );
+	MemoryDataFrame::update ( current_idx, frames );
+}
+
+void MeasurementEngine::print_as_list ( std::ostream & os, unsigned idx ) {
+	MeasurementFrame & frame = frames[idx];
+
+	if ( frame.type != measurements::Type::ROOT ) {
+		os << std::make_tuple ( frame.name, frame.type, frame.parent_idx, frame.sub_idxs, frame.time.to_string ( ), frame.memory.to_string ( ) );
+
+		if ( idx != frames.size ( ) - 1 )
+			os << ", ";
+	}
+
+	for ( unsigned sub_idx : frame.sub_idxs )
+		print_as_list ( os, sub_idx );
+}
+
+void MeasurementEngine::print_as_list ( std::ostream & os ) {
+	print_as_list ( os, 0 );
+}
+
+void MeasurementEngine::print_as_tree ( std::ostream & ) {
+}
+
+}
diff --git a/alib2algo/src/measurements/MeasurementEngine.hpp b/alib2algo/src/measurements/MeasurementEngine.hpp
index f9b9b815d2..3ba730e679 100644
--- a/alib2algo/src/measurements/MeasurementEngine.hpp
+++ b/alib2algo/src/measurements/MeasurementEngine.hpp
@@ -7,19 +7,28 @@
 
 #include <ostream>
 #include "MeasurementTypes.hpp"
+#include "MeasurementFrame.hpp"
 
 namespace measurements {
 
 class MeasurementEngine {
+	std::vector < unsigned > frame_idx_stack;
+	std::vector < MeasurementFrame > frames;
+
+	MeasurementEngine ( );
+
+	void print_as_list ( std::ostream &, unsigned );
+
 public:
-	virtual void push_measurement_frame ( std::string, measurements::Type ) = 0;
-	virtual void pop_measurement_frame ( ) = 0;
+	void push_measurement_frame ( std::string, measurements::Type );
+	void pop_measurement_frame ( );
+
+	void print_as_list ( std::ostream & );
+	void print_as_tree ( std::ostream & );
 
-	virtual void print_as_list ( std::ostream & ) = 0;
-	virtual void print_as_tree ( std::ostream & ) = 0;
-	virtual void print_as_xml ( std::ostream & )  = 0;
+	// void print_as_xml ( std::ostream & );
 
-	virtual ~MeasurementEngine ( ) = default;
+	static MeasurementEngine INSTANCE;
 };
 
 }
diff --git a/alib2algo/src/measurements/MeasurementFrame.hpp b/alib2algo/src/measurements/MeasurementFrame.hpp
new file mode 100644
index 0000000000..20b9e2c21f
--- /dev/null
+++ b/alib2algo/src/measurements/MeasurementFrame.hpp
@@ -0,0 +1,53 @@
+/*
+ * Author: Radovan Cerveny
+ */
+
+#ifndef MEASUREMENT_FRAME_HPP_
+#define MEASUREMENT_FRAME_HPP_
+
+#include <chrono>
+#include "MeasurementTypes.hpp"
+
+namespace measurements {
+
+struct MeasurementFrame;
+
+struct TimeDataFrame {
+	std::chrono::time_point < std::chrono::high_resolution_clock > start;
+
+	std::chrono::microseconds duration;
+	std::chrono::microseconds real_duration;
+
+	std::string to_string ( );
+	// void		to_xml ( );
+
+	static void init ( unsigned, std::vector < MeasurementFrame > & );
+	static void update ( unsigned, std::vector < MeasurementFrame > & );
+};
+
+struct MemoryDataFrame {
+	unsigned current_heap_usage;
+	unsigned high_watermark;
+
+	std::string to_string ( );
+	// void		to_xml ( );
+
+	static void init ( unsigned, std::vector < MeasurementFrame > & );
+	static void update ( unsigned, std::vector < MeasurementFrame > & );
+};
+
+struct MeasurementFrame {
+	std::string				 name;
+	measurements::Type		 type;
+	unsigned				 parent_idx;
+	std::vector < unsigned > sub_idxs;
+
+	TimeDataFrame	time;
+	MemoryDataFrame memory;
+
+	MeasurementFrame ( std::string && name, measurements::Type type, unsigned parent_idx ) : name ( name ), type ( type ), parent_idx ( parent_idx ) { }
+};
+
+}
+
+#endif /* MEASUREMENT_FRAME_HPP_ */
diff --git a/alib2algo/src/measurements/MeasurementTypes.hpp b/alib2algo/src/measurements/MeasurementTypes.hpp
index 4b2890eb2b..d47a1d64bc 100644
--- a/alib2algo/src/measurements/MeasurementTypes.hpp
+++ b/alib2algo/src/measurements/MeasurementTypes.hpp
@@ -10,7 +10,7 @@
 namespace measurements {
 
 enum Type {
-	OVERALL = 1, INIT = 2, FINALIZE = 4, MAIN = 8, AUXILIARY = 16
+	ROOT = 0, OVERALL = 1, INIT = 2, FINALIZE = 4, MAIN = 8, AUXILIARY = 16
 };
 
 template < typename T, typename ... Args >
diff --git a/alib2algo/src/measurements/Measurements.cpp b/alib2algo/src/measurements/Measurements.cpp
deleted file mode 100644
index 29bb56e0d9..0000000000
--- a/alib2algo/src/measurements/Measurements.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * Author: Radovan Cerveny
- */
-
-#include "MeasurementTypes.hpp"
-#include "Measurements.hpp"
-#include "TimeMeasurementEngine.hpp"
-#include "MemoryMeasurementEngine.hpp"
-
-namespace measurements {
-
-Measurements Measurements::INSTANCE;
-
-/**
- * constructs all available measurement engines
- */
-Measurements::Measurements ( ) {
-	measurement_engines.emplace_back ( measurements::make_unique < TimeMeasurementEngine > ( ) );
-	measurement_engines.emplace_back ( measurements::make_unique < MemoryMeasurementEngine > ( ) );
-}
-
-/**
- * creates new block on top of the measurements stack
- * @param block_name
- */
-void Measurements::start ( std::string block_name, measurements::Type type ) {
-	for ( auto & me : INSTANCE.measurement_engines )
-		me->push_measurement_frame ( block_name, type );
-}
-
-/**
- * pops the block from the measurements stack
- */
-void Measurements::end ( ) {
-	for ( auto & me : INSTANCE.measurement_engines )
-		me->pop_measurement_frame ( );
-}
-
-void Measurements::print ( std::ostream & os ) {
-	for ( auto & me : INSTANCE.measurement_engines )
-		me->print_as_list ( os );
-}
-
-}
diff --git a/alib2algo/src/measurements/Measurements.hpp b/alib2algo/src/measurements/Measurements.hpp
deleted file mode 100644
index 1542a8b920..0000000000
--- a/alib2algo/src/measurements/Measurements.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Author: Radovan Cerveny
- */
-
-#ifndef MEASUREMENTS_HPP_
-#define MEASUREMENTS_HPP_
-
-#include <ostream>
-#include <string>
-#include <vector>
-#include "MeasurementTypes.hpp"
-#include "MeasurementEngine.hpp"
-
-namespace measurements {
-
-class Measurements {
-private:
-	std::vector < std::unique_ptr < MeasurementEngine > > measurement_engines;
-
-	Measurements ( );
-
-private:
-	static Measurements INSTANCE;
-
-public:
-	static void start ( std::string, measurements::Type );
-	static void end ( );
-	static void print ( std::ostream & );
-};
-
-}
-
-#endif /* MEASUREMENTS_HPP_ */
diff --git a/alib2algo/src/measurements/MemoryDataFrame.cpp b/alib2algo/src/measurements/MemoryDataFrame.cpp
new file mode 100644
index 0000000000..3c5ba5d8cc
--- /dev/null
+++ b/alib2algo/src/measurements/MemoryDataFrame.cpp
@@ -0,0 +1,29 @@
+/*
+ * Author: Radovan Cerveny
+ */
+
+#include <sstream>
+#include "MeasurementFrame.hpp"
+
+using namespace std::chrono;
+
+namespace measurements {
+
+void MemoryDataFrame::init ( unsigned frame_idx, std::vector < MeasurementFrame > & frames ) {
+	MeasurementFrame & current_frame = frames[frame_idx];
+}
+
+void MemoryDataFrame::update ( unsigned frame_idx, std::vector < MeasurementFrame > & frames ) {
+	MeasurementFrame & current_frame = frames[frame_idx];
+
+	MeasurementFrame & parent_frame = frames[current_frame.parent_idx];
+}
+
+std::string MemoryDataFrame::to_string ( ) {
+	std::stringstream ss;
+
+	ss << "memory";
+	return ss.str ( );
+}
+
+}
diff --git a/alib2algo/src/measurements/MemoryMeasurementEngine.cpp b/alib2algo/src/measurements/MemoryMeasurementEngine.cpp
deleted file mode 100644
index eca8859da8..0000000000
--- a/alib2algo/src/measurements/MemoryMeasurementEngine.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Author: Radovan Cerveny
- */
-
-#include <iostream>
-#include "MemoryMeasurementEngine.hpp"
-
-namespace measurements {
-
-void MemoryMeasurementEngine::push_measurement_frame ( std::string frame_name, measurements::Type frame_type ) {
-	MemoryMeasurementFrame mmf = { std::move ( frame_name ), frame_type, std::vector < unsigned > ( ), 0, 0 };
-
-	frames.emplace_back ( std::move ( mmf ) );
-}
-
-void MemoryMeasurementEngine::pop_measurement_frame ( ) {
-	MemoryMeasurementFrame current_frame = std::move ( frames.back ( ) );
-
-	frames.pop_back ( );
-
-	// current_frame.duration = duration_cast < microseconds > ( high_resolution_clock::now ( ) - current_frame.start );
-	// current_frame.real_duration += current_frame.duration;
-
-	unsigned idx = results.size ( );
-
-	if ( !frames.empty ( ) ) {
-		MemoryMeasurementFrame & parent_frame = frames.back ( );
-		parent_frame.sub_frames.push_back ( idx );
-
-		// parent_frame.real_duration -= current_frame.duration;
-	}
-
-	results.emplace_back ( std::move ( current_frame ) );
-}
-
-void MemoryMeasurementEngine::print_as_list ( std::ostream & os ) {
-	print_as_list ( os, results.size ( ) - 1 );
-	os << std::endl;
-}
-
-void MemoryMeasurementEngine::print_as_list ( std::ostream & os, unsigned idx ) {
-	MemoryMeasurementFrame & mmf = results[idx];
-
-	if ( idx != results.size ( ) - 1 ) os << ", ";
-
-	os << std::make_tuple ( idx, mmf.frame_name, ( unsigned ) mmf.frame_type, mmf.current_heap_usage, mmf.high_watermark, mmf.sub_frames );
-
-	for ( unsigned sub_idx : mmf.sub_frames )
-		print_as_list ( os, sub_idx );
-}
-
-void MemoryMeasurementEngine::print_as_tree ( std::ostream & ) {
-}
-
-void MemoryMeasurementEngine::print_as_xml ( std::ostream & ) {
-}
-
-}
diff --git a/alib2algo/src/measurements/MemoryMeasurementEngine.hpp b/alib2algo/src/measurements/MemoryMeasurementEngine.hpp
deleted file mode 100644
index 7522db82aa..0000000000
--- a/alib2algo/src/measurements/MemoryMeasurementEngine.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Author: Radovan Cerveny
- */
-
-#ifndef MEMORY_MEASUREMENT_ENGINE_HPP_
-#define MEMORY_MEASUREMENT_ENGINE_HPP_
-
-#include <string>
-#include <vector>
-#include <ostream>
-#include "MeasurementEngine.hpp"
-
-namespace measurements {
-
-struct MemoryMeasurementFrame {
-	std::string				 frame_name;
-	measurements::Type		 frame_type;
-	std::vector < unsigned > sub_frames;
-
-	unsigned current_heap_usage;
-	unsigned high_watermark;
-};
-
-class MemoryMeasurementEngine : public MeasurementEngine {
-private:
-	std::vector < MemoryMeasurementFrame > frames;
-	std::vector < MemoryMeasurementFrame > results;
-
-	void print_as_list ( std::ostream &, unsigned );
-
-public:
-	void push_measurement_frame ( std::string, measurements::Type );
-	void pop_measurement_frame ( );
-
-	void print_as_list ( std::ostream & );
-	void print_as_tree ( std::ostream & );
-	void print_as_xml ( std::ostream & );
-};
-
-}
-
-#endif /* MEMORY_MEASUREMENT_ENGINE_HPP_ */
diff --git a/alib2algo/src/measurements/TimeDataFrame.cpp b/alib2algo/src/measurements/TimeDataFrame.cpp
new file mode 100644
index 0000000000..a7e1c438df
--- /dev/null
+++ b/alib2algo/src/measurements/TimeDataFrame.cpp
@@ -0,0 +1,36 @@
+/*
+ * Author: Radovan Cerveny
+ */
+
+#include <sstream>
+#include "MeasurementFrame.hpp"
+
+using namespace std::chrono;
+
+namespace measurements {
+
+void TimeDataFrame::init ( unsigned frame_idx, std::vector < MeasurementFrame > & frames ) {
+	MeasurementFrame & current_frame = frames[frame_idx];
+
+	current_frame.time.start = high_resolution_clock::now ( );
+}
+
+void TimeDataFrame::update ( unsigned frame_idx, std::vector < MeasurementFrame > & frames ) {
+	MeasurementFrame & current_frame = frames[frame_idx];
+
+	current_frame.time.duration = duration_cast < microseconds > ( high_resolution_clock::now ( ) - current_frame.time.start );
+	current_frame.time.real_duration += current_frame.time.duration;
+
+	MeasurementFrame & parent_frame = frames[current_frame.parent_idx];
+
+	parent_frame.time.real_duration -= current_frame.time.duration;
+}
+
+std::string TimeDataFrame::to_string ( ) {
+	std::stringstream ss;
+
+	ss << duration << ", " << real_duration;
+	return ss.str ( );
+}
+
+}
diff --git a/alib2algo/src/measurements/TimeMeasurementEngine.cpp b/alib2algo/src/measurements/TimeMeasurementEngine.cpp
deleted file mode 100644
index 126599dfaa..0000000000
--- a/alib2algo/src/measurements/TimeMeasurementEngine.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Author: Radovan Cerveny
- */
-
-#include <iostream>
-#include "TimeMeasurementEngine.hpp"
-
-using namespace std::chrono;
-
-namespace measurements {
-
-void TimeMeasurementEngine::push_measurement_frame ( std::string frame_name, measurements::Type frame_type ) {
-	TimeMeasurementFrame tmf = { std::move ( frame_name ), frame_type, std::vector < unsigned > ( ), high_resolution_clock::now ( ), microseconds ( 0 ), microseconds ( 0 ) };
-
-	frames.emplace_back ( std::move ( tmf ) );
-}
-
-void TimeMeasurementEngine::pop_measurement_frame ( ) {
-	TimeMeasurementFrame current_frame = std::move ( frames.back ( ) );
-
-	frames.pop_back ( );
-
-	current_frame.duration = duration_cast < microseconds > ( high_resolution_clock::now ( ) - current_frame.start );
-	current_frame.real_duration += current_frame.duration;
-
-	unsigned idx = results.size ( );
-
-	if ( !frames.empty ( ) ) {
-		TimeMeasurementFrame & parent_frame = frames.back ( );
-		parent_frame.sub_frames.push_back ( idx );
-		parent_frame.real_duration -= current_frame.duration;
-	}
-
-	results.emplace_back ( std::move ( current_frame ) );
-}
-
-void TimeMeasurementEngine::print_as_list ( std::ostream & os ) {
-	print_as_list ( os, results.size ( ) - 1 );
-	os << std::endl;
-}
-
-void TimeMeasurementEngine::print_as_list ( std::ostream & os, unsigned idx ) {
-	TimeMeasurementFrame & tmf = results[idx];
-
-	if ( idx != results.size ( ) - 1 ) os << ", ";
-
-	os << std::make_tuple ( idx, tmf.frame_name, ( unsigned ) tmf.frame_type, tmf.duration, tmf.real_duration, tmf.sub_frames );
-
-	for ( unsigned sub_idx : tmf.sub_frames )
-		print_as_list ( os, sub_idx );
-}
-
-void TimeMeasurementEngine::print_as_tree ( std::ostream & ) {
-}
-
-void TimeMeasurementEngine::print_as_xml ( std::ostream & ) {
-}
-
-}
diff --git a/alib2algo/src/measurements/TimeMeasurementEngine.hpp b/alib2algo/src/measurements/TimeMeasurementEngine.hpp
deleted file mode 100644
index 053568a1fe..0000000000
--- a/alib2algo/src/measurements/TimeMeasurementEngine.hpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Author: Radovan Cerveny
- */
-
-#ifndef TIME_MEASUREMENT_ENGINE_HPP_
-#define TIME_MEASUREMENT_ENGINE_HPP_
-
-#include <string>
-#include <chrono>
-#include <vector>
-#include <ostream>
-#include "MeasurementEngine.hpp"
-
-namespace measurements {
-
-struct TimeMeasurementFrame {
-	std::string				 frame_name;
-	measurements::Type		 frame_type;
-	std::vector < unsigned > sub_frames;
-
-	std::chrono::time_point < std::chrono::high_resolution_clock > start;
-	std::chrono::microseconds									   duration;
-	std::chrono::microseconds									   real_duration;
-};
-
-class TimeMeasurementEngine : public MeasurementEngine {
-private:
-	std::vector < TimeMeasurementFrame > frames;
-	std::vector < TimeMeasurementFrame > results;
-
-	void print_as_list ( std::ostream &, unsigned );
-
-public:
-	void push_measurement_frame ( std::string, measurements::Type );
-	void pop_measurement_frame ( );
-
-	void print_as_list ( std::ostream & );
-	void print_as_tree ( std::ostream & );
-	void print_as_xml ( std::ostream & );
-};
-
-}
-
-#endif /* TIME_MEASUREMENT_ENGINE_HPP_ */
diff --git a/alib2algo/src/measurements/measurements.hpp b/alib2algo/src/measurements/measurements.hpp
new file mode 100644
index 0000000000..f21cdef6cb
--- /dev/null
+++ b/alib2algo/src/measurements/measurements.hpp
@@ -0,0 +1,26 @@
+/*
+ * Author: Radovan Cerveny
+ */
+
+#ifndef MEASUREMENTS_HPP_
+#define MEASUREMENTS_HPP_
+
+#include "MeasurementEngine.hpp"
+
+namespace measurements {
+
+void start ( std::string name, measurements::Type type ) {
+	MeasurementEngine::INSTANCE.push_measurement_frame ( std::move ( name ), type );
+}
+
+void end ( ) {
+	MeasurementEngine::INSTANCE.pop_measurement_frame ( );
+}
+
+void print_as_list ( std::ostream & os ) {
+	MeasurementEngine::INSTANCE.print_as_list ( os );
+}
+
+}
+
+#endif /* MEASUREMENTS_HPP_ */
diff --git a/alib2algo/test-src/measurements/MeasurementsTest.cpp b/alib2algo/test-src/measurements/MeasurementsTest.cpp
index b42318da27..253c94cfb5 100644
--- a/alib2algo/test-src/measurements/MeasurementsTest.cpp
+++ b/alib2algo/test-src/measurements/MeasurementsTest.cpp
@@ -1,5 +1,5 @@
 #include "MeasurementsTest.h"
-#include "measurements/Measurements.hpp"
+#include "measurements/measurements.hpp"
 #include <thread>
 #include <cmath>
 
@@ -13,29 +13,30 @@ void MeasurementsTest::tearDown ( ) {
 }
 
 void MeasurementsTest::testMeasurements ( ) {
-	measurements::Measurements::start ( "global", measurements::Type::OVERALL );
-		measurements::Measurements::start ( "init", measurements::Type::INIT );
+	measurements::start ( "global", measurements::Type::OVERALL );
+		measurements::start ( "init", measurements::Type::INIT );
 		std::this_thread::sleep_for ( std::chrono::milliseconds ( 100 ) );
-		measurements::Measurements::end ( );
-		measurements::Measurements::start ( "main", measurements::Type::MAIN );
+		measurements::end ( );
+		measurements::start ( "main", measurements::Type::MAIN );
 			std::this_thread::sleep_for ( std::chrono::milliseconds ( 20 ) );
-			measurements::Measurements::start ( "aux", measurements::Type::AUXILIARY );
+			measurements::start ( "aux", measurements::Type::AUXILIARY );
 				std::this_thread::sleep_for ( std::chrono::milliseconds ( 40 ) );
-			measurements::Measurements::end ( );
+			measurements::end ( );
 			std::this_thread::sleep_for ( std::chrono::milliseconds ( 80 ) );
-			measurements::Measurements::start ( "aux", measurements::Type::AUXILIARY );
+			measurements::start ( "aux", measurements::Type::AUXILIARY );
 				std::this_thread::sleep_for ( std::chrono::milliseconds ( 40 ) );
-			measurements::Measurements::end ( );
+			measurements::end ( );
 			std::this_thread::sleep_for ( std::chrono::milliseconds ( 80 ) );
-		measurements::Measurements::end ( );
-		measurements::Measurements::start ( "fin", measurements::Type::FINALIZE );
+		measurements::end ( );
+		measurements::start ( "fin", measurements::Type::FINALIZE );
 			std::this_thread::sleep_for ( std::chrono::milliseconds ( 30 ) );
-			measurements::Measurements::start ( "aux", measurements::Type::AUXILIARY );
+			measurements::start ( "aux", measurements::Type::AUXILIARY );
 				std::this_thread::sleep_for ( std::chrono::milliseconds ( 40 ) );
-			measurements::Measurements::end ( );
+			measurements::end ( );
 			std::this_thread::sleep_for ( std::chrono::milliseconds ( 80 ) );
-		measurements::Measurements::end ( );
-	measurements::Measurements::end ( );
+		measurements::end ( );
+	measurements::end ( );
 
-	measurements::Measurements::print ( std::cout );
+	measurements::print_as_list ( std::cout );
+	std::cout << std::endl;
 }
-- 
GitLab