Conditions | 6 |
Total Lines | 25 |
Code Lines | 15 |
Lines | 0 |
Ratio | 0 % |
Tests | 11 |
CRAP Score | 6.3541 |
Changes | 0 |
1 | package decode |
||
18 | func (vd *valueDecoder) DecodeValue(reader io.Reader, v interface{}) error { |
||
19 | 1 | valuePtr := reflect.ValueOf(v) |
|
20 | 1 | value := valuePtr.Elem() |
|
21 | |||
22 | 1 | if !value.CanSet() { |
|
23 | return ErrCantSetValue |
||
24 | } |
||
25 | |||
26 | 1 | bval, err := readValue(vd.binnType, reader) |
|
27 | 1 | if err != nil { |
|
28 | return err |
||
29 | } |
||
30 | |||
31 | 1 | converted, err := decodeItem(value.Type(), vd.binnType, bval) |
|
32 | 1 | if err != nil { |
|
33 | return err |
||
34 | } |
||
35 | |||
36 | 1 | if value.Kind() != reflect.ValueOf(converted).Kind() && value.Kind() != reflect.Interface { |
|
37 | 1 | return &UnknownValueError{reflect.ValueOf(converted).Kind(), value.Kind()} |
|
38 | } |
||
39 | |||
40 | 1 | value.Set(reflect.ValueOf(converted)) |
|
41 | |||
42 | 1 | return nil |
|
43 | } |
||
44 |