switch to go vendoring
This commit is contained in:
+114
@@ -0,0 +1,114 @@
|
||||
package decoding
|
||||
|
||||
import (
|
||||
"encoding/binary"
|
||||
"fmt"
|
||||
"math"
|
||||
"reflect"
|
||||
|
||||
"github.com/shamaton/msgpack/v2/def"
|
||||
)
|
||||
|
||||
func (d *decoder) asComplex64(offset int, k reflect.Kind) (complex64, int, error) {
|
||||
code, offset, err := d.readSize1(offset)
|
||||
if err != nil {
|
||||
return complex(0, 0), 0, err
|
||||
}
|
||||
|
||||
switch code {
|
||||
case def.Fixext8:
|
||||
t, offset, err := d.readSize1(offset)
|
||||
if err != nil {
|
||||
return complex(0, 0), 0, err
|
||||
}
|
||||
if int8(t) != def.ComplexTypeCode() {
|
||||
return complex(0, 0), 0, fmt.Errorf("fixext8. complex type is diffrent %d, %d", t, def.ComplexTypeCode())
|
||||
}
|
||||
rb, offset, err := d.readSize4(offset)
|
||||
if err != nil {
|
||||
return complex(0, 0), 0, err
|
||||
}
|
||||
ib, offset, err := d.readSize4(offset)
|
||||
if err != nil {
|
||||
return complex(0, 0), 0, err
|
||||
}
|
||||
r := math.Float32frombits(binary.BigEndian.Uint32(rb))
|
||||
i := math.Float32frombits(binary.BigEndian.Uint32(ib))
|
||||
return complex(r, i), offset, nil
|
||||
|
||||
case def.Fixext16:
|
||||
t, offset, err := d.readSize1(offset)
|
||||
if err != nil {
|
||||
return complex(0, 0), 0, err
|
||||
}
|
||||
if int8(t) != def.ComplexTypeCode() {
|
||||
return complex(0, 0), 0, fmt.Errorf("fixext16. complex type is diffrent %d, %d", t, def.ComplexTypeCode())
|
||||
}
|
||||
rb, offset, err := d.readSize8(offset)
|
||||
if err != nil {
|
||||
return complex(0, 0), 0, err
|
||||
}
|
||||
ib, offset, err := d.readSize8(offset)
|
||||
if err != nil {
|
||||
return complex(0, 0), 0, err
|
||||
}
|
||||
r := math.Float64frombits(binary.BigEndian.Uint64(rb))
|
||||
i := math.Float64frombits(binary.BigEndian.Uint64(ib))
|
||||
return complex64(complex(r, i)), offset, nil
|
||||
|
||||
}
|
||||
|
||||
return complex(0, 0), 0, fmt.Errorf("should not reach this line!! code %x decoding %v", code, k)
|
||||
}
|
||||
|
||||
func (d *decoder) asComplex128(offset int, k reflect.Kind) (complex128, int, error) {
|
||||
code, offset, err := d.readSize1(offset)
|
||||
if err != nil {
|
||||
return complex(0, 0), 0, err
|
||||
}
|
||||
|
||||
switch code {
|
||||
case def.Fixext8:
|
||||
t, offset, err := d.readSize1(offset)
|
||||
if err != nil {
|
||||
return complex(0, 0), 0, err
|
||||
}
|
||||
if int8(t) != def.ComplexTypeCode() {
|
||||
return complex(0, 0), 0, fmt.Errorf("fixext8. complex type is diffrent %d, %d", t, def.ComplexTypeCode())
|
||||
}
|
||||
rb, offset, err := d.readSize4(offset)
|
||||
if err != nil {
|
||||
return complex(0, 0), 0, err
|
||||
}
|
||||
ib, offset, err := d.readSize4(offset)
|
||||
if err != nil {
|
||||
return complex(0, 0), 0, err
|
||||
}
|
||||
r := math.Float32frombits(binary.BigEndian.Uint32(rb))
|
||||
i := math.Float32frombits(binary.BigEndian.Uint32(ib))
|
||||
return complex128(complex(r, i)), offset, nil
|
||||
|
||||
case def.Fixext16:
|
||||
t, offset, err := d.readSize1(offset)
|
||||
if err != nil {
|
||||
return complex(0, 0), 0, err
|
||||
}
|
||||
if int8(t) != def.ComplexTypeCode() {
|
||||
return complex(0, 0), 0, fmt.Errorf("fixext16. complex type is diffrent %d, %d", t, def.ComplexTypeCode())
|
||||
}
|
||||
rb, offset, err := d.readSize8(offset)
|
||||
if err != nil {
|
||||
return complex(0, 0), 0, err
|
||||
}
|
||||
ib, offset, err := d.readSize8(offset)
|
||||
if err != nil {
|
||||
return complex(0, 0), 0, err
|
||||
}
|
||||
r := math.Float64frombits(binary.BigEndian.Uint64(rb))
|
||||
i := math.Float64frombits(binary.BigEndian.Uint64(ib))
|
||||
return complex(r, i), offset, nil
|
||||
|
||||
}
|
||||
|
||||
return complex(0, 0), 0, fmt.Errorf("should not reach this line!! code %x decoding %v", code, k)
|
||||
}
|
||||
Reference in New Issue
Block a user