Write serialize data into writer Serialized Array data format: number of items: 4 bytes item values: per item bytes * number of items, align to byte item validity: 1 bit * number of items final align to 8 bytes
(writer *utils.BufferWriter)
| 597 | // item validity: 1 bit * number of items |
| 598 | // final align to 8 bytes |
| 599 | func (av *ArrayValue) Write(writer *utils.BufferWriter) error { |
| 600 | num := av.GetLength() |
| 601 | err := writer.AppendUint32(uint32(num)) |
| 602 | if err != nil { |
| 603 | return err |
| 604 | } |
| 605 | // add value for each item |
| 606 | for _, val := range av.Items { |
| 607 | switch av.DataType { |
| 608 | case Bool: |
| 609 | if val == nil { |
| 610 | err = writer.AppendBool(false) |
| 611 | } else { |
| 612 | err = writer.AppendBool(val.(bool)) |
| 613 | } |
| 614 | case Int8: |
| 615 | if val == nil { |
| 616 | err = writer.AppendInt8(0) |
| 617 | } else { |
| 618 | err = writer.AppendInt8(val.(int8)) |
| 619 | } |
| 620 | case Uint8, SmallEnum: |
| 621 | if val == nil { |
| 622 | err = writer.AppendUint8(0) |
| 623 | } else { |
| 624 | err = writer.AppendUint8(val.(uint8)) |
| 625 | } |
| 626 | case Int16: |
| 627 | if val == nil { |
| 628 | err = writer.AppendInt16(0) |
| 629 | } else { |
| 630 | err = writer.AppendInt16(val.(int16)) |
| 631 | } |
| 632 | case Uint16, BigEnum: |
| 633 | if val == nil { |
| 634 | err = writer.AppendUint16(0) |
| 635 | } else { |
| 636 | err = writer.AppendUint16(val.(uint16)) |
| 637 | } |
| 638 | case Int32: |
| 639 | if val == nil { |
| 640 | err = writer.AppendInt32(0) |
| 641 | } else { |
| 642 | err = writer.AppendInt32(val.(int32)) |
| 643 | } |
| 644 | case Uint32: |
| 645 | if val == nil { |
| 646 | err = writer.AppendUint32(0) |
| 647 | } else { |
| 648 | err = writer.AppendUint32(val.(uint32)) |
| 649 | } |
| 650 | case Float32: |
| 651 | if val == nil { |
| 652 | err = writer.AppendFloat32(0) |
| 653 | } else { |
| 654 | err = writer.AppendFloat32(val.(float32)) |
| 655 | } |
| 656 | case Int64: |
nothing calls this directly
no test coverage detected