decode.decodeList   A
last analyzed

Complexity

Conditions 3

Size

Total Lines 12
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 3.2098

Importance

Changes 0
Metric Value
cc 3
eloc 8
dl 0
loc 12
ccs 5
cts 7
cp 0.7143
crap 3.2098
rs 10
c 0
b 0
f 0
nop 2
1
package decode
2
3
import "io"
4
5
func decodeList(reader io.Reader, v interface{}) error {
6 1
	sz, rSize, err := readSize(reader)
7 1
	if err != nil {
8
		return err
9
	}
10
11 1
	cnt, rCount, err := readSize(reader)
12 1
	if err != nil {
13
		return err
14
	}
15
16 1
	return decodeListItems(reader, v, sz, rSize+rCount, cnt)
17
}
18
19
func decodeListItems(reader io.Reader, v interface{}, size int, wasRead readLen, items int) error {
20 1
	rItems := 0
21 1
	readPosition := wasRead
22
23 1
	for rItems < items && readPosition < readLen(size) {
24 1
		btype, rlen, err := readType(reader)
25 1
		if err != nil {
26 1
			return err
27
		}
28
29 1
		bval, err := readValue(btype, reader)
30 1
		if err != nil {
31
			return err
32
		}
33
34 1
		err = addSliceItem(btype, bval, v)
35 1
		if err != nil {
36 1
			return err
37
		}
38
39 1
		rItems++
40 1
		readPosition += readLen(len(bval)) + rlen
41
	}
42
43 1
	return nil
44
}
45