From 40183fb69ae41549f3fa90c317d1000e8a4effc8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Radovan=20=C4=8Cerven=C3=BD?= <radovan.cerveny@gmail.com>
Date: Sun, 7 Feb 2016 20:12:58 +0100
Subject: [PATCH] changed hints to a template function

---
 alib2algo/src/measurements/MeasurementEngine.cpp | 3 ++-
 alib2algo/src/measurements/MeasurementEngine.hpp | 3 ++-
 alib2algo/src/measurements/MeasurementNew.cpp    | 4 ++--
 alib2algo/src/measurements/measurements.hpp      | 5 +++--
 4 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/alib2algo/src/measurements/MeasurementEngine.cpp b/alib2algo/src/measurements/MeasurementEngine.cpp
index fbbfe7eca1..91ad5d18fb 100644
--- a/alib2algo/src/measurements/MeasurementEngine.cpp
+++ b/alib2algo/src/measurements/MeasurementEngine.cpp
@@ -48,7 +48,8 @@ MeasurementResults MeasurementEngine::get_results ( ) const {
 	return MeasurementResults ( frames );
 }
 
-void MeasurementEngine::memory_hint ( MemoryHint mh ) {
+template < >
+void MeasurementEngine::hint ( MemoryHint mh ) {
 	if ( ( frame_idx_stack.size ( ) == 0 ) || ( frames[frame_idx_stack.back ( )].type == measurements::Type::ROOT ) ) return;
 
 	MemoryDataFrame::hint ( frame_idx_stack.back ( ), frames, std::move ( mh ) );
diff --git a/alib2algo/src/measurements/MeasurementEngine.hpp b/alib2algo/src/measurements/MeasurementEngine.hpp
index f0f75c6748..b56641db67 100644
--- a/alib2algo/src/measurements/MeasurementEngine.hpp
+++ b/alib2algo/src/measurements/MeasurementEngine.hpp
@@ -23,7 +23,8 @@ public:
 	void reset_measurements ( );
 	MeasurementResults get_results ( ) const;
 
-	void memory_hint ( MemoryHint );
+	template < typename Hint >
+	void hint ( Hint );
 
 	static MeasurementEngine INSTANCE;
 };
diff --git a/alib2algo/src/measurements/MeasurementNew.cpp b/alib2algo/src/measurements/MeasurementNew.cpp
index 4be528a7e7..b2d53fbc5b 100644
--- a/alib2algo/src/measurements/MeasurementNew.cpp
+++ b/alib2algo/src/measurements/MeasurementNew.cpp
@@ -22,7 +22,7 @@ void * operator new( std::size_t n, bool measure ) {
 
 			 // send it to the engine if it does not come from stealth allocation
 			if ( measure )
-				measurements::memory_hint ( { measurements::MemoryHint::Type::NEW, n } );
+				measurements::hint ( measurements::MemoryHint { measurements::MemoryHint::Type::NEW, n } );
 
 			return static_cast < void * > ( sptr );
 		}
@@ -48,7 +48,7 @@ void operator delete( void * ptr, bool measure ) noexcept {
 
 	 // read the block size and send it to the engine if it does not come from stealth allocation
 	if ( measure )
-		measurements::memory_hint ( { measurements::MemoryHint::Type::DELETE, * sptr } );
+		measurements::hint ( measurements::MemoryHint { measurements::MemoryHint::Type::DELETE, * sptr } );
 
 	std::free ( sptr );
 }
diff --git a/alib2algo/src/measurements/measurements.hpp b/alib2algo/src/measurements/measurements.hpp
index ecdf40ad3c..f3bf7f2a6d 100644
--- a/alib2algo/src/measurements/measurements.hpp
+++ b/alib2algo/src/measurements/measurements.hpp
@@ -25,8 +25,9 @@ MeasurementResults results ( ) {
 	return MeasurementEngine::INSTANCE.get_results ( );
 }
 
-void memory_hint ( MemoryHint mh ) {
-	MeasurementEngine::INSTANCE.memory_hint ( std::move ( mh ) );
+template < typename Hint >
+void hint ( Hint hint ) {
+	MeasurementEngine::INSTANCE.hint ( std::move ( hint ) );
 }
 
 }
-- 
GitLab