7 "github.com/vmihailenco/msgpack/codes"
10 func (d *Decoder) bytesLen(c codes.Code) (int, error) {
13 } else if codes.IsFixedString(c) {
14 return int(c & codes.FixedStrMask), nil
17 case codes.Str8, codes.Bin8:
20 case codes.Str16, codes.Bin16:
23 case codes.Str32, codes.Bin32:
27 return 0, fmt.Errorf("msgpack: invalid code=%x decoding bytes length", c)
30 func (d *Decoder) DecodeString() (string, error) {
31 c, err := d.readCode()
38 func (d *Decoder) string(c codes.Code) (string, error) {
39 n, err := d.bytesLen(c)
50 func decodeStringValue(d *Decoder, v reflect.Value) error {
51 s, err := d.DecodeString()
55 if err = mustSet(v); err != nil {
62 func (d *Decoder) DecodeBytesLen() (int, error) {
63 c, err := d.readCode()
70 func (d *Decoder) DecodeBytes() ([]byte, error) {
71 c, err := d.readCode()
75 return d.bytes(c, nil)
78 func (d *Decoder) bytes(c codes.Code, b []byte) ([]byte, error) {
79 n, err := d.bytesLen(c)
86 return readN(d.r, b, n)
89 func (d *Decoder) bytesNoCopy() ([]byte, error) {
90 c, err := d.readCode()
94 n, err := d.bytesLen(c)
104 func (d *Decoder) decodeBytesPtr(ptr *[]byte) error {
105 c, err := d.readCode()
109 return d.bytesPtr(c, ptr)
112 func (d *Decoder) bytesPtr(c codes.Code, ptr *[]byte) error {
113 n, err := d.bytesLen(c)
122 *ptr, err = readN(d.r, *ptr, n)
126 func (d *Decoder) skipBytes(c codes.Code) error {
127 n, err := d.bytesLen(c)
137 func decodeBytesValue(d *Decoder, v reflect.Value) error {
138 c, err := d.readCode()
143 b, err := d.bytes(c, v.Bytes())
148 if err = mustSet(v); err != nil {
156 func decodeByteArrayValue(d *Decoder, v reflect.Value) error {
157 c, err := d.readCode()
162 n, err := d.bytesLen(c)
170 return fmt.Errorf("%s len is %d, but msgpack has %d elements", v.Type(), v.Len(), n)
173 b := v.Slice(0, n).Bytes()