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)
{
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
}
}
+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
{
-// 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.
//
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;