()
| 207 | } |
| 208 | |
| 209 | func (e *StructEncoder) optInstrEncoderWriter() { |
| 210 | t := reflect.ValueOf(e.t).Field(e.i).Type() |
| 211 | if e.f.Type.Kind() == reflect.Ptr { |
| 212 | t = t.Elem() |
| 213 | } |
| 214 | |
| 215 | conv := func(v unsafe.Pointer, w *Buffer) { |
| 216 | e, ok := reflect.NewAt(t, v).Interface().(JSONMarshaler) |
| 217 | if !ok { |
| 218 | w.Write(null) |
| 219 | return |
| 220 | } |
| 221 | e.EncodeJSON(w) |
| 222 | } |
| 223 | |
| 224 | if e.f.Type.Kind() == reflect.Ptr { |
| 225 | e.ptrval(conv) |
| 226 | } else { |
| 227 | e.val(conv) |
| 228 | } |
| 229 | } |
| 230 | |
| 231 | func (e *StructEncoder) optInstrRaw() { |
| 232 | conv := func(v unsafe.Pointer, w *Buffer) { |
no test coverage detected