MCPcopy Create free account
hub / github.com/apache/fory / wrapMapSerializerIfNeeded

Function wrapMapSerializerIfNeeded

go/fory/map.go:649–671  ·  view source on GitHub ↗
(declaredType, actualType reflect.Type, serializer Serializer)

Source from the content-addressed store, hash-verified

647}
648
649func wrapMapSerializerIfNeeded(declaredType, actualType reflect.Type, serializer Serializer) (reflect.Type, Serializer) {
650 if declaredType == nil || actualType == nil || serializer == nil {
651 return actualType, serializer
652 }
653 if declaredType.Kind() == reflect.Ptr {
654 if actualType.Kind() == reflect.Ptr {
655 return actualType, serializer
656 }
657 return reflect.PtrTo(actualType), &ptrToValueSerializer{valueSerializer: serializer}
658 }
659 if declaredType.Kind() == reflect.Interface {
660 if actualType.AssignableTo(declaredType) {
661 return actualType, serializer
662 }
663 if actualType.Kind() != reflect.Ptr {
664 ptrType := reflect.PtrTo(actualType)
665 if ptrType.AssignableTo(declaredType) {
666 return ptrType, &ptrToValueSerializer{valueSerializer: serializer}
667 }
668 }
669 }
670 return actualType, serializer
671}
672
673// UnwrapReflectValue is exported for use by other packages
674func UnwrapReflectValue(v reflect.Value) reflect.Value {

Callers 4

readSameTypeMethod · 0.85
readSingleValueMethod · 0.85
readChunkMethod · 0.85
ReadDataMethod · 0.85

Calls 1

KindMethod · 0.80

Tested by

no test coverage detected