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

Method Write

go/fory/pointer.go:226–252  ·  view source on GitHub ↗
(ctx *WriteContext, refMode RefMode, writeType bool, hasGenerics bool, value reflect.Value)

Source from the content-addressed store, hash-verified

224}
225
226func (s *ptrToInterfaceSerializer) Write(ctx *WriteContext, refMode RefMode, writeType bool, hasGenerics bool, value reflect.Value) {
227 switch refMode {
228 case RefModeTracking:
229 if value.IsNil() {
230 ctx.Buffer().WriteInt8(NullFlag)
231 return
232 }
233 refWritten, err := ctx.RefResolver().WriteRefOrNull(ctx.Buffer(), value)
234 if err != nil {
235 ctx.SetError(FromError(err))
236 return
237 }
238 if refWritten {
239 return
240 }
241 case RefModeNullOnly:
242 if value.IsNil() {
243 ctx.Buffer().WriteInt8(NullFlag)
244 return
245 }
246 ctx.Buffer().WriteInt8(NotNullValueFlag)
247 }
248
249 // For interface pointers, we don't write type info here
250 // WriteData will call WriteValue which handles the type info for the concrete value
251 s.WriteData(ctx, value)
252}
253
254func (s *ptrToInterfaceSerializer) ReadData(ctx *ReadContext, value reflect.Value) {
255 // Create a new interface pointer

Callers

nothing calls this directly

Calls 7

WriteDataMethod · 0.95
FromErrorFunction · 0.85
WriteRefOrNullMethod · 0.80
WriteInt8Method · 0.45
BufferMethod · 0.45
RefResolverMethod · 0.45
SetErrorMethod · 0.45

Tested by

no test coverage detected