MCPcopy Create free account
hub / github.com/cel-expr/cel-cpp / CelValueToValue

Function CelValueToValue

eval/public/transform_utility.cc:26–125  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

24namespace runtime {
25
26absl::Status CelValueToValue(const CelValue& value, Value* result,
27 google::protobuf::Arena* arena) {
28 switch (value.type()) {
29 case CelValue::Type::kBool:
30 result->set_bool_value(value.BoolOrDie());
31 break;
32 case CelValue::Type::kInt64:
33 result->set_int64_value(value.Int64OrDie());
34 break;
35 case CelValue::Type::kUint64:
36 result->set_uint64_value(value.Uint64OrDie());
37 break;
38 case CelValue::Type::kDouble:
39 result->set_double_value(value.DoubleOrDie());
40 break;
41 case CelValue::Type::kString:
42 result->set_string_value(value.StringOrDie().value().data(),
43 value.StringOrDie().value().size());
44 break;
45 case CelValue::Type::kBytes:
46 result->set_bytes_value(value.BytesOrDie().value().data(),
47 value.BytesOrDie().value().size());
48 break;
49 case CelValue::Type::kDuration: {
50 google::protobuf::Duration duration;
51 auto status =
52 cel::internal::EncodeDuration(value.DurationOrDie(), &duration);
53 if (!status.ok()) {
54 return status;
55 }
56 result->mutable_object_value()->PackFrom(duration);
57 break;
58 }
59 case CelValue::Type::kTimestamp: {
60 google::protobuf::Timestamp timestamp;
61 auto status =
62 cel::internal::EncodeTime(value.TimestampOrDie(), &timestamp);
63 if (!status.ok()) {
64 return status;
65 }
66 result->mutable_object_value()->PackFrom(timestamp);
67 break;
68 }
69 case CelValue::Type::kNullType:
70 result->set_null_value(google::protobuf::NullValue::NULL_VALUE);
71 break;
72 case CelValue::Type::kMessage:
73 if (value.IsNull()) {
74 result->set_null_value(google::protobuf::NullValue::NULL_VALUE);
75 } else {
76 result->mutable_object_value()->PackFrom(*value.MessageOrDie());
77 }
78 break;
79 case CelValue::Type::kList: {
80 auto& list = *value.ListOrDie();
81 auto* list_value = result->mutable_list_value();
82 for (int i = 0; i < list.size(); ++i) {
83 CEL_RETURN_IF_ERROR(CelValueToValue(list.Get(arena, i),

Callers

nothing calls this directly

Calls 15

EncodeDurationFunction · 0.85
EncodeTimeFunction · 0.85
typeMethod · 0.80
BoolOrDieMethod · 0.80
Int64OrDieMethod · 0.80
Uint64OrDieMethod · 0.80
DoubleOrDieMethod · 0.80
StringOrDieMethod · 0.80
BytesOrDieMethod · 0.80
DurationOrDieMethod · 0.80
TimestampOrDieMethod · 0.80
MessageOrDieMethod · 0.80

Tested by

no test coverage detected