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

Method writeNullValueEntry

go/fory/map.go:122–156  ·  view source on GitHub ↗

writeNullValueEntry writes a single entry where the value is null

(ctx *WriteContext, key reflect.Value, resolver *TypeResolver, trackRef bool)

Source from the content-addressed store, hash-verified

120
121// writeNullValueEntry writes a single entry where the value is null
122func (s mapSerializer) writeNullValueEntry(ctx *WriteContext, key reflect.Value, resolver *TypeResolver, trackRef bool) {
123 buf := ctx.Buffer()
124
125 if s.hasGenerics && s.keySerializer != nil {
126 if s.keyReferencable && trackRef {
127 buf.WriteInt8(NULL_VALUE_KEY_DECL_TYPE_TRACKING_REF)
128 s.keySerializer.Write(ctx, RefModeTracking, false, true, key)
129 } else {
130 buf.WriteInt8(NULL_VALUE_KEY_DECL_TYPE)
131 writeSerializerData(ctx, s.keySerializer, true, key)
132 }
133 return
134 }
135
136 // Polymorphic key
137 keyTypeInfo, err := getTypeInfoForValue(key, resolver)
138 if err != nil {
139 ctx.SetError(FromError(err))
140 return
141 }
142
143 header := int8(VALUE_HAS_NULL)
144 writeKeyRef := trackRef && s.keyReferencable && keyTypeInfo.NeedWriteRef
145 if writeKeyRef {
146 header |= TRACKING_KEY_REF
147 }
148 buf.WriteInt8(header)
149 resolver.WriteTypeInfo(buf, keyTypeInfo, ctx.Err())
150
151 refMode := RefModeNone
152 if writeKeyRef {
153 refMode = RefModeTracking
154 }
155 keyTypeInfo.Serializer.Write(ctx, refMode, false, false, key)
156}
157
158// writeNullKeyEntry writes a single entry where the key is null
159func (s mapSerializer) writeNullKeyEntry(ctx *WriteContext, value reflect.Value, resolver *TypeResolver, trackRef bool) {

Callers 1

WriteDataMethod · 0.95

Calls 10

writeSerializerDataFunction · 0.85
getTypeInfoForValueFunction · 0.85
FromErrorFunction · 0.85
WriteMethod · 0.65
int8Function · 0.50
BufferMethod · 0.45
WriteInt8Method · 0.45
SetErrorMethod · 0.45
WriteTypeInfoMethod · 0.45
ErrMethod · 0.45

Tested by

no test coverage detected