MCPcopy
hub / github.com/protocolbuffers/protobuf-go / isDefaultScalar

Function isDefaultScalar

testing/protocmp/util.go:373–404  ·  view source on GitHub ↗
(m Message, k string)

Source from the content-addressed store, hash-verified

371}
372
373func isDefaultScalar(m Message, k string) bool {
374 if _, ok := m[k]; !ok {
375 return true
376 }
377
378 var fd protoreflect.FieldDescriptor
379 switch mm := m[messageTypeKey].(messageMeta); {
380 case protoreflect.Name(k).IsValid():
381 fd = mm.md.Fields().ByTextName(k)
382 default:
383 fd = mm.xds[k]
384 }
385 if fd == nil || !fd.Default().IsValid() {
386 return false
387 }
388 switch fd.Kind() {
389 case protoreflect.BytesKind:
390 v, ok := m[k].([]byte)
391 return ok && bytes.Equal(fd.Default().Bytes(), v)
392 case protoreflect.FloatKind:
393 v, ok := m[k].(float32)
394 return ok && equalFloat64(fd.Default().Float(), float64(v))
395 case protoreflect.DoubleKind:
396 v, ok := m[k].(float64)
397 return ok && equalFloat64(fd.Default().Float(), float64(v))
398 case protoreflect.EnumKind:
399 v, ok := m[k].(Enum)
400 return ok && fd.Default().Enum() == v.Number()
401 default:
402 return reflect.DeepEqual(fd.Default().Interface(), m[k])
403 }
404}
405
406func equalFloat64(x, y float64) bool {
407 return x == y || (math.IsNaN(x) && math.IsNaN(y))

Callers 1

IgnoreDefaultScalarsFunction · 0.85

Calls 13

DefaultMethod · 0.95
KindMethod · 0.95
NameTypeAlias · 0.92
equalFloat64Function · 0.85
IsValidMethod · 0.65
ByTextNameMethod · 0.65
FieldsMethod · 0.65
EnumMethod · 0.65
NumberMethod · 0.65
InterfaceMethod · 0.65
EqualMethod · 0.45
BytesMethod · 0.45

Tested by

no test coverage detected