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

Function AnyFromValue

eval/public/structs/cel_proto_wrap_util.cc:1241–1339  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1239}
1240
1241google::protobuf::Message* AnyFromValue(const google::protobuf::Message* prototype,
1242 const CelValue& value, google::protobuf::Arena* arena) {
1243 std::string type_name;
1244 absl::Cord payload;
1245
1246 // In open source, any->PackFrom() returns void rather than boolean.
1247 switch (value.type()) {
1248 case CelValue::Type::kBool: {
1249 BoolValue v;
1250 type_name = v.GetTypeName();
1251 v.set_value(value.BoolOrDie());
1252 payload = v.SerializeAsCord();
1253 } break;
1254 case CelValue::Type::kBytes: {
1255 BytesValue v;
1256 type_name = v.GetTypeName();
1257 v.set_value(std::string(value.BytesOrDie().value()));
1258 payload = v.SerializeAsCord();
1259 } break;
1260 case CelValue::Type::kDouble: {
1261 DoubleValue v;
1262 type_name = v.GetTypeName();
1263 v.set_value(value.DoubleOrDie());
1264 payload = v.SerializeAsCord();
1265 } break;
1266 case CelValue::Type::kDuration: {
1267 Duration v;
1268 if (!cel::internal::EncodeDuration(value.DurationOrDie(), &v).ok()) {
1269 return nullptr;
1270 }
1271 type_name = v.GetTypeName();
1272 payload = v.SerializeAsCord();
1273 } break;
1274 case CelValue::Type::kInt64: {
1275 Int64Value v;
1276 type_name = v.GetTypeName();
1277 v.set_value(value.Int64OrDie());
1278 payload = v.SerializeAsCord();
1279 } break;
1280 case CelValue::Type::kString: {
1281 StringValue v;
1282 type_name = v.GetTypeName();
1283 v.set_value(std::string(value.StringOrDie().value()));
1284 payload = v.SerializeAsCord();
1285 } break;
1286 case CelValue::Type::kTimestamp: {
1287 Timestamp v;
1288 if (!cel::internal::EncodeTime(value.TimestampOrDie(), &v).ok()) {
1289 return nullptr;
1290 }
1291 type_name = v.GetTypeName();
1292 payload = v.SerializeAsCord();
1293 } break;
1294 case CelValue::Type::kUint64: {
1295 UInt64Value v;
1296 type_name = v.GetTypeName();
1297 v.set_value(value.Uint64OrDie());
1298 payload = v.SerializeAsCord();

Callers 1

MaybeWrapMessageMethod · 0.85

Calls 15

EncodeDurationFunction · 0.85
EncodeTimeFunction · 0.85
ListFromValueFunction · 0.85
StructFromValueFunction · 0.85
typeMethod · 0.80
BoolOrDieMethod · 0.80
BytesOrDieMethod · 0.80
DoubleOrDieMethod · 0.80
DurationOrDieMethod · 0.80
Int64OrDieMethod · 0.80
StringOrDieMethod · 0.80
TimestampOrDieMethod · 0.80

Tested by

no test coverage detected