Zserio C++17 runtime library  0.5.0
Built for Zserio 2.17.0
BuiltInOperators.h
Go to the documentation of this file.
1 #ifndef ZSERIO_BUILTIN_BUILT_IN_OPERATORS_H_INC
2 #define ZSERIO_BUILTIN_BUILT_IN_OPERATORS_H_INC
3 
4 #include <cstdint>
5 
6 #include "zserio/Enums.h"
7 #include "zserio/Traits.h"
8 
9 namespace zserio
10 {
11 
12 namespace builtin
13 {
14 
25 template <typename BITMASK1, typename BITMASK2>
26 bool isSet(BITMASK1 bitmaskValue, BITMASK2 requiredMask)
27 {
28  return (bitmaskValue & requiredMask) == requiredMask;
29 }
30 
51 uint8_t numBits(uint64_t numValues);
52 
60 template <typename T, std::enable_if_t<std::is_enum_v<T>, int> = 0>
61 constexpr auto valueOf(T value)
62 {
63  return enumToValue(value);
64 }
65 
73 template <typename T, std::enable_if_t<zserio::is_bitmask_v<T>, int> = 0>
74 constexpr auto valueOf(T value)
75 {
76  return value.getValue();
77 }
78 
79 } // namespace builtin
80 
81 } // namespace zserio
82 
83 #endif // ifndef ZSERIO_BUILTIN_BUILT_IN_OPERATORS_H_INC
constexpr auto valueOf(T value)
uint8_t numBits(uint64_t numValues)
bool isSet(BITMASK1 bitmaskValue, BITMASK2 requiredMask)
constexpr EnumTraits< T >::ZserioType enumToValue(T value)
Definition: Enums.h:56