blob: 44348f2f61cb87efad84208978f4c36e86996c41 [file] [log] [blame]
Krzysztof Grobelny51497a02021-11-09 14:56:22 +01001#pragma once
2
3#include "utils/conversion.hpp"
4
5#include <array>
6#include <cstdint>
7#include <string_view>
8#include <type_traits>
9
10enum class ReportAction : uint32_t
11{
12 emitsReadingsUpdate,
13 logToMetricReportsCollection
14};
15
16namespace utils
17{
18
19constexpr std::array<std::pair<std::string_view, ReportAction>, 2>
20 convDataReportAction = {
21 {std::make_pair<std::string_view, ReportAction>(
22 "EmitsReadingsUpdate", ReportAction::emitsReadingsUpdate),
23 std::make_pair<std::string_view, ReportAction>(
24 "LogToMetricReportsCollection",
25 ReportAction::logToMetricReportsCollection)}};
26
27inline ReportAction toReportAction(std::underlying_type_t<ReportAction> value)
28{
29 return toEnum<ReportAction, minEnumValue(convDataReportAction),
30 maxEnumValue(convDataReportAction)>(value);
31}
32
33inline ReportAction toReportAction(const std::string& value)
34{
35 return toEnum(convDataReportAction, value);
36}
37
38inline std::string enumToString(ReportAction value)
39{
40 return std::string(enumToString(convDataReportAction, value));
41}
42
43} // namespace utils