summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorJoel Rosdahl <joel@rosdahl.net>2022-12-28 10:15:23 +0100
committerJoel Rosdahl <joel@rosdahl.net>2023-01-11 19:42:31 +0100
commit93e793b8f64e61ad8f27a065c6565a951cfcad1d (patch)
tree7a46e366bd6972ed828833cef7c24ed8cfaa19d8 /src/core
parent3503eca97178bb97bf2a24d456e717578c5e7382 (diff)
downloadccache-93e793b8f64e61ad8f27a065c6565a951cfcad1d.tar.gz
enhance: Add offsetted get/set/increment methods for StatisticsCounters
Diffstat (limited to 'src/core')
-rw-r--r--src/core/StatisticsCounters.cpp31
-rw-r--r--src/core/StatisticsCounters.hpp9
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;