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

Method WriteData

go/fory/array_primitive.go:571–589  ·  view source on GitHub ↗
(ctx *WriteContext, value reflect.Value)

Source from the content-addressed store, hash-verified

569}
570
571func (s uint16ArraySerializer) WriteData(ctx *WriteContext, value reflect.Value) {
572 buf := ctx.Buffer()
573 length := value.Len()
574 size := length * 2
575 buf.WriteLength(size)
576 if length > 0 {
577 if value.CanAddr() && isLittleEndian {
578 // Fast path: direct memory copy - little-endian only
579 ptr := value.Addr().UnsafePointer()
580 buf.WriteBinary(unsafe.Slice((*byte)(ptr), size))
581 } else {
582 // Slow path for non-addressable arrays or big-endian
583 for i := 0; i < length; i++ {
584 // Cast to int16 to match INT16_ARRAY wire format (bits are preserved)
585 buf.WriteInt16(int16(value.Index(i).Uint()))
586 }
587 }
588 }
589}
590
591func (s uint16ArraySerializer) Write(ctx *WriteContext, refMode RefMode, writeType bool, hasGenerics bool, value reflect.Value) {
592 writeArrayRefAndType(ctx, refMode, writeType, value, UINT16_ARRAY)

Callers 1

WriteMethod · 0.95

Calls 7

LenMethod · 0.80
SliceMethod · 0.80
int16Function · 0.50
BufferMethod · 0.45
WriteLengthMethod · 0.45
WriteBinaryMethod · 0.45
WriteInt16Method · 0.45

Tested by

no test coverage detected