15
15
#ifndef THIRD_PARTY_CEL_CPP_COMMON_TYPE_KIND_H_
16
16
#define THIRD_PARTY_CEL_CPP_COMMON_TYPE_KIND_H_
17
17
18
+ #include < cstdint>
18
19
#include < type_traits>
19
20
20
21
#include " absl/base/attributes.h"
@@ -28,35 +29,35 @@ namespace cel {
28
29
// All `TypeKind` are valid `Kind`, but it is not guaranteed that all `Kind` are
29
30
// valid `TypeKind`.
30
31
enum class TypeKind : std::underlying_type_t <Kind> {
31
- kNull = static_cast <int >(Kind::kNull ),
32
- kBool = static_cast <int >(Kind::kBool ),
33
- kInt = static_cast <int >(Kind::kInt ),
34
- kUint = static_cast <int >(Kind::kUint ),
35
- kDouble = static_cast <int >(Kind::kDouble ),
36
- kString = static_cast <int >(Kind::kString ),
37
- kBytes = static_cast <int >(Kind::kBytes ),
38
- kStruct = static_cast <int >(Kind::kStruct ),
39
- kDuration = static_cast <int >(Kind::kDuration ),
40
- kTimestamp = static_cast <int >(Kind::kTimestamp ),
41
- kList = static_cast <int >(Kind::kList ),
42
- kMap = static_cast <int >(Kind::kMap ),
43
- kUnknown = static_cast <int >(Kind::kUnknown ),
44
- kType = static_cast <int >(Kind::kType ),
45
- kError = static_cast <int >(Kind::kError ),
46
- kAny = static_cast <int >(Kind::kAny ),
47
- kDyn = static_cast <int >(Kind::kDyn ),
48
- kOpaque = static_cast <int >(Kind::kOpaque ),
49
-
50
- kBoolWrapper = static_cast <int >(Kind::kBoolWrapper ),
51
- kIntWrapper = static_cast <int >(Kind::kIntWrapper ),
52
- kUintWrapper = static_cast <int >(Kind::kUintWrapper ),
53
- kDoubleWrapper = static_cast <int >(Kind::kDoubleWrapper ),
54
- kStringWrapper = static_cast <int >(Kind::kStringWrapper ),
55
- kBytesWrapper = static_cast <int >(Kind::kBytesWrapper ),
56
-
57
- kTypeParam = static_cast <int >(Kind::kTypeParam ),
58
- kFunction = static_cast <int >(Kind::kFunction ),
59
- kEnum = static_cast <int >(Kind::kEnum ),
32
+ kNull = static_cast <uint8_t >(Kind::kNull ),
33
+ kBool = static_cast <uint8_t >(Kind::kBool ),
34
+ kInt = static_cast <uint8_t >(Kind::kInt ),
35
+ kUint = static_cast <uint8_t >(Kind::kUint ),
36
+ kDouble = static_cast <uint8_t >(Kind::kDouble ),
37
+ kString = static_cast <uint8_t >(Kind::kString ),
38
+ kBytes = static_cast <uint8_t >(Kind::kBytes ),
39
+ kStruct = static_cast <uint8_t >(Kind::kStruct ),
40
+ kDuration = static_cast <uint8_t >(Kind::kDuration ),
41
+ kTimestamp = static_cast <uint8_t >(Kind::kTimestamp ),
42
+ kList = static_cast <uint8_t >(Kind::kList ),
43
+ kMap = static_cast <uint8_t >(Kind::kMap ),
44
+ kUnknown = static_cast <uint8_t >(Kind::kUnknown ),
45
+ kType = static_cast <uint8_t >(Kind::kType ),
46
+ kError = static_cast <uint8_t >(Kind::kError ),
47
+ kAny = static_cast <uint8_t >(Kind::kAny ),
48
+ kDyn = static_cast <uint8_t >(Kind::kDyn ),
49
+ kOpaque = static_cast <uint8_t >(Kind::kOpaque ),
50
+
51
+ kBoolWrapper = static_cast <uint8_t >(Kind::kBoolWrapper ),
52
+ kIntWrapper = static_cast <uint8_t >(Kind::kIntWrapper ),
53
+ kUintWrapper = static_cast <uint8_t >(Kind::kUintWrapper ),
54
+ kDoubleWrapper = static_cast <uint8_t >(Kind::kDoubleWrapper ),
55
+ kStringWrapper = static_cast <uint8_t >(Kind::kStringWrapper ),
56
+ kBytesWrapper = static_cast <uint8_t >(Kind::kBytesWrapper ),
57
+
58
+ kTypeParam = static_cast <uint8_t >(Kind::kTypeParam ),
59
+ kFunction = static_cast <uint8_t >(Kind::kFunction ),
60
+ kEnum = static_cast <uint8_t >(Kind::kEnum ),
60
61
61
62
// Legacy aliases, deprecated do not use.
62
63
kNullType = kNull ,
@@ -69,7 +70,7 @@ enum class TypeKind : std::underlying_type_t<Kind> {
69
70
// INTERNAL: Do not exceed 63. Implementation details rely on the fact that
70
71
// we can store `Kind` using 6 bits.
71
72
kNotForUseWithExhaustiveSwitchStatements =
72
- static_cast <int >(Kind::kNotForUseWithExhaustiveSwitchStatements ),
73
+ static_cast <uint8_t >(Kind::kNotForUseWithExhaustiveSwitchStatements ),
73
74
};
74
75
75
76
constexpr Kind TypeKindToKind (TypeKind kind) {
0 commit comments