()
| 185 | } |
| 186 | |
| 187 | func (e *StructEncoder) optInstrEncoder() { |
| 188 | t := reflect.ValueOf(e.t).Field(e.i).Type() |
| 189 | if e.f.Type.Kind() == reflect.Ptr { |
| 190 | t = t.Elem() |
| 191 | } |
| 192 | |
| 193 | conv := func(v unsafe.Pointer, w *Buffer) { |
| 194 | e, ok := reflect.NewAt(t, v).Interface().(JSONEncoder) |
| 195 | if !ok { |
| 196 | w.Write(null) |
| 197 | return |
| 198 | } |
| 199 | e.JSONEncode(w) |
| 200 | } |
| 201 | |
| 202 | if e.f.Type.Kind() == reflect.Ptr { |
| 203 | e.ptrval(conv) |
| 204 | } else { |
| 205 | e.val(conv) |
| 206 | } |
| 207 | } |
| 208 | |
| 209 | func (e *StructEncoder) optInstrEncoderWriter() { |
| 210 | t := reflect.ValueOf(e.t).Field(e.i).Type() |
no test coverage detected