1 //go:build go1.24
2 // +build go1.24
3 4 /*
5 * Copyright 2021 ByteDance Inc.
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 */
19 20 package resolver
21 22 import (
23 _ `encoding/json`
24 `reflect`
25 _ `unsafe`
26 )
27 28 type StdField struct {
29 name string
30 nameBytes []byte
31 nameNonEsc string
32 nameEscHTML string
33 tag bool
34 index []int
35 typ reflect.Type
36 omitEmpty bool
37 omitZero bool
38 isZero func(reflect.Value) bool
39 quoted bool
40 encoder func()
41 }
42 43 type StdStructFields struct {
44 list []StdField
45 nameIndex map[string]*StdField
46 byFoldedName map[string]*StdField
47 }
48 49 //go:noescape
50 //go:linkname typeFields encoding/json.typeFields
51 func typeFields(_ reflect.Type) StdStructFields
52 53 func handleOmitZero(fv StdField, fm *FieldMeta) {
54 if fv.omitZero {
55 fm.Opts |= F_omitzero
56 fm.IsZero = fv.isZero
57 }
58 }
59 60