decode/decode_list.go   A
last analyzed

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Test Coverage

Coverage 86.36%

Importance

Changes 0
Metric Value
cc 9
eloc 26
dl 0
loc 43
c 0
b 0
f 0
ccs 19
cts 22
cp 0.8636
crap 9.2055
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
B decode.decodeListItems 0 25 6
A decode.decodeList 0 12 3
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