| 241 | } |
| 242 | |
| 243 | absl::optional<uint64_t> ValueAsUInt64(const Value& value) { |
| 244 | if (auto int_value = value.AsInt(); |
| 245 | int_value && int_value->NativeValue() >= 0) { |
| 246 | return static_cast<uint64_t>(int_value->NativeValue()); |
| 247 | } else if (auto uint_value = value.AsUint(); uint_value) { |
| 248 | return uint_value->NativeValue(); |
| 249 | } else if (auto double_value = value.AsDouble(); |
| 250 | double_value && |
| 251 | static_cast<double>(static_cast<uint64_t>( |
| 252 | double_value->NativeValue())) == double_value->NativeValue()) { |
| 253 | return static_cast<uint64_t>(double_value->NativeValue()); |
| 254 | } |
| 255 | return absl::nullopt; |
| 256 | } |
| 257 | |
| 258 | bool ValueToProtoMapKey(const Value& key, |
| 259 | google::protobuf::FieldDescriptor::CppType cpp_type, |
no test coverage detected