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

Function isReferencableType

go/fory/codegen/encoder.go:715–738  ·  view source on GitHub ↗

isReferencableType checks if a type is referencable (needs reference tracking)

(t types.Type)

Source from the content-addressed store, hash-verified

713
714// isReferencableType checks if a type is referencable (needs reference tracking)
715func isReferencableType(t types.Type) bool {
716 // Handle pointer types
717 if _, ok := t.(*types.Pointer); ok {
718 return true
719 }
720
721 // Basic types and their underlying types
722 if basic, ok := t.Underlying().(*types.Basic); ok {
723 return basic.Kind() == types.String
724 }
725
726 // Slices, maps, and interfaces are referencable
727 switch t.Underlying().(type) {
728 case *types.Slice, *types.Map, *types.Interface:
729 return true
730 }
731
732 // Structs are referencable
733 if _, ok := t.Underlying().(*types.Struct); ok {
734 return true
735 }
736
737 return false
738}
739
740// generateMapKeyWrite generates code to write a map key
741func generateMapKeyWrite(buf *bytes.Buffer, keyType types.Type, varName string) error {

Callers 7

generateOptionReadTypedFunction · 0.85
generateSliceReadInlineFunction · 0.85
generateOptionWriteTypedFunction · 0.85
generateSliceWriteInlineFunction · 0.85
writeMapChunksCodeFunction · 0.85

Calls 1

KindMethod · 0.80

Tested by

no test coverage detected