(ctx *WriteContext, value reflect.Value)
| 53 | } |
| 54 | |
| 55 | func (s boolArraySerializer) WriteData(ctx *WriteContext, value reflect.Value) { |
| 56 | buf := ctx.Buffer() |
| 57 | length := value.Len() |
| 58 | buf.WriteLength(length) |
| 59 | if length > 0 { |
| 60 | if value.CanAddr() { |
| 61 | // Fast path: direct memory copy - bool is 1 byte in Go |
| 62 | ptr := value.Addr().UnsafePointer() |
| 63 | buf.WriteBinary(unsafe.Slice((*byte)(ptr), length)) |
| 64 | } else { |
| 65 | // Slow path for non-addressable arrays |
| 66 | for i := 0; i < length; i++ { |
| 67 | if value.Index(i).Bool() { |
| 68 | buf.WriteByte(1) |
| 69 | } else { |
| 70 | buf.WriteByte(0) |
| 71 | } |
| 72 | } |
| 73 | } |
| 74 | } |
| 75 | } |
| 76 | |
| 77 | func (s boolArraySerializer) Write(ctx *WriteContext, refMode RefMode, writeType bool, hasGenerics bool, value reflect.Value) { |
| 78 | writeArrayRefAndType(ctx, refMode, writeType, value, BOOL_ARRAY) |
no test coverage detected