2727#include < map>
2828#include < memory>
2929#include < mutex>
30+ #include < numeric>
3031#include < string>
3132#include < utility>
33+ #include < vector>
3234
3335enum class ShowTime : std::uint8_t {
3436 NONE,
@@ -43,15 +45,20 @@ class CPPCHECKLIB TimerResultsIntf {
4345public:
4446 virtual ~TimerResultsIntf () = default ;
4547
46- virtual void addResults (const std::string& timerName, std::chrono::milliseconds duation) = 0;
48+ virtual void addResults (const std::string& name, std::chrono::milliseconds duration) = 0;
49+
50+ static std::chrono::duration<double > asSeconds (std::chrono::milliseconds ms) {
51+ return std::chrono::duration_cast<std::chrono::duration<double >>(ms);
52+ }
4753};
4854
4955struct TimerResultsData {
50- std::chrono::milliseconds mDuration ;
51- long mNumberOfResults {};
56+ std::vector<std::chrono::milliseconds> mResults ;
5257
5358 std::chrono::duration<double > getSeconds () const {
54- return std::chrono::duration_cast<std::chrono::duration<double >>(mDuration );
59+ return std::accumulate (mResults .cbegin (), mResults .cend (), std::chrono::duration<double >{}, [](std::chrono::duration<double > secs, std::chrono::milliseconds duration) {
60+ return secs + TimerResultsIntf::asSeconds (duration);
61+ });
5562 }
5663};
5764
@@ -60,7 +67,7 @@ class CPPCHECKLIB WARN_UNUSED TimerResults : public TimerResultsIntf {
6067 TimerResults () = default ;
6168
6269 void showResults (ShowTime mode, bool metrics = true ) const ;
63- void addResults (const std::string& str , std::chrono::milliseconds duration) override ;
70+ void addResults (const std::string& name , std::chrono::milliseconds duration) override ;
6471
6572 void reset ();
6673
0 commit comments