blob: 90c4fd3b4c74b13c5d3b590ab7a1b8556f5c26df [file] [log] [blame]
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +00001#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 CollectionTimeScope : uint32_t
11{
12 point,
13 interval,
14 startup
15};
16
17namespace utils
18{
19
20constexpr std::array<std::pair<std::string_view, CollectionTimeScope>, 3>
21 convDataCollectionTimeScope = {
22 {std::make_pair<std::string_view, CollectionTimeScope>(
23 "Point", CollectionTimeScope::point),
24 std::make_pair<std::string_view, CollectionTimeScope>(
25 "Interval", CollectionTimeScope::interval),
26 std::make_pair<std::string_view, CollectionTimeScope>(
27 "StartupInterval", CollectionTimeScope::startup)}};
28
29inline CollectionTimeScope
30 toCollectionTimeScope(std::underlying_type_t<CollectionTimeScope> value)
31{
Krzysztof Grobelny51497a02021-11-09 14:56:22 +010032 return toEnum<CollectionTimeScope,
33 minEnumValue(convDataCollectionTimeScope),
34 maxEnumValue(convDataCollectionTimeScope)>(value);
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +000035}
36
Krzysztof Grobelny51497a02021-11-09 14:56:22 +010037inline CollectionTimeScope toCollectionTimeScope(const std::string& value)
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +000038{
Krzysztof Grobelny51497a02021-11-09 14:56:22 +010039 return toEnum(convDataCollectionTimeScope, value);
Krzysztof Grobelnydcc4e192021-03-08 09:09:34 +000040}
41
42inline std::string enumToString(CollectionTimeScope value)
43{
44 return std::string(enumToString(convDataCollectionTimeScope, value));
45}
46
Krzysztof Grobelny51497a02021-11-09 14:56:22 +010047} // namespace utils