writeArrayRefAndType handles reference and type writing for array serializers. Arrays are value types, so ref handling is simpler than slices. Returns true if the value was already written, false if data should be written.
(ctx *WriteContext, refMode RefMode, writeType bool, value reflect.Value, typeId TypeId)
| 25 | // Arrays are value types, so ref handling is simpler than slices. |
| 26 | // Returns true if the value was already written, false if data should be written. |
| 27 | func writeArrayRefAndType(ctx *WriteContext, refMode RefMode, writeType bool, value reflect.Value, typeId TypeId) bool { |
| 28 | if refMode != RefModeNone { |
| 29 | // Arrays are value types, just write NotNullValueFlag |
| 30 | ctx.Buffer().WriteInt8(NotNullValueFlag) |
| 31 | } |
| 32 | if writeType { |
| 33 | ctx.Buffer().WriteUint8(uint8(typeId)) |
| 34 | } |
| 35 | return false |
| 36 | } |
| 37 | |
| 38 | // readArrayRefAndType handles reference and type reading for array serializers. |
| 39 | // Returns true if a reference was resolved (value already set), false if data should be read. |