24 #include <string_view> 30 class MetricsController;
48 StatsIndexAverage = 2,
52 StatsIndexIntermediateSum = 4,
53 StatsIndexIntermediateSumSquared = 5,
57 static constexpr
size_t count = 4;
58 static constexpr std::array<std::string_view, count> names = {
"min"sv,
"max"sv,
"average"sv,
"stdDev"sv};
59 static constexpr std::string_view nameStatsAll =
"*"sv;
65 StatsMin = 1 << StatsIndexMin,
66 StatsMax = 1 << StatsIndexMax,
67 StatsAverage = 1 << StatsIndexAverage,
68 StatsStdDev = 1 << StatsIndexStdDev,
71 StatsAll = StatsMin | StatsMax | StatsAverage | StatsStdDev,
73 static constexpr std::array<Stats, count> allStats = {StatsMin, StatsMax, StatsAverage, StatsStdDev};
75 static Stats statsFromName(
const std::string_view& statName);
76 static Stats statsRequiredForStat(Stats stat);
79 static constexpr
size_t extraCount = count + 2;
85 StatsDependencyMin = StatsMin,
86 StatsDependencyMax = StatsMax,
87 StatsDependencyStdDev = StatsStdDev,
88 StatsDependencyAverage = StatsAverage | StatsDependencyStdDev,
89 StatsDependencySum = StatsDependencyAverage,
90 StatsDependencySumSquared = StatsDependencyStdDev,
92 static constexpr std::array<StatsDependency, extraCount> StatsDependencies = {StatsDependencyMin, StatsDependencyMax, StatsDependencyAverage, StatsDependencyStdDev, StatsDependencySum, StatsDependencySumSquared};
106 return static_cast<Statistics::Stats>(
static_cast<uint64_t
>(a) | static_cast<uint64_t>(b));
StatsIndex
Associates a unique index to each statistic.
constexpr Statistics::Stats & operator|=(Statistics::Stats &a, T b)
Performs and assigns bitwise OR of two statistics.
Stats
Bitwise type te select statistics.
Class holding various statistics-related types and variables.
constexpr Statistics::Stats operator|(Statistics::Stats a, T b)
Performs bitwise OR of two statistics.
friend MetricsController
MetricsController can access to protected types and variables.
StatsDependency
Dependency tree of each statistic.