Skip to content

Commit ccc9a70

Browse files
jckingcopybara-github
authored andcommitted
Implement hand-rolled variant for cel::Value
Also updates the default constructed `cel::Value` to be `cel::NullValue`. PiperOrigin-RevId: 739014098
1 parent 5f69d8b commit ccc9a70

23 files changed

+1913
-877
lines changed

common/kind.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,14 @@
1515
#ifndef THIRD_PARTY_CEL_CPP_COMMON_KIND_H_
1616
#define THIRD_PARTY_CEL_CPP_COMMON_KIND_H_
1717

18+
#include <cstdint>
19+
1820
#include "absl/base/attributes.h"
1921
#include "absl/strings/string_view.h"
2022

2123
namespace cel {
2224

23-
enum class Kind /* : uint8_t */ {
25+
enum class Kind : uint8_t {
2426
// Must match legacy CelValue::Type.
2527
kNull = 0,
2628
kBool,

common/type_kind.h

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#ifndef THIRD_PARTY_CEL_CPP_COMMON_TYPE_KIND_H_
1616
#define THIRD_PARTY_CEL_CPP_COMMON_TYPE_KIND_H_
1717

18+
#include <cstdint>
1819
#include <type_traits>
1920

2021
#include "absl/base/attributes.h"
@@ -28,35 +29,35 @@ namespace cel {
2829
// All `TypeKind` are valid `Kind`, but it is not guaranteed that all `Kind` are
2930
// valid `TypeKind`.
3031
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),
6061

6162
// Legacy aliases, deprecated do not use.
6263
kNullType = kNull,
@@ -69,7 +70,7 @@ enum class TypeKind : std::underlying_type_t<Kind> {
6970
// INTERNAL: Do not exceed 63. Implementation details rely on the fact that
7071
// we can store `Kind` using 6 bits.
7172
kNotForUseWithExhaustiveSwitchStatements =
72-
static_cast<int>(Kind::kNotForUseWithExhaustiveSwitchStatements),
73+
static_cast<uint8_t>(Kind::kNotForUseWithExhaustiveSwitchStatements),
7374
};
7475

7576
constexpr Kind TypeKindToKind(TypeKind kind) {

0 commit comments

Comments
 (0)