diff options
author | Nathan Dench <ndenc2@gmail.com> | 2019-05-24 15:16:44 +1000 |
---|---|---|
committer | Nathan Dench <ndenc2@gmail.com> | 2019-05-24 15:16:44 +1000 |
commit | 107c1cdb09c575aa2f61d97f48d8587eb6bada4c (patch) | |
tree | ca7d008643efc555c388baeaf1d986e0b6b3e28c /vendor/github.com/vmihailenco/msgpack/decode_string.go | |
parent | 844b5a68d8af4791755b8f0ad293cc99f5959183 (diff) | |
download | terraform-provider-statuscake-107c1cdb09c575aa2f61d97f48d8587eb6bada4c.tar.gz terraform-provider-statuscake-107c1cdb09c575aa2f61d97f48d8587eb6bada4c.tar.zst terraform-provider-statuscake-107c1cdb09c575aa2f61d97f48d8587eb6bada4c.zip |
Upgrade to 0.12
Diffstat (limited to 'vendor/github.com/vmihailenco/msgpack/decode_string.go')
-rw-r--r-- | vendor/github.com/vmihailenco/msgpack/decode_string.go | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/vendor/github.com/vmihailenco/msgpack/decode_string.go b/vendor/github.com/vmihailenco/msgpack/decode_string.go new file mode 100644 index 0000000..5402022 --- /dev/null +++ b/vendor/github.com/vmihailenco/msgpack/decode_string.go | |||
@@ -0,0 +1,175 @@ | |||
1 | package msgpack | ||
2 | |||
3 | import ( | ||
4 | "fmt" | ||
5 | "reflect" | ||
6 | |||
7 | "github.com/vmihailenco/msgpack/codes" | ||
8 | ) | ||
9 | |||
10 | func (d *Decoder) bytesLen(c codes.Code) (int, error) { | ||
11 | if c == codes.Nil { | ||
12 | return -1, nil | ||
13 | } else if codes.IsFixedString(c) { | ||
14 | return int(c & codes.FixedStrMask), nil | ||
15 | } | ||
16 | switch c { | ||
17 | case codes.Str8, codes.Bin8: | ||
18 | n, err := d.uint8() | ||
19 | return int(n), err | ||
20 | case codes.Str16, codes.Bin16: | ||
21 | n, err := d.uint16() | ||
22 | return int(n), err | ||
23 | case codes.Str32, codes.Bin32: | ||
24 | n, err := d.uint32() | ||
25 | return int(n), err | ||
26 | } | ||
27 | return 0, fmt.Errorf("msgpack: invalid code=%x decoding bytes length", c) | ||
28 | } | ||
29 | |||
30 | func (d *Decoder) DecodeString() (string, error) { | ||
31 | c, err := d.readCode() | ||
32 | if err != nil { | ||
33 | return "", err | ||
34 | } | ||
35 | return d.string(c) | ||
36 | } | ||
37 | |||
38 | func (d *Decoder) string(c codes.Code) (string, error) { | ||
39 | n, err := d.bytesLen(c) | ||
40 | if err != nil { | ||
41 | return "", err | ||
42 | } | ||
43 | if n == -1 { | ||
44 | return "", nil | ||
45 | } | ||
46 | b, err := d.readN(n) | ||
47 | return string(b), err | ||
48 | } | ||
49 | |||
50 | func decodeStringValue(d *Decoder, v reflect.Value) error { | ||
51 | s, err := d.DecodeString() | ||
52 | if err != nil { | ||
53 | return err | ||
54 | } | ||
55 | if err = mustSet(v); err != nil { | ||
56 | return err | ||
57 | } | ||
58 | v.SetString(s) | ||
59 | return nil | ||
60 | } | ||
61 | |||
62 | func (d *Decoder) DecodeBytesLen() (int, error) { | ||
63 | c, err := d.readCode() | ||
64 | if err != nil { | ||
65 | return 0, err | ||
66 | } | ||
67 | return d.bytesLen(c) | ||
68 | } | ||
69 | |||
70 | func (d *Decoder) DecodeBytes() ([]byte, error) { | ||
71 | c, err := d.readCode() | ||
72 | if err != nil { | ||
73 | return nil, err | ||
74 | } | ||
75 | return d.bytes(c, nil) | ||
76 | } | ||
77 | |||
78 | func (d *Decoder) bytes(c codes.Code, b []byte) ([]byte, error) { | ||
79 | n, err := d.bytesLen(c) | ||
80 | if err != nil { | ||
81 | return nil, err | ||
82 | } | ||
83 | if n == -1 { | ||
84 | return nil, nil | ||
85 | } | ||
86 | return readN(d.r, b, n) | ||
87 | } | ||
88 | |||
89 | func (d *Decoder) bytesNoCopy() ([]byte, error) { | ||
90 | c, err := d.readCode() | ||
91 | if err != nil { | ||
92 | return nil, err | ||
93 | } | ||
94 | n, err := d.bytesLen(c) | ||
95 | if err != nil { | ||
96 | return nil, err | ||
97 | } | ||
98 | if n == -1 { | ||
99 | return nil, nil | ||
100 | } | ||
101 | return d.readN(n) | ||
102 | } | ||
103 | |||
104 | func (d *Decoder) decodeBytesPtr(ptr *[]byte) error { | ||
105 | c, err := d.readCode() | ||
106 | if err != nil { | ||
107 | return err | ||
108 | } | ||
109 | return d.bytesPtr(c, ptr) | ||
110 | } | ||
111 | |||
112 | func (d *Decoder) bytesPtr(c codes.Code, ptr *[]byte) error { | ||
113 | n, err := d.bytesLen(c) | ||
114 | if err != nil { | ||
115 | return err | ||
116 | } | ||
117 | if n == -1 { | ||
118 | *ptr = nil | ||
119 | return nil | ||
120 | } | ||
121 | |||
122 | *ptr, err = readN(d.r, *ptr, n) | ||
123 | return err | ||
124 | } | ||
125 | |||
126 | func (d *Decoder) skipBytes(c codes.Code) error { | ||
127 | n, err := d.bytesLen(c) | ||
128 | if err != nil { | ||
129 | return err | ||
130 | } | ||
131 | if n == -1 { | ||
132 | return nil | ||
133 | } | ||
134 | return d.skipN(n) | ||
135 | } | ||
136 | |||
137 | func decodeBytesValue(d *Decoder, v reflect.Value) error { | ||
138 | c, err := d.readCode() | ||
139 | if err != nil { | ||
140 | return err | ||
141 | } | ||
142 | |||
143 | b, err := d.bytes(c, v.Bytes()) | ||
144 | if err != nil { | ||
145 | return err | ||
146 | } | ||
147 | |||
148 | if err = mustSet(v); err != nil { | ||
149 | return err | ||
150 | } | ||
151 | v.SetBytes(b) | ||
152 | |||
153 | return nil | ||
154 | } | ||
155 | |||
156 | func decodeByteArrayValue(d *Decoder, v reflect.Value) error { | ||
157 | c, err := d.readCode() | ||
158 | if err != nil { | ||
159 | return err | ||
160 | } | ||
161 | |||
162 | n, err := d.bytesLen(c) | ||
163 | if err != nil { | ||
164 | return err | ||
165 | } | ||
166 | if n == -1 { | ||
167 | return nil | ||
168 | } | ||
169 | if n > v.Len() { | ||
170 | return fmt.Errorf("%s len is %d, but msgpack has %d elements", v.Type(), v.Len(), n) | ||
171 | } | ||
172 | |||
173 | b := v.Slice(0, n).Bytes() | ||
174 | return d.readFull(b) | ||
175 | } | ||