go-json/internal/decoder/type.go

31 lines
713 B
Go
Raw Normal View History

2021-06-03 12:49:01 +03:00
package decoder
import (
"context"
2021-06-03 12:49:01 +03:00
"encoding"
"encoding/json"
"reflect"
"unsafe"
)
2021-06-03 13:10:17 +03:00
type Decoder interface {
2021-06-04 19:08:27 +03:00
Decode(*RuntimeContext, int64, int64, unsafe.Pointer) (int64, error)
2022-11-28 21:55:56 +03:00
DecodePath(*RuntimeContext, int64, int64) ([][]byte, int64, error)
2021-06-03 12:49:01 +03:00
DecodeStream(*Stream, int64, unsafe.Pointer) error
}
const (
nul = '\000'
maxDecodeNestingDepth = 10000
)
type unmarshalerContext interface {
UnmarshalJSON(context.Context, []byte) error
}
2021-06-03 12:49:01 +03:00
var (
unmarshalJSONType = reflect.TypeOf((*json.Unmarshaler)(nil)).Elem()
unmarshalJSONContextType = reflect.TypeOf((*unmarshalerContext)(nil)).Elem()
unmarshalTextType = reflect.TypeOf((*encoding.TextUnmarshaler)(nil)).Elem()
2021-06-03 12:49:01 +03:00
)