From d8bd29d96cd315797540bada51de3100532c7d01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Radovan=20=C4=8Cerven=C3=BD?= <radovan.cerveny@gmail.com> Date: Fri, 29 Jan 2016 11:15:08 +0100 Subject: [PATCH] moved from raw pointers to smart ones, custom make_unique --- alib2algo/src/measurements/MeasurementTypes.hpp | 7 +++++++ alib2algo/src/measurements/Measurements.cpp | 16 +++++----------- alib2algo/src/measurements/Measurements.hpp | 3 +-- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/alib2algo/src/measurements/MeasurementTypes.hpp b/alib2algo/src/measurements/MeasurementTypes.hpp index a1332e8665..4b2890eb2b 100644 --- a/alib2algo/src/measurements/MeasurementTypes.hpp +++ b/alib2algo/src/measurements/MeasurementTypes.hpp @@ -5,12 +5,19 @@ #ifndef MEASUREMENT_TYPES_HPP_ #define MEASUREMENT_TYPES_HPP_ +#include <memory> + namespace measurements { enum Type { OVERALL = 1, INIT = 2, FINALIZE = 4, MAIN = 8, AUXILIARY = 16 }; +template < typename T, typename ... Args > +std::unique_ptr < T > make_unique ( Args && ... args ) { + return std::unique_ptr < T > ( new T ( std::forward < Args > ( args ) ... ) ); +} + } #endif /* MEASUREMENT_TYPES_HPP_ */ diff --git a/alib2algo/src/measurements/Measurements.cpp b/alib2algo/src/measurements/Measurements.cpp index c81a45ab6f..43f776a541 100644 --- a/alib2algo/src/measurements/Measurements.cpp +++ b/alib2algo/src/measurements/Measurements.cpp @@ -13,14 +13,8 @@ Measurements Measurements::INSTANCE; /** * constructs all available measurement engines */ -Measurements::Measurements ( ) : measurement_engines ( { - new TimeMeasurementEngine ( ) - } ) { -} - -Measurements::~Measurements ( ) { - for ( auto me : measurement_engines ) - delete me; +Measurements::Measurements ( ) { + measurement_engines.emplace_back ( measurements::make_unique < TimeMeasurementEngine > ( ) ); } /** @@ -28,7 +22,7 @@ Measurements::~Measurements ( ) { * @param block_name */ void Measurements::start ( std::string block_name, measurements::Type type ) { - for ( auto me : INSTANCE.measurement_engines ) + for ( auto & me : INSTANCE.measurement_engines ) me->push_measurement_frame ( block_name, type ); } @@ -36,12 +30,12 @@ void Measurements::start ( std::string block_name, measurements::Type type ) { * pops the block from the measurements stack */ void Measurements::end ( ) { - for ( auto me : INSTANCE.measurement_engines ) + for ( auto & me : INSTANCE.measurement_engines ) me->pop_measurement_frame ( ); } void Measurements::print ( std::ostream & os ) { - for ( auto me : INSTANCE.measurement_engines ) + 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 index 07b6e5885a..1542a8b920 100644 --- a/alib2algo/src/measurements/Measurements.hpp +++ b/alib2algo/src/measurements/Measurements.hpp @@ -15,10 +15,9 @@ namespace measurements { class Measurements { private: - std::vector < MeasurementEngine * > measurement_engines; + std::vector < std::unique_ptr < MeasurementEngine > > measurement_engines; Measurements ( ); - ~Measurements ( ); private: static Measurements INSTANCE; -- GitLab