(ctx *WriteContext, value reflect.Value)
| 175 | } |
| 176 | |
| 177 | func (s int16ArraySerializer) WriteData(ctx *WriteContext, value reflect.Value) { |
| 178 | buf := ctx.Buffer() |
| 179 | length := value.Len() |
| 180 | size := length * 2 |
| 181 | buf.WriteLength(size) |
| 182 | if length > 0 { |
| 183 | if value.CanAddr() && isLittleEndian { |
| 184 | // Fast path: direct memory copy - little-endian only |
| 185 | ptr := value.Addr().UnsafePointer() |
| 186 | buf.WriteBinary(unsafe.Slice((*byte)(ptr), size)) |
| 187 | } else { |
| 188 | // Slow path for non-addressable arrays or big-endian |
| 189 | for i := 0; i < length; i++ { |
| 190 | buf.WriteInt16(int16(value.Index(i).Int())) |
| 191 | } |
| 192 | } |
| 193 | } |
| 194 | } |
| 195 | |
| 196 | func (s int16ArraySerializer) Write(ctx *WriteContext, refMode RefMode, writeType bool, hasGenerics bool, value reflect.Value) { |
| 197 | writeArrayRefAndType(ctx, refMode, writeType, value, INT16_ARRAY) |
no test coverage detected