xref: /aosp_15_r20/external/golang-protobuf/internal/impl/message_reflect_gen.go (revision 1c12ee1efe575feb122dbf939ff15148a3b3e8f2)
1*1c12ee1eSDan Willemsen// Copyright 2018 The Go Authors. All rights reserved.
2*1c12ee1eSDan Willemsen// Use of this source code is governed by a BSD-style
3*1c12ee1eSDan Willemsen// license that can be found in the LICENSE file.
4*1c12ee1eSDan Willemsen
5*1c12ee1eSDan Willemsen// Code generated by generate-types. DO NOT EDIT.
6*1c12ee1eSDan Willemsen
7*1c12ee1eSDan Willemsenpackage impl
8*1c12ee1eSDan Willemsen
9*1c12ee1eSDan Willemsenimport (
10*1c12ee1eSDan Willemsen	"google.golang.org/protobuf/reflect/protoreflect"
11*1c12ee1eSDan Willemsen	"google.golang.org/protobuf/runtime/protoiface"
12*1c12ee1eSDan Willemsen)
13*1c12ee1eSDan Willemsen
14*1c12ee1eSDan Willemsenfunc (m *messageState) Descriptor() protoreflect.MessageDescriptor {
15*1c12ee1eSDan Willemsen	return m.messageInfo().Desc
16*1c12ee1eSDan Willemsen}
17*1c12ee1eSDan Willemsenfunc (m *messageState) Type() protoreflect.MessageType {
18*1c12ee1eSDan Willemsen	return m.messageInfo()
19*1c12ee1eSDan Willemsen}
20*1c12ee1eSDan Willemsenfunc (m *messageState) New() protoreflect.Message {
21*1c12ee1eSDan Willemsen	return m.messageInfo().New()
22*1c12ee1eSDan Willemsen}
23*1c12ee1eSDan Willemsenfunc (m *messageState) Interface() protoreflect.ProtoMessage {
24*1c12ee1eSDan Willemsen	return m.protoUnwrap().(protoreflect.ProtoMessage)
25*1c12ee1eSDan Willemsen}
26*1c12ee1eSDan Willemsenfunc (m *messageState) protoUnwrap() interface{} {
27*1c12ee1eSDan Willemsen	return m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem())
28*1c12ee1eSDan Willemsen}
29*1c12ee1eSDan Willemsenfunc (m *messageState) ProtoMethods() *protoiface.Methods {
30*1c12ee1eSDan Willemsen	m.messageInfo().init()
31*1c12ee1eSDan Willemsen	return &m.messageInfo().methods
32*1c12ee1eSDan Willemsen}
33*1c12ee1eSDan Willemsen
34*1c12ee1eSDan Willemsen// ProtoMessageInfo is a pseudo-internal API for allowing the v1 code
35*1c12ee1eSDan Willemsen// to be able to retrieve a v2 MessageInfo struct.
36*1c12ee1eSDan Willemsen//
37*1c12ee1eSDan Willemsen// WARNING: This method is exempt from the compatibility promise and
38*1c12ee1eSDan Willemsen// may be removed in the future without warning.
39*1c12ee1eSDan Willemsenfunc (m *messageState) ProtoMessageInfo() *MessageInfo {
40*1c12ee1eSDan Willemsen	return m.messageInfo()
41*1c12ee1eSDan Willemsen}
42*1c12ee1eSDan Willemsen
43*1c12ee1eSDan Willemsenfunc (m *messageState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
44*1c12ee1eSDan Willemsen	m.messageInfo().init()
45*1c12ee1eSDan Willemsen	for _, ri := range m.messageInfo().rangeInfos {
46*1c12ee1eSDan Willemsen		switch ri := ri.(type) {
47*1c12ee1eSDan Willemsen		case *fieldInfo:
48*1c12ee1eSDan Willemsen			if ri.has(m.pointer()) {
49*1c12ee1eSDan Willemsen				if !f(ri.fieldDesc, ri.get(m.pointer())) {
50*1c12ee1eSDan Willemsen					return
51*1c12ee1eSDan Willemsen				}
52*1c12ee1eSDan Willemsen			}
53*1c12ee1eSDan Willemsen		case *oneofInfo:
54*1c12ee1eSDan Willemsen			if n := ri.which(m.pointer()); n > 0 {
55*1c12ee1eSDan Willemsen				fi := m.messageInfo().fields[n]
56*1c12ee1eSDan Willemsen				if !f(fi.fieldDesc, fi.get(m.pointer())) {
57*1c12ee1eSDan Willemsen					return
58*1c12ee1eSDan Willemsen				}
59*1c12ee1eSDan Willemsen			}
60*1c12ee1eSDan Willemsen		}
61*1c12ee1eSDan Willemsen	}
62*1c12ee1eSDan Willemsen	m.messageInfo().extensionMap(m.pointer()).Range(f)
63*1c12ee1eSDan Willemsen}
64*1c12ee1eSDan Willemsenfunc (m *messageState) Has(fd protoreflect.FieldDescriptor) bool {
65*1c12ee1eSDan Willemsen	m.messageInfo().init()
66*1c12ee1eSDan Willemsen	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
67*1c12ee1eSDan Willemsen		return fi.has(m.pointer())
68*1c12ee1eSDan Willemsen	} else {
69*1c12ee1eSDan Willemsen		return m.messageInfo().extensionMap(m.pointer()).Has(xt)
70*1c12ee1eSDan Willemsen	}
71*1c12ee1eSDan Willemsen}
72*1c12ee1eSDan Willemsenfunc (m *messageState) Clear(fd protoreflect.FieldDescriptor) {
73*1c12ee1eSDan Willemsen	m.messageInfo().init()
74*1c12ee1eSDan Willemsen	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
75*1c12ee1eSDan Willemsen		fi.clear(m.pointer())
76*1c12ee1eSDan Willemsen	} else {
77*1c12ee1eSDan Willemsen		m.messageInfo().extensionMap(m.pointer()).Clear(xt)
78*1c12ee1eSDan Willemsen	}
79*1c12ee1eSDan Willemsen}
80*1c12ee1eSDan Willemsenfunc (m *messageState) Get(fd protoreflect.FieldDescriptor) protoreflect.Value {
81*1c12ee1eSDan Willemsen	m.messageInfo().init()
82*1c12ee1eSDan Willemsen	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
83*1c12ee1eSDan Willemsen		return fi.get(m.pointer())
84*1c12ee1eSDan Willemsen	} else {
85*1c12ee1eSDan Willemsen		return m.messageInfo().extensionMap(m.pointer()).Get(xt)
86*1c12ee1eSDan Willemsen	}
87*1c12ee1eSDan Willemsen}
88*1c12ee1eSDan Willemsenfunc (m *messageState) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) {
89*1c12ee1eSDan Willemsen	m.messageInfo().init()
90*1c12ee1eSDan Willemsen	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
91*1c12ee1eSDan Willemsen		fi.set(m.pointer(), v)
92*1c12ee1eSDan Willemsen	} else {
93*1c12ee1eSDan Willemsen		m.messageInfo().extensionMap(m.pointer()).Set(xt, v)
94*1c12ee1eSDan Willemsen	}
95*1c12ee1eSDan Willemsen}
96*1c12ee1eSDan Willemsenfunc (m *messageState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
97*1c12ee1eSDan Willemsen	m.messageInfo().init()
98*1c12ee1eSDan Willemsen	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
99*1c12ee1eSDan Willemsen		return fi.mutable(m.pointer())
100*1c12ee1eSDan Willemsen	} else {
101*1c12ee1eSDan Willemsen		return m.messageInfo().extensionMap(m.pointer()).Mutable(xt)
102*1c12ee1eSDan Willemsen	}
103*1c12ee1eSDan Willemsen}
104*1c12ee1eSDan Willemsenfunc (m *messageState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
105*1c12ee1eSDan Willemsen	m.messageInfo().init()
106*1c12ee1eSDan Willemsen	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
107*1c12ee1eSDan Willemsen		return fi.newField()
108*1c12ee1eSDan Willemsen	} else {
109*1c12ee1eSDan Willemsen		return xt.New()
110*1c12ee1eSDan Willemsen	}
111*1c12ee1eSDan Willemsen}
112*1c12ee1eSDan Willemsenfunc (m *messageState) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
113*1c12ee1eSDan Willemsen	m.messageInfo().init()
114*1c12ee1eSDan Willemsen	if oi := m.messageInfo().oneofs[od.Name()]; oi != nil && oi.oneofDesc == od {
115*1c12ee1eSDan Willemsen		return od.Fields().ByNumber(oi.which(m.pointer()))
116*1c12ee1eSDan Willemsen	}
117*1c12ee1eSDan Willemsen	panic("invalid oneof descriptor " + string(od.FullName()) + " for message " + string(m.Descriptor().FullName()))
118*1c12ee1eSDan Willemsen}
119*1c12ee1eSDan Willemsenfunc (m *messageState) GetUnknown() protoreflect.RawFields {
120*1c12ee1eSDan Willemsen	m.messageInfo().init()
121*1c12ee1eSDan Willemsen	return m.messageInfo().getUnknown(m.pointer())
122*1c12ee1eSDan Willemsen}
123*1c12ee1eSDan Willemsenfunc (m *messageState) SetUnknown(b protoreflect.RawFields) {
124*1c12ee1eSDan Willemsen	m.messageInfo().init()
125*1c12ee1eSDan Willemsen	m.messageInfo().setUnknown(m.pointer(), b)
126*1c12ee1eSDan Willemsen}
127*1c12ee1eSDan Willemsenfunc (m *messageState) IsValid() bool {
128*1c12ee1eSDan Willemsen	return !m.pointer().IsNil()
129*1c12ee1eSDan Willemsen}
130*1c12ee1eSDan Willemsen
131*1c12ee1eSDan Willemsenfunc (m *messageReflectWrapper) Descriptor() protoreflect.MessageDescriptor {
132*1c12ee1eSDan Willemsen	return m.messageInfo().Desc
133*1c12ee1eSDan Willemsen}
134*1c12ee1eSDan Willemsenfunc (m *messageReflectWrapper) Type() protoreflect.MessageType {
135*1c12ee1eSDan Willemsen	return m.messageInfo()
136*1c12ee1eSDan Willemsen}
137*1c12ee1eSDan Willemsenfunc (m *messageReflectWrapper) New() protoreflect.Message {
138*1c12ee1eSDan Willemsen	return m.messageInfo().New()
139*1c12ee1eSDan Willemsen}
140*1c12ee1eSDan Willemsenfunc (m *messageReflectWrapper) Interface() protoreflect.ProtoMessage {
141*1c12ee1eSDan Willemsen	if m, ok := m.protoUnwrap().(protoreflect.ProtoMessage); ok {
142*1c12ee1eSDan Willemsen		return m
143*1c12ee1eSDan Willemsen	}
144*1c12ee1eSDan Willemsen	return (*messageIfaceWrapper)(m)
145*1c12ee1eSDan Willemsen}
146*1c12ee1eSDan Willemsenfunc (m *messageReflectWrapper) protoUnwrap() interface{} {
147*1c12ee1eSDan Willemsen	return m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem())
148*1c12ee1eSDan Willemsen}
149*1c12ee1eSDan Willemsenfunc (m *messageReflectWrapper) ProtoMethods() *protoiface.Methods {
150*1c12ee1eSDan Willemsen	m.messageInfo().init()
151*1c12ee1eSDan Willemsen	return &m.messageInfo().methods
152*1c12ee1eSDan Willemsen}
153*1c12ee1eSDan Willemsen
154*1c12ee1eSDan Willemsen// ProtoMessageInfo is a pseudo-internal API for allowing the v1 code
155*1c12ee1eSDan Willemsen// to be able to retrieve a v2 MessageInfo struct.
156*1c12ee1eSDan Willemsen//
157*1c12ee1eSDan Willemsen// WARNING: This method is exempt from the compatibility promise and
158*1c12ee1eSDan Willemsen// may be removed in the future without warning.
159*1c12ee1eSDan Willemsenfunc (m *messageReflectWrapper) ProtoMessageInfo() *MessageInfo {
160*1c12ee1eSDan Willemsen	return m.messageInfo()
161*1c12ee1eSDan Willemsen}
162*1c12ee1eSDan Willemsen
163*1c12ee1eSDan Willemsenfunc (m *messageReflectWrapper) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
164*1c12ee1eSDan Willemsen	m.messageInfo().init()
165*1c12ee1eSDan Willemsen	for _, ri := range m.messageInfo().rangeInfos {
166*1c12ee1eSDan Willemsen		switch ri := ri.(type) {
167*1c12ee1eSDan Willemsen		case *fieldInfo:
168*1c12ee1eSDan Willemsen			if ri.has(m.pointer()) {
169*1c12ee1eSDan Willemsen				if !f(ri.fieldDesc, ri.get(m.pointer())) {
170*1c12ee1eSDan Willemsen					return
171*1c12ee1eSDan Willemsen				}
172*1c12ee1eSDan Willemsen			}
173*1c12ee1eSDan Willemsen		case *oneofInfo:
174*1c12ee1eSDan Willemsen			if n := ri.which(m.pointer()); n > 0 {
175*1c12ee1eSDan Willemsen				fi := m.messageInfo().fields[n]
176*1c12ee1eSDan Willemsen				if !f(fi.fieldDesc, fi.get(m.pointer())) {
177*1c12ee1eSDan Willemsen					return
178*1c12ee1eSDan Willemsen				}
179*1c12ee1eSDan Willemsen			}
180*1c12ee1eSDan Willemsen		}
181*1c12ee1eSDan Willemsen	}
182*1c12ee1eSDan Willemsen	m.messageInfo().extensionMap(m.pointer()).Range(f)
183*1c12ee1eSDan Willemsen}
184*1c12ee1eSDan Willemsenfunc (m *messageReflectWrapper) Has(fd protoreflect.FieldDescriptor) bool {
185*1c12ee1eSDan Willemsen	m.messageInfo().init()
186*1c12ee1eSDan Willemsen	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
187*1c12ee1eSDan Willemsen		return fi.has(m.pointer())
188*1c12ee1eSDan Willemsen	} else {
189*1c12ee1eSDan Willemsen		return m.messageInfo().extensionMap(m.pointer()).Has(xt)
190*1c12ee1eSDan Willemsen	}
191*1c12ee1eSDan Willemsen}
192*1c12ee1eSDan Willemsenfunc (m *messageReflectWrapper) Clear(fd protoreflect.FieldDescriptor) {
193*1c12ee1eSDan Willemsen	m.messageInfo().init()
194*1c12ee1eSDan Willemsen	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
195*1c12ee1eSDan Willemsen		fi.clear(m.pointer())
196*1c12ee1eSDan Willemsen	} else {
197*1c12ee1eSDan Willemsen		m.messageInfo().extensionMap(m.pointer()).Clear(xt)
198*1c12ee1eSDan Willemsen	}
199*1c12ee1eSDan Willemsen}
200*1c12ee1eSDan Willemsenfunc (m *messageReflectWrapper) Get(fd protoreflect.FieldDescriptor) protoreflect.Value {
201*1c12ee1eSDan Willemsen	m.messageInfo().init()
202*1c12ee1eSDan Willemsen	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
203*1c12ee1eSDan Willemsen		return fi.get(m.pointer())
204*1c12ee1eSDan Willemsen	} else {
205*1c12ee1eSDan Willemsen		return m.messageInfo().extensionMap(m.pointer()).Get(xt)
206*1c12ee1eSDan Willemsen	}
207*1c12ee1eSDan Willemsen}
208*1c12ee1eSDan Willemsenfunc (m *messageReflectWrapper) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) {
209*1c12ee1eSDan Willemsen	m.messageInfo().init()
210*1c12ee1eSDan Willemsen	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
211*1c12ee1eSDan Willemsen		fi.set(m.pointer(), v)
212*1c12ee1eSDan Willemsen	} else {
213*1c12ee1eSDan Willemsen		m.messageInfo().extensionMap(m.pointer()).Set(xt, v)
214*1c12ee1eSDan Willemsen	}
215*1c12ee1eSDan Willemsen}
216*1c12ee1eSDan Willemsenfunc (m *messageReflectWrapper) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
217*1c12ee1eSDan Willemsen	m.messageInfo().init()
218*1c12ee1eSDan Willemsen	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
219*1c12ee1eSDan Willemsen		return fi.mutable(m.pointer())
220*1c12ee1eSDan Willemsen	} else {
221*1c12ee1eSDan Willemsen		return m.messageInfo().extensionMap(m.pointer()).Mutable(xt)
222*1c12ee1eSDan Willemsen	}
223*1c12ee1eSDan Willemsen}
224*1c12ee1eSDan Willemsenfunc (m *messageReflectWrapper) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
225*1c12ee1eSDan Willemsen	m.messageInfo().init()
226*1c12ee1eSDan Willemsen	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
227*1c12ee1eSDan Willemsen		return fi.newField()
228*1c12ee1eSDan Willemsen	} else {
229*1c12ee1eSDan Willemsen		return xt.New()
230*1c12ee1eSDan Willemsen	}
231*1c12ee1eSDan Willemsen}
232*1c12ee1eSDan Willemsenfunc (m *messageReflectWrapper) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
233*1c12ee1eSDan Willemsen	m.messageInfo().init()
234*1c12ee1eSDan Willemsen	if oi := m.messageInfo().oneofs[od.Name()]; oi != nil && oi.oneofDesc == od {
235*1c12ee1eSDan Willemsen		return od.Fields().ByNumber(oi.which(m.pointer()))
236*1c12ee1eSDan Willemsen	}
237*1c12ee1eSDan Willemsen	panic("invalid oneof descriptor " + string(od.FullName()) + " for message " + string(m.Descriptor().FullName()))
238*1c12ee1eSDan Willemsen}
239*1c12ee1eSDan Willemsenfunc (m *messageReflectWrapper) GetUnknown() protoreflect.RawFields {
240*1c12ee1eSDan Willemsen	m.messageInfo().init()
241*1c12ee1eSDan Willemsen	return m.messageInfo().getUnknown(m.pointer())
242*1c12ee1eSDan Willemsen}
243*1c12ee1eSDan Willemsenfunc (m *messageReflectWrapper) SetUnknown(b protoreflect.RawFields) {
244*1c12ee1eSDan Willemsen	m.messageInfo().init()
245*1c12ee1eSDan Willemsen	m.messageInfo().setUnknown(m.pointer(), b)
246*1c12ee1eSDan Willemsen}
247*1c12ee1eSDan Willemsenfunc (m *messageReflectWrapper) IsValid() bool {
248*1c12ee1eSDan Willemsen	return !m.pointer().IsNil()
249*1c12ee1eSDan Willemsen}
250