diff --git a/alib2algo/src/measurements/MeasurementEngine.cpp b/alib2algo/src/measurements/MeasurementEngine.cpp index fbbfe7eca1bfbf6ef0d8105466872f2ba1e6ff08..91ad5d18fbc0f8a5d224c772051a653f98f8d960 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 f0f75c6748fe8cac2efb11e9056754147c4f7c4b..b56641db678eec8dd28141829bed4a567ae4e132 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 4be528a7e721a272a6693127086587a5b69093b3..b2d53fbc5bc23704a0901c7feafc6797ad5f07ea 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 ecdf40ad3c1d17be0fd6b09c6f36ea92489c428f..f3bf7f2a6dc957810a2e06d1e7d695a847701300 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 ) ); } }