(ctx *WriteContext, value reflect.Value)
| 443 | } |
| 444 | |
| 445 | func (s float64ArraySerializer) WriteData(ctx *WriteContext, value reflect.Value) { |
| 446 | buf := ctx.Buffer() |
| 447 | length := value.Len() |
| 448 | size := length * 8 |
| 449 | buf.WriteLength(size) |
| 450 | if length > 0 { |
| 451 | if value.CanAddr() && isLittleEndian { |
| 452 | // Fast path: direct memory copy - little-endian only |
| 453 | ptr := value.Addr().UnsafePointer() |
| 454 | buf.WriteBinary(unsafe.Slice((*byte)(ptr), size)) |
| 455 | } else { |
| 456 | // Slow path for non-addressable arrays or big-endian |
| 457 | for i := 0; i < length; i++ { |
| 458 | buf.WriteFloat64(value.Index(i).Float()) |
| 459 | } |
| 460 | } |
| 461 | } |
| 462 | } |
| 463 | |
| 464 | func (s float64ArraySerializer) Write(ctx *WriteContext, refMode RefMode, writeType bool, hasGenerics bool, value reflect.Value) { |
| 465 | writeArrayRefAndType(ctx, refMode, writeType, value, FLOAT64_ARRAY) |
no test coverage detected