diff options
author | Joel Rosdahl <joel@rosdahl.net> | 2022-12-28 10:15:23 +0100 |
---|---|---|
committer | Joel Rosdahl <joel@rosdahl.net> | 2023-01-11 19:42:31 +0100 |
commit | 93e793b8f64e61ad8f27a065c6565a951cfcad1d (patch) | |
tree | 7a46e366bd6972ed828833cef7c24ed8cfaa19d8 /src | |
parent | 3503eca97178bb97bf2a24d456e717578c5e7382 (diff) | |
download | ccache-93e793b8f64e61ad8f27a065c6565a951cfcad1d.tar.gz |
enhance: Add offsetted get/set/increment methods for StatisticsCounters
Diffstat (limited to 'src')
-rw-r--r-- | src/core/StatisticsCounters.cpp | 31 | ||||
-rw-r--r-- | src/core/StatisticsCounters.hpp | 9 |
2 files changed, 33 insertions, 7 deletions
diff --git a/src/core/StatisticsCounters.cpp b/src/core/StatisticsCounters.cpp index 3f1f2d65..f0361719 100644 --- a/src/core/StatisticsCounters.cpp +++ b/src/core/StatisticsCounters.cpp @@ -51,6 +51,19 @@ StatisticsCounters::get(Statistic statistic) const return index < m_counters.size() ? m_counters[index] : 0; } +uint64_t +StatisticsCounters::get_offsetted(Statistic statistic, size_t offset) const +{ + return get_raw(static_cast<size_t>(statistic) + offset); +} + +uint64_t +StatisticsCounters::get_raw(size_t index) const +{ + ASSERT(index < size()); + return m_counters[index]; +} + void StatisticsCounters::set(Statistic statistic, uint64_t value) { @@ -59,11 +72,12 @@ StatisticsCounters::set(Statistic statistic, uint64_t value) m_counters[index] = value; } -uint64_t -StatisticsCounters::get_raw(size_t index) const +void +StatisticsCounters::set_offsetted(Statistic statistic, + size_t offset, + uint64_t value) { - ASSERT(index < size()); - return m_counters[index]; + set_raw(static_cast<size_t>(statistic) + offset, value); } void @@ -101,6 +115,15 @@ StatisticsCounters::increment(const StatisticsCounters& other) } } +void +StatisticsCounters::increment_offsetted(Statistic statistic, + size_t offset, + int64_t value) +{ + increment(static_cast<Statistic>(static_cast<size_t>(statistic) + offset), + value); +} + size_t StatisticsCounters::size() const { diff --git a/src/core/StatisticsCounters.hpp b/src/core/StatisticsCounters.hpp index 21bb1b3d..ea325680 100644 --- a/src/core/StatisticsCounters.hpp +++ b/src/core/StatisticsCounters.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2010-2021 Joel Rosdahl and other contributors +// Copyright (C) 2010-2022 Joel Rosdahl and other contributors // // See doc/AUTHORS.adoc for a complete list of contributors. // @@ -37,13 +37,16 @@ public: StatisticsCounters(std::initializer_list<Statistic> statistics); uint64_t get(Statistic statistic) const; - void set(Statistic statistic, uint64_t value); - + uint64_t get_offsetted(Statistic statistic, size_t offset) const; uint64_t get_raw(size_t index) const; + + void set(Statistic statistic, uint64_t value); + void set_offsetted(Statistic statistic, size_t offset, uint64_t value); void set_raw(size_t index, uint64_t value); void increment(Statistic statistic, int64_t value = 1); void increment(const StatisticsCounters& other); + void increment_offsetted(Statistic statistic, size_t offset, int64_t value); size_t size() const; |