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

Method WriteData

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

Source from the content-addressed store, hash-verified

242}
243
244func (s int32ArraySerializer) WriteData(ctx *WriteContext, value reflect.Value) {
245 buf := ctx.Buffer()
246 length := value.Len()
247 size := length * 4
248 buf.WriteLength(size)
249 if length > 0 {
250 if value.CanAddr() && isLittleEndian {
251 // Fast path: direct memory copy - little-endian only
252 ptr := value.Addr().UnsafePointer()
253 buf.WriteBinary(unsafe.Slice((*byte)(ptr), size))
254 } else {
255 // Slow path for non-addressable arrays or big-endian
256 for i := 0; i < length; i++ {
257 buf.WriteInt32(int32(value.Index(i).Int()))
258 }
259 }
260 }
261}
262
263func (s int32ArraySerializer) Write(ctx *WriteContext, refMode RefMode, writeType bool, hasGenerics bool, value reflect.Value) {
264 writeArrayRefAndType(ctx, refMode, writeType, value, INT32_ARRAY)

Callers 1

WriteMethod · 0.95

Calls 7

LenMethod · 0.80
SliceMethod · 0.80
int32Function · 0.50
BufferMethod · 0.45
WriteLengthMethod · 0.45
WriteBinaryMethod · 0.45
WriteInt32Method · 0.45

Tested by

no test coverage detected