...
1
2
3
4
5
6
7 package impl
8
9 import (
10 "google.golang.org/protobuf/reflect/protoreflect"
11 "google.golang.org/protobuf/runtime/protoiface"
12 )
13
14 func (m *messageState) Descriptor() protoreflect.MessageDescriptor {
15 return m.messageInfo().Desc
16 }
17 func (m *messageState) Type() protoreflect.MessageType {
18 return m.messageInfo()
19 }
20 func (m *messageState) New() protoreflect.Message {
21 return m.messageInfo().New()
22 }
23 func (m *messageState) Interface() protoreflect.ProtoMessage {
24 return m.protoUnwrap().(protoreflect.ProtoMessage)
25 }
26 func (m *messageState) protoUnwrap() interface{} {
27 return m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem())
28 }
29 func (m *messageState) ProtoMethods() *protoiface.Methods {
30 mi := m.messageInfo()
31 mi.init()
32 return &mi.methods
33 }
34
35
36
37
38
39
40 func (m *messageState) ProtoMessageInfo() *MessageInfo {
41 return m.messageInfo()
42 }
43
44 func (m *messageState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
45 mi := m.messageInfo()
46 mi.init()
47 for _, ri := range mi.rangeInfos {
48 switch ri := ri.(type) {
49 case *fieldInfo:
50 if ri.has(m.pointer()) {
51 if !f(ri.fieldDesc, ri.get(m.pointer())) {
52 return
53 }
54 }
55 case *oneofInfo:
56 if n := ri.which(m.pointer()); n > 0 {
57 fi := mi.fields[n]
58 if !f(fi.fieldDesc, fi.get(m.pointer())) {
59 return
60 }
61 }
62 }
63 }
64 mi.extensionMap(m.pointer()).Range(f)
65 }
66 func (m *messageState) Has(fd protoreflect.FieldDescriptor) bool {
67 mi := m.messageInfo()
68 mi.init()
69 if fi, xd := mi.checkField(fd); fi != nil {
70 return fi.has(m.pointer())
71 } else {
72 return mi.extensionMap(m.pointer()).Has(xd)
73 }
74 }
75 func (m *messageState) Clear(fd protoreflect.FieldDescriptor) {
76 mi := m.messageInfo()
77 mi.init()
78 if fi, xd := mi.checkField(fd); fi != nil {
79 fi.clear(m.pointer())
80 } else {
81 mi.extensionMap(m.pointer()).Clear(xd)
82 }
83 }
84 func (m *messageState) Get(fd protoreflect.FieldDescriptor) protoreflect.Value {
85 mi := m.messageInfo()
86 mi.init()
87 if fi, xd := mi.checkField(fd); fi != nil {
88 return fi.get(m.pointer())
89 } else {
90 return mi.extensionMap(m.pointer()).Get(xd)
91 }
92 }
93 func (m *messageState) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) {
94 mi := m.messageInfo()
95 mi.init()
96 if fi, xd := mi.checkField(fd); fi != nil {
97 fi.set(m.pointer(), v)
98 } else {
99 mi.extensionMap(m.pointer()).Set(xd, v)
100 }
101 }
102 func (m *messageState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
103 mi := m.messageInfo()
104 mi.init()
105 if fi, xd := mi.checkField(fd); fi != nil {
106 return fi.mutable(m.pointer())
107 } else {
108 return mi.extensionMap(m.pointer()).Mutable(xd)
109 }
110 }
111 func (m *messageState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
112 mi := m.messageInfo()
113 mi.init()
114 if fi, xd := mi.checkField(fd); fi != nil {
115 return fi.newField()
116 } else {
117 return xd.Type().New()
118 }
119 }
120 func (m *messageState) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
121 mi := m.messageInfo()
122 mi.init()
123 if oi := mi.oneofs[od.Name()]; oi != nil && oi.oneofDesc == od {
124 return od.Fields().ByNumber(oi.which(m.pointer()))
125 }
126 panic("invalid oneof descriptor " + string(od.FullName()) + " for message " + string(m.Descriptor().FullName()))
127 }
128 func (m *messageState) GetUnknown() protoreflect.RawFields {
129 mi := m.messageInfo()
130 mi.init()
131 return mi.getUnknown(m.pointer())
132 }
133 func (m *messageState) SetUnknown(b protoreflect.RawFields) {
134 mi := m.messageInfo()
135 mi.init()
136 mi.setUnknown(m.pointer(), b)
137 }
138 func (m *messageState) IsValid() bool {
139 return !m.pointer().IsNil()
140 }
141
142 func (m *messageReflectWrapper) Descriptor() protoreflect.MessageDescriptor {
143 return m.messageInfo().Desc
144 }
145 func (m *messageReflectWrapper) Type() protoreflect.MessageType {
146 return m.messageInfo()
147 }
148 func (m *messageReflectWrapper) New() protoreflect.Message {
149 return m.messageInfo().New()
150 }
151 func (m *messageReflectWrapper) Interface() protoreflect.ProtoMessage {
152 if m, ok := m.protoUnwrap().(protoreflect.ProtoMessage); ok {
153 return m
154 }
155 return (*messageIfaceWrapper)(m)
156 }
157 func (m *messageReflectWrapper) protoUnwrap() interface{} {
158 return m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem())
159 }
160 func (m *messageReflectWrapper) ProtoMethods() *protoiface.Methods {
161 mi := m.messageInfo()
162 mi.init()
163 return &mi.methods
164 }
165
166
167
168
169
170
171 func (m *messageReflectWrapper) ProtoMessageInfo() *MessageInfo {
172 return m.messageInfo()
173 }
174
175 func (m *messageReflectWrapper) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
176 mi := m.messageInfo()
177 mi.init()
178 for _, ri := range mi.rangeInfos {
179 switch ri := ri.(type) {
180 case *fieldInfo:
181 if ri.has(m.pointer()) {
182 if !f(ri.fieldDesc, ri.get(m.pointer())) {
183 return
184 }
185 }
186 case *oneofInfo:
187 if n := ri.which(m.pointer()); n > 0 {
188 fi := mi.fields[n]
189 if !f(fi.fieldDesc, fi.get(m.pointer())) {
190 return
191 }
192 }
193 }
194 }
195 mi.extensionMap(m.pointer()).Range(f)
196 }
197 func (m *messageReflectWrapper) Has(fd protoreflect.FieldDescriptor) bool {
198 mi := m.messageInfo()
199 mi.init()
200 if fi, xd := mi.checkField(fd); fi != nil {
201 return fi.has(m.pointer())
202 } else {
203 return mi.extensionMap(m.pointer()).Has(xd)
204 }
205 }
206 func (m *messageReflectWrapper) Clear(fd protoreflect.FieldDescriptor) {
207 mi := m.messageInfo()
208 mi.init()
209 if fi, xd := mi.checkField(fd); fi != nil {
210 fi.clear(m.pointer())
211 } else {
212 mi.extensionMap(m.pointer()).Clear(xd)
213 }
214 }
215 func (m *messageReflectWrapper) Get(fd protoreflect.FieldDescriptor) protoreflect.Value {
216 mi := m.messageInfo()
217 mi.init()
218 if fi, xd := mi.checkField(fd); fi != nil {
219 return fi.get(m.pointer())
220 } else {
221 return mi.extensionMap(m.pointer()).Get(xd)
222 }
223 }
224 func (m *messageReflectWrapper) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) {
225 mi := m.messageInfo()
226 mi.init()
227 if fi, xd := mi.checkField(fd); fi != nil {
228 fi.set(m.pointer(), v)
229 } else {
230 mi.extensionMap(m.pointer()).Set(xd, v)
231 }
232 }
233 func (m *messageReflectWrapper) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
234 mi := m.messageInfo()
235 mi.init()
236 if fi, xd := mi.checkField(fd); fi != nil {
237 return fi.mutable(m.pointer())
238 } else {
239 return mi.extensionMap(m.pointer()).Mutable(xd)
240 }
241 }
242 func (m *messageReflectWrapper) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
243 mi := m.messageInfo()
244 mi.init()
245 if fi, xd := mi.checkField(fd); fi != nil {
246 return fi.newField()
247 } else {
248 return xd.Type().New()
249 }
250 }
251 func (m *messageReflectWrapper) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
252 mi := m.messageInfo()
253 mi.init()
254 if oi := mi.oneofs[od.Name()]; oi != nil && oi.oneofDesc == od {
255 return od.Fields().ByNumber(oi.which(m.pointer()))
256 }
257 panic("invalid oneof descriptor " + string(od.FullName()) + " for message " + string(m.Descriptor().FullName()))
258 }
259 func (m *messageReflectWrapper) GetUnknown() protoreflect.RawFields {
260 mi := m.messageInfo()
261 mi.init()
262 return mi.getUnknown(m.pointer())
263 }
264 func (m *messageReflectWrapper) SetUnknown(b protoreflect.RawFields) {
265 mi := m.messageInfo()
266 mi.init()
267 mi.setUnknown(m.pointer(), b)
268 }
269 func (m *messageReflectWrapper) IsValid() bool {
270 return !m.pointer().IsNil()
271 }
272
View as plain text