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

Function writeMapRefAndType

go/fory/map.go:579–605  ·  view source on GitHub ↗

Helper functions writeMapRefAndType handles reference and type writing for maps. Returns true if value was already written (nil or ref).

(ctx *WriteContext, refMode RefMode, writeType bool, value reflect.Value)

Source from the content-addressed store, hash-verified

577// writeMapRefAndType handles reference and type writing for maps.
578// Returns true if value was already written (nil or ref).
579func writeMapRefAndType(ctx *WriteContext, refMode RefMode, writeType bool, value reflect.Value) bool {
580 switch refMode {
581 case RefModeTracking:
582 if value.IsNil() {
583 ctx.buffer.WriteInt8(NullFlag)
584 return true
585 }
586 refWritten, err := ctx.RefResolver().WriteRefOrNull(ctx.buffer, value)
587 if err != nil {
588 ctx.SetError(FromError(err))
589 return false
590 }
591 if refWritten {
592 return true
593 }
594 case RefModeNullOnly:
595 if value.IsNil() {
596 ctx.buffer.WriteInt8(NullFlag)
597 return true
598 }
599 ctx.buffer.WriteInt8(NotNullValueFlag)
600 }
601 if writeType {
602 ctx.buffer.WriteUint8(uint8(MAP))
603 }
604 return false
605}
606
607// readMapRefAndType handles reference and type reading for maps.
608// Returns true if a reference was resolved.

Callers 9

WriteMethod · 0.85
WriteMethod · 0.85
WriteMethod · 0.85
WriteMethod · 0.85
WriteMethod · 0.85
WriteMethod · 0.85
WriteMethod · 0.85
WriteMethod · 0.85
WriteMethod · 0.85

Calls 7

FromErrorFunction · 0.85
WriteRefOrNullMethod · 0.80
WriteUint8Method · 0.80
uint8Function · 0.50
WriteInt8Method · 0.45
RefResolverMethod · 0.45
SetErrorMethod · 0.45

Tested by

no test coverage detected