(ctx *WriteContext, value reflect.Value)
| 569 | } |
| 570 | |
| 571 | func (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 | |
| 591 | func (s uint16ArraySerializer) Write(ctx *WriteContext, refMode RefMode, writeType bool, hasGenerics bool, value reflect.Value) { |
| 592 | writeArrayRefAndType(ctx, refMode, writeType, value, UINT16_ARRAY) |
no test coverage detected