From: Joel Rosdahl Date: Wed, 28 Dec 2022 09:15:23 +0000 (+0100) Subject: enhance: Add offsetted get/set/increment methods for StatisticsCounters X-Git-Tag: v4.8~59 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=93e793b8f64e61ad8f27a065c6565a951cfcad1d;p=thirdparty%2Fccache.git enhance: Add offsetted get/set/increment methods for StatisticsCounters --- diff --git a/src/core/StatisticsCounters.cpp b/src/core/StatisticsCounters.cpp index 3f1f2d656..f0361719c 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(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(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(static_cast(statistic) + offset), + value); +} + size_t StatisticsCounters::size() const { diff --git a/src/core/StatisticsCounters.hpp b/src/core/StatisticsCounters.hpp index 21bb1b3d7..ea325680c 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 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;