8 "github.com/vmihailenco/msgpack/codes"
11 func (d *Decoder) skipN(n int) error {
16 func (d *Decoder) uint8() (uint8, error) {
17 c, err := d.readCode()
24 func (d *Decoder) int8() (int8, error) {
29 func (d *Decoder) uint16() (uint16, error) {
34 return (uint16(b[0]) << 8) | uint16(b[1]), nil
37 func (d *Decoder) int16() (int16, error) {
42 func (d *Decoder) uint32() (uint32, error) {
47 n := (uint32(b[0]) << 24) |
48 (uint32(b[1]) << 16) |
54 func (d *Decoder) int32() (int32, error) {
59 func (d *Decoder) uint64() (uint64, error) {
64 n := (uint64(b[0]) << 56) |
65 (uint64(b[1]) << 48) |
66 (uint64(b[2]) << 40) |
67 (uint64(b[3]) << 32) |
68 (uint64(b[4]) << 24) |
69 (uint64(b[5]) << 16) |
75 func (d *Decoder) int64() (int64, error) {
80 // DecodeUint64 decodes msgpack int8/16/32/64 and uint8/16/32/64
82 func (d *Decoder) DecodeUint64() (uint64, error) {
83 c, err := d.readCode()
90 func (d *Decoder) uint(c codes.Code) (uint64, error) {
94 if codes.IsFixedNum(c) {
95 return uint64(int8(c)), nil
100 return uint64(n), err
103 return uint64(n), err
106 return uint64(n), err
109 return uint64(n), err
112 return uint64(n), err
115 return uint64(n), err
116 case codes.Uint64, codes.Int64:
119 return 0, fmt.Errorf("msgpack: invalid code=%x decoding uint64", c)
122 // DecodeInt64 decodes msgpack int8/16/32/64 and uint8/16/32/64
124 func (d *Decoder) DecodeInt64() (int64, error) {
125 c, err := d.readCode()
132 func (d *Decoder) int(c codes.Code) (int64, error) {
136 if codes.IsFixedNum(c) {
137 return int64(int8(c)), nil
145 return int64(int8(n)), err
151 return int64(int16(n)), err
157 return int64(int32(n)), err
158 case codes.Uint64, codes.Int64:
162 return 0, fmt.Errorf("msgpack: invalid code=%x decoding int64", c)
165 func (d *Decoder) DecodeFloat32() (float32, error) {
166 c, err := d.readCode()
173 func (d *Decoder) float32(c codes.Code) (float32, error) {
174 if c == codes.Float {
179 return math.Float32frombits(n), nil
184 return 0, fmt.Errorf("msgpack: invalid code=%x decoding float32", c)
186 return float32(n), nil
189 // DecodeFloat64 decodes msgpack float32/64 into Go float64.
190 func (d *Decoder) DecodeFloat64() (float64, error) {
191 c, err := d.readCode()
198 func (d *Decoder) float64(c codes.Code) (float64, error) {
201 n, err := d.float32(c)
205 return float64(n), nil
211 return math.Float64frombits(n), nil
216 return 0, fmt.Errorf("msgpack: invalid code=%x decoding float32", c)
218 return float64(n), nil
221 func (d *Decoder) DecodeUint() (uint, error) {
222 n, err := d.DecodeUint64()
226 func (d *Decoder) DecodeUint8() (uint8, error) {
227 n, err := d.DecodeUint64()
231 func (d *Decoder) DecodeUint16() (uint16, error) {
232 n, err := d.DecodeUint64()
233 return uint16(n), err
236 func (d *Decoder) DecodeUint32() (uint32, error) {
237 n, err := d.DecodeUint64()
238 return uint32(n), err
241 func (d *Decoder) DecodeInt() (int, error) {
242 n, err := d.DecodeInt64()
246 func (d *Decoder) DecodeInt8() (int8, error) {
247 n, err := d.DecodeInt64()
251 func (d *Decoder) DecodeInt16() (int16, error) {
252 n, err := d.DecodeInt64()
256 func (d *Decoder) DecodeInt32() (int32, error) {
257 n, err := d.DecodeInt64()
261 func decodeFloat32Value(d *Decoder, v reflect.Value) error {
262 f, err := d.DecodeFloat32()
266 if err = mustSet(v); err != nil {
269 v.SetFloat(float64(f))
273 func decodeFloat64Value(d *Decoder, v reflect.Value) error {
274 f, err := d.DecodeFloat64()
278 if err = mustSet(v); err != nil {
285 func decodeInt64Value(d *Decoder, v reflect.Value) error {
286 n, err := d.DecodeInt64()
290 if err = mustSet(v); err != nil {
297 func decodeUint64Value(d *Decoder, v reflect.Value) error {
298 n, err := d.DecodeUint64()
302 if err = mustSet(v); err != nil {