(rv reflect.Value, tag serde.Tag)
| 51 | } |
| 52 | |
| 53 | func (e *encoder) encode(rv reflect.Value, tag serde.Tag) (cbor.Value, error) { |
| 54 | if serde.IsZeroValue(rv) { |
| 55 | if tag.OmitEmpty { |
| 56 | return nil, nil |
| 57 | } |
| 58 | return e.encodeZeroValue(rv) |
| 59 | } |
| 60 | |
| 61 | rv = serde.ValueElem(rv) |
| 62 | switch rv.Kind() { |
| 63 | case reflect.Struct: |
| 64 | return e.encodeStruct(rv) |
| 65 | case reflect.Map: |
| 66 | return e.encodeMap(rv) |
| 67 | case reflect.Slice, reflect.Array: |
| 68 | return e.encodeSlice(rv) |
| 69 | case reflect.Invalid, reflect.Chan, reflect.Func, reflect.UnsafePointer: |
| 70 | return nil, nil |
| 71 | default: |
| 72 | return e.encodeScalar(rv) |
| 73 | } |
| 74 | } |
| 75 | |
| 76 | func (e *encoder) encodeZeroValue(rv reflect.Value) (cbor.Value, error) { |
| 77 | switch rv.Kind() { |
no test coverage detected