ReadInt64 reads an int64 from the reader
()
| 653 | |
| 654 | // ReadInt64 reads an int64 from the reader |
| 655 | func (m *Reader) ReadInt64() (i int64, err error) { |
| 656 | var p []byte |
| 657 | lead, err := m.R.PeekByte() |
| 658 | if err != nil { |
| 659 | return |
| 660 | } |
| 661 | |
| 662 | if isfixint(lead) { |
| 663 | i = int64(rfixint(lead)) |
| 664 | _, err = m.R.Skip(1) |
| 665 | return |
| 666 | } else if isnfixint(lead) { |
| 667 | i = int64(rnfixint(lead)) |
| 668 | _, err = m.R.Skip(1) |
| 669 | return |
| 670 | } |
| 671 | |
| 672 | switch lead { |
| 673 | case mint8: |
| 674 | p, err = m.R.Next(2) |
| 675 | if err != nil { |
| 676 | return |
| 677 | } |
| 678 | i = int64(getMint8(p)) |
| 679 | return |
| 680 | |
| 681 | case muint8: |
| 682 | p, err = m.R.Next(2) |
| 683 | if err != nil { |
| 684 | return |
| 685 | } |
| 686 | i = int64(getMuint8(p)) |
| 687 | return |
| 688 | |
| 689 | case mint16: |
| 690 | p, err = m.R.Next(3) |
| 691 | if err != nil { |
| 692 | return |
| 693 | } |
| 694 | i = int64(getMint16(p)) |
| 695 | return |
| 696 | |
| 697 | case muint16: |
| 698 | p, err = m.R.Next(3) |
| 699 | if err != nil { |
| 700 | return |
| 701 | } |
| 702 | i = int64(getMuint16(p)) |
| 703 | return |
| 704 | |
| 705 | case mint32: |
| 706 | p, err = m.R.Next(5) |
| 707 | if err != nil { |
| 708 | return |
| 709 | } |
| 710 | i = int64(getMint32(p)) |
| 711 | return |
| 712 |