xref: /aosp_15_r20/external/protobuf/objectivec/GPBUtilities.h (revision 1b3f573f81763fcece89efc2b6a5209149e44ab8)
1*1b3f573fSAndroid Build Coastguard Worker // Protocol Buffers - Google's data interchange format
2*1b3f573fSAndroid Build Coastguard Worker // Copyright 2008 Google Inc.  All rights reserved.
3*1b3f573fSAndroid Build Coastguard Worker // https://developers.google.com/protocol-buffers/
4*1b3f573fSAndroid Build Coastguard Worker //
5*1b3f573fSAndroid Build Coastguard Worker // Redistribution and use in source and binary forms, with or without
6*1b3f573fSAndroid Build Coastguard Worker // modification, are permitted provided that the following conditions are
7*1b3f573fSAndroid Build Coastguard Worker // met:
8*1b3f573fSAndroid Build Coastguard Worker //
9*1b3f573fSAndroid Build Coastguard Worker //     * Redistributions of source code must retain the above copyright
10*1b3f573fSAndroid Build Coastguard Worker // notice, this list of conditions and the following disclaimer.
11*1b3f573fSAndroid Build Coastguard Worker //     * Redistributions in binary form must reproduce the above
12*1b3f573fSAndroid Build Coastguard Worker // copyright notice, this list of conditions and the following disclaimer
13*1b3f573fSAndroid Build Coastguard Worker // in the documentation and/or other materials provided with the
14*1b3f573fSAndroid Build Coastguard Worker // distribution.
15*1b3f573fSAndroid Build Coastguard Worker //     * Neither the name of Google Inc. nor the names of its
16*1b3f573fSAndroid Build Coastguard Worker // contributors may be used to endorse or promote products derived from
17*1b3f573fSAndroid Build Coastguard Worker // this software without specific prior written permission.
18*1b3f573fSAndroid Build Coastguard Worker //
19*1b3f573fSAndroid Build Coastguard Worker // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20*1b3f573fSAndroid Build Coastguard Worker // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21*1b3f573fSAndroid Build Coastguard Worker // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22*1b3f573fSAndroid Build Coastguard Worker // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23*1b3f573fSAndroid Build Coastguard Worker // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24*1b3f573fSAndroid Build Coastguard Worker // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25*1b3f573fSAndroid Build Coastguard Worker // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26*1b3f573fSAndroid Build Coastguard Worker // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27*1b3f573fSAndroid Build Coastguard Worker // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28*1b3f573fSAndroid Build Coastguard Worker // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29*1b3f573fSAndroid Build Coastguard Worker // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30*1b3f573fSAndroid Build Coastguard Worker 
31*1b3f573fSAndroid Build Coastguard Worker #import <Foundation/Foundation.h>
32*1b3f573fSAndroid Build Coastguard Worker 
33*1b3f573fSAndroid Build Coastguard Worker #import "GPBArray.h"
34*1b3f573fSAndroid Build Coastguard Worker #import "GPBMessage.h"
35*1b3f573fSAndroid Build Coastguard Worker #import "GPBRuntimeTypes.h"
36*1b3f573fSAndroid Build Coastguard Worker 
37*1b3f573fSAndroid Build Coastguard Worker @class GPBOneofDescriptor;
38*1b3f573fSAndroid Build Coastguard Worker 
39*1b3f573fSAndroid Build Coastguard Worker CF_EXTERN_C_BEGIN
40*1b3f573fSAndroid Build Coastguard Worker 
41*1b3f573fSAndroid Build Coastguard Worker NS_ASSUME_NONNULL_BEGIN
42*1b3f573fSAndroid Build Coastguard Worker 
43*1b3f573fSAndroid Build Coastguard Worker /**
44*1b3f573fSAndroid Build Coastguard Worker  * Generates a string that should be a valid "TextFormat" for the C++ version
45*1b3f573fSAndroid Build Coastguard Worker  * of Protocol Buffers.
46*1b3f573fSAndroid Build Coastguard Worker  *
47*1b3f573fSAndroid Build Coastguard Worker  * @param message    The message to generate from.
48*1b3f573fSAndroid Build Coastguard Worker  * @param lineIndent A string to use as the prefix for all lines generated. Can
49*1b3f573fSAndroid Build Coastguard Worker  *                   be nil if no extra indent is needed.
50*1b3f573fSAndroid Build Coastguard Worker  *
51*1b3f573fSAndroid Build Coastguard Worker  * @return An NSString with the TextFormat of the message.
52*1b3f573fSAndroid Build Coastguard Worker  **/
53*1b3f573fSAndroid Build Coastguard Worker NSString *GPBTextFormatForMessage(GPBMessage *message,
54*1b3f573fSAndroid Build Coastguard Worker                                   NSString * __nullable lineIndent);
55*1b3f573fSAndroid Build Coastguard Worker 
56*1b3f573fSAndroid Build Coastguard Worker /**
57*1b3f573fSAndroid Build Coastguard Worker  * Generates a string that should be a valid "TextFormat" for the C++ version
58*1b3f573fSAndroid Build Coastguard Worker  * of Protocol Buffers.
59*1b3f573fSAndroid Build Coastguard Worker  *
60*1b3f573fSAndroid Build Coastguard Worker  * @param unknownSet The unknown field set to generate from.
61*1b3f573fSAndroid Build Coastguard Worker  * @param lineIndent A string to use as the prefix for all lines generated. Can
62*1b3f573fSAndroid Build Coastguard Worker  *                   be nil if no extra indent is needed.
63*1b3f573fSAndroid Build Coastguard Worker  *
64*1b3f573fSAndroid Build Coastguard Worker  * @return An NSString with the TextFormat of the unknown field set.
65*1b3f573fSAndroid Build Coastguard Worker  **/
66*1b3f573fSAndroid Build Coastguard Worker NSString *GPBTextFormatForUnknownFieldSet(GPBUnknownFieldSet * __nullable unknownSet,
67*1b3f573fSAndroid Build Coastguard Worker                                           NSString * __nullable lineIndent);
68*1b3f573fSAndroid Build Coastguard Worker 
69*1b3f573fSAndroid Build Coastguard Worker /**
70*1b3f573fSAndroid Build Coastguard Worker  * Checks if the given field number is set on a message.
71*1b3f573fSAndroid Build Coastguard Worker  *
72*1b3f573fSAndroid Build Coastguard Worker  * @param self        The message to check.
73*1b3f573fSAndroid Build Coastguard Worker  * @param fieldNumber The field number to check.
74*1b3f573fSAndroid Build Coastguard Worker  *
75*1b3f573fSAndroid Build Coastguard Worker  * @return YES if the field number is set on the given message.
76*1b3f573fSAndroid Build Coastguard Worker  **/
77*1b3f573fSAndroid Build Coastguard Worker BOOL GPBMessageHasFieldNumberSet(GPBMessage *self, uint32_t fieldNumber);
78*1b3f573fSAndroid Build Coastguard Worker 
79*1b3f573fSAndroid Build Coastguard Worker /**
80*1b3f573fSAndroid Build Coastguard Worker  * Checks if the given field is set on a message.
81*1b3f573fSAndroid Build Coastguard Worker  *
82*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message to check.
83*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to check.
84*1b3f573fSAndroid Build Coastguard Worker  *
85*1b3f573fSAndroid Build Coastguard Worker  * @return YES if the field is set on the given message.
86*1b3f573fSAndroid Build Coastguard Worker  **/
87*1b3f573fSAndroid Build Coastguard Worker BOOL GPBMessageHasFieldSet(GPBMessage *self, GPBFieldDescriptor *field);
88*1b3f573fSAndroid Build Coastguard Worker 
89*1b3f573fSAndroid Build Coastguard Worker /**
90*1b3f573fSAndroid Build Coastguard Worker  * Clears the given field for the given message.
91*1b3f573fSAndroid Build Coastguard Worker  *
92*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message for which to clear the field.
93*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to clear.
94*1b3f573fSAndroid Build Coastguard Worker  **/
95*1b3f573fSAndroid Build Coastguard Worker void GPBClearMessageField(GPBMessage *self, GPBFieldDescriptor *field);
96*1b3f573fSAndroid Build Coastguard Worker 
97*1b3f573fSAndroid Build Coastguard Worker /**
98*1b3f573fSAndroid Build Coastguard Worker  * Clears the given oneof field for the given message.
99*1b3f573fSAndroid Build Coastguard Worker  *
100*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message for which to clear the field.
101*1b3f573fSAndroid Build Coastguard Worker  * @param oneof The oneof to clear.
102*1b3f573fSAndroid Build Coastguard Worker  **/
103*1b3f573fSAndroid Build Coastguard Worker void GPBClearOneof(GPBMessage *self, GPBOneofDescriptor *oneof);
104*1b3f573fSAndroid Build Coastguard Worker 
105*1b3f573fSAndroid Build Coastguard Worker //%PDDM-EXPAND GPB_ACCESSORS()
106*1b3f573fSAndroid Build Coastguard Worker // This block of code is generated, do not edit it directly.
107*1b3f573fSAndroid Build Coastguard Worker // clang-format off
108*1b3f573fSAndroid Build Coastguard Worker 
109*1b3f573fSAndroid Build Coastguard Worker 
110*1b3f573fSAndroid Build Coastguard Worker //
111*1b3f573fSAndroid Build Coastguard Worker // Get/Set a given field from/to a message.
112*1b3f573fSAndroid Build Coastguard Worker //
113*1b3f573fSAndroid Build Coastguard Worker 
114*1b3f573fSAndroid Build Coastguard Worker // Single Fields
115*1b3f573fSAndroid Build Coastguard Worker 
116*1b3f573fSAndroid Build Coastguard Worker /**
117*1b3f573fSAndroid Build Coastguard Worker  * Gets the value of a bytes field.
118*1b3f573fSAndroid Build Coastguard Worker  *
119*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message from which to get the field.
120*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to get.
121*1b3f573fSAndroid Build Coastguard Worker  **/
122*1b3f573fSAndroid Build Coastguard Worker NSData *GPBGetMessageBytesField(GPBMessage *self, GPBFieldDescriptor *field);
123*1b3f573fSAndroid Build Coastguard Worker 
124*1b3f573fSAndroid Build Coastguard Worker /**
125*1b3f573fSAndroid Build Coastguard Worker  * Sets the value of a bytes field.
126*1b3f573fSAndroid Build Coastguard Worker  *
127*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message into which to set the field.
128*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to set.
129*1b3f573fSAndroid Build Coastguard Worker  * @param value The to set in the field.
130*1b3f573fSAndroid Build Coastguard Worker  **/
131*1b3f573fSAndroid Build Coastguard Worker void GPBSetMessageBytesField(GPBMessage *self, GPBFieldDescriptor *field, NSData *value);
132*1b3f573fSAndroid Build Coastguard Worker 
133*1b3f573fSAndroid Build Coastguard Worker /**
134*1b3f573fSAndroid Build Coastguard Worker  * Gets the value of a string field.
135*1b3f573fSAndroid Build Coastguard Worker  *
136*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message from which to get the field.
137*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to get.
138*1b3f573fSAndroid Build Coastguard Worker  **/
139*1b3f573fSAndroid Build Coastguard Worker NSString *GPBGetMessageStringField(GPBMessage *self, GPBFieldDescriptor *field);
140*1b3f573fSAndroid Build Coastguard Worker 
141*1b3f573fSAndroid Build Coastguard Worker /**
142*1b3f573fSAndroid Build Coastguard Worker  * Sets the value of a string field.
143*1b3f573fSAndroid Build Coastguard Worker  *
144*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message into which to set the field.
145*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to set.
146*1b3f573fSAndroid Build Coastguard Worker  * @param value The to set in the field.
147*1b3f573fSAndroid Build Coastguard Worker  **/
148*1b3f573fSAndroid Build Coastguard Worker void GPBSetMessageStringField(GPBMessage *self, GPBFieldDescriptor *field, NSString *value);
149*1b3f573fSAndroid Build Coastguard Worker 
150*1b3f573fSAndroid Build Coastguard Worker /**
151*1b3f573fSAndroid Build Coastguard Worker  * Gets the value of a message field.
152*1b3f573fSAndroid Build Coastguard Worker  *
153*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message from which to get the field.
154*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to get.
155*1b3f573fSAndroid Build Coastguard Worker  **/
156*1b3f573fSAndroid Build Coastguard Worker GPBMessage *GPBGetMessageMessageField(GPBMessage *self, GPBFieldDescriptor *field);
157*1b3f573fSAndroid Build Coastguard Worker 
158*1b3f573fSAndroid Build Coastguard Worker /**
159*1b3f573fSAndroid Build Coastguard Worker  * Sets the value of a message field.
160*1b3f573fSAndroid Build Coastguard Worker  *
161*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message into which to set the field.
162*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to set.
163*1b3f573fSAndroid Build Coastguard Worker  * @param value The to set in the field.
164*1b3f573fSAndroid Build Coastguard Worker  **/
165*1b3f573fSAndroid Build Coastguard Worker void GPBSetMessageMessageField(GPBMessage *self, GPBFieldDescriptor *field, GPBMessage *value);
166*1b3f573fSAndroid Build Coastguard Worker 
167*1b3f573fSAndroid Build Coastguard Worker /**
168*1b3f573fSAndroid Build Coastguard Worker  * Gets the value of a group field.
169*1b3f573fSAndroid Build Coastguard Worker  *
170*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message from which to get the field.
171*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to get.
172*1b3f573fSAndroid Build Coastguard Worker  **/
173*1b3f573fSAndroid Build Coastguard Worker GPBMessage *GPBGetMessageGroupField(GPBMessage *self, GPBFieldDescriptor *field);
174*1b3f573fSAndroid Build Coastguard Worker 
175*1b3f573fSAndroid Build Coastguard Worker /**
176*1b3f573fSAndroid Build Coastguard Worker  * Sets the value of a group field.
177*1b3f573fSAndroid Build Coastguard Worker  *
178*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message into which to set the field.
179*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to set.
180*1b3f573fSAndroid Build Coastguard Worker  * @param value The to set in the field.
181*1b3f573fSAndroid Build Coastguard Worker  **/
182*1b3f573fSAndroid Build Coastguard Worker void GPBSetMessageGroupField(GPBMessage *self, GPBFieldDescriptor *field, GPBMessage *value);
183*1b3f573fSAndroid Build Coastguard Worker 
184*1b3f573fSAndroid Build Coastguard Worker /**
185*1b3f573fSAndroid Build Coastguard Worker  * Gets the value of a bool field.
186*1b3f573fSAndroid Build Coastguard Worker  *
187*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message from which to get the field.
188*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to get.
189*1b3f573fSAndroid Build Coastguard Worker  **/
190*1b3f573fSAndroid Build Coastguard Worker BOOL GPBGetMessageBoolField(GPBMessage *self, GPBFieldDescriptor *field);
191*1b3f573fSAndroid Build Coastguard Worker 
192*1b3f573fSAndroid Build Coastguard Worker /**
193*1b3f573fSAndroid Build Coastguard Worker  * Sets the value of a bool field.
194*1b3f573fSAndroid Build Coastguard Worker  *
195*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message into which to set the field.
196*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to set.
197*1b3f573fSAndroid Build Coastguard Worker  * @param value The to set in the field.
198*1b3f573fSAndroid Build Coastguard Worker  **/
199*1b3f573fSAndroid Build Coastguard Worker void GPBSetMessageBoolField(GPBMessage *self, GPBFieldDescriptor *field, BOOL value);
200*1b3f573fSAndroid Build Coastguard Worker 
201*1b3f573fSAndroid Build Coastguard Worker /**
202*1b3f573fSAndroid Build Coastguard Worker  * Gets the value of an int32 field.
203*1b3f573fSAndroid Build Coastguard Worker  *
204*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message from which to get the field.
205*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to get.
206*1b3f573fSAndroid Build Coastguard Worker  **/
207*1b3f573fSAndroid Build Coastguard Worker int32_t GPBGetMessageInt32Field(GPBMessage *self, GPBFieldDescriptor *field);
208*1b3f573fSAndroid Build Coastguard Worker 
209*1b3f573fSAndroid Build Coastguard Worker /**
210*1b3f573fSAndroid Build Coastguard Worker  * Sets the value of an int32 field.
211*1b3f573fSAndroid Build Coastguard Worker  *
212*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message into which to set the field.
213*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to set.
214*1b3f573fSAndroid Build Coastguard Worker  * @param value The to set in the field.
215*1b3f573fSAndroid Build Coastguard Worker  **/
216*1b3f573fSAndroid Build Coastguard Worker void GPBSetMessageInt32Field(GPBMessage *self, GPBFieldDescriptor *field, int32_t value);
217*1b3f573fSAndroid Build Coastguard Worker 
218*1b3f573fSAndroid Build Coastguard Worker /**
219*1b3f573fSAndroid Build Coastguard Worker  * Gets the value of an uint32 field.
220*1b3f573fSAndroid Build Coastguard Worker  *
221*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message from which to get the field.
222*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to get.
223*1b3f573fSAndroid Build Coastguard Worker  **/
224*1b3f573fSAndroid Build Coastguard Worker uint32_t GPBGetMessageUInt32Field(GPBMessage *self, GPBFieldDescriptor *field);
225*1b3f573fSAndroid Build Coastguard Worker 
226*1b3f573fSAndroid Build Coastguard Worker /**
227*1b3f573fSAndroid Build Coastguard Worker  * Sets the value of an uint32 field.
228*1b3f573fSAndroid Build Coastguard Worker  *
229*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message into which to set the field.
230*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to set.
231*1b3f573fSAndroid Build Coastguard Worker  * @param value The to set in the field.
232*1b3f573fSAndroid Build Coastguard Worker  **/
233*1b3f573fSAndroid Build Coastguard Worker void GPBSetMessageUInt32Field(GPBMessage *self, GPBFieldDescriptor *field, uint32_t value);
234*1b3f573fSAndroid Build Coastguard Worker 
235*1b3f573fSAndroid Build Coastguard Worker /**
236*1b3f573fSAndroid Build Coastguard Worker  * Gets the value of an int64 field.
237*1b3f573fSAndroid Build Coastguard Worker  *
238*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message from which to get the field.
239*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to get.
240*1b3f573fSAndroid Build Coastguard Worker  **/
241*1b3f573fSAndroid Build Coastguard Worker int64_t GPBGetMessageInt64Field(GPBMessage *self, GPBFieldDescriptor *field);
242*1b3f573fSAndroid Build Coastguard Worker 
243*1b3f573fSAndroid Build Coastguard Worker /**
244*1b3f573fSAndroid Build Coastguard Worker  * Sets the value of an int64 field.
245*1b3f573fSAndroid Build Coastguard Worker  *
246*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message into which to set the field.
247*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to set.
248*1b3f573fSAndroid Build Coastguard Worker  * @param value The to set in the field.
249*1b3f573fSAndroid Build Coastguard Worker  **/
250*1b3f573fSAndroid Build Coastguard Worker void GPBSetMessageInt64Field(GPBMessage *self, GPBFieldDescriptor *field, int64_t value);
251*1b3f573fSAndroid Build Coastguard Worker 
252*1b3f573fSAndroid Build Coastguard Worker /**
253*1b3f573fSAndroid Build Coastguard Worker  * Gets the value of an uint64 field.
254*1b3f573fSAndroid Build Coastguard Worker  *
255*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message from which to get the field.
256*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to get.
257*1b3f573fSAndroid Build Coastguard Worker  **/
258*1b3f573fSAndroid Build Coastguard Worker uint64_t GPBGetMessageUInt64Field(GPBMessage *self, GPBFieldDescriptor *field);
259*1b3f573fSAndroid Build Coastguard Worker 
260*1b3f573fSAndroid Build Coastguard Worker /**
261*1b3f573fSAndroid Build Coastguard Worker  * Sets the value of an uint64 field.
262*1b3f573fSAndroid Build Coastguard Worker  *
263*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message into which to set the field.
264*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to set.
265*1b3f573fSAndroid Build Coastguard Worker  * @param value The to set in the field.
266*1b3f573fSAndroid Build Coastguard Worker  **/
267*1b3f573fSAndroid Build Coastguard Worker void GPBSetMessageUInt64Field(GPBMessage *self, GPBFieldDescriptor *field, uint64_t value);
268*1b3f573fSAndroid Build Coastguard Worker 
269*1b3f573fSAndroid Build Coastguard Worker /**
270*1b3f573fSAndroid Build Coastguard Worker  * Gets the value of a float field.
271*1b3f573fSAndroid Build Coastguard Worker  *
272*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message from which to get the field.
273*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to get.
274*1b3f573fSAndroid Build Coastguard Worker  **/
275*1b3f573fSAndroid Build Coastguard Worker float GPBGetMessageFloatField(GPBMessage *self, GPBFieldDescriptor *field);
276*1b3f573fSAndroid Build Coastguard Worker 
277*1b3f573fSAndroid Build Coastguard Worker /**
278*1b3f573fSAndroid Build Coastguard Worker  * Sets the value of a float field.
279*1b3f573fSAndroid Build Coastguard Worker  *
280*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message into which to set the field.
281*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to set.
282*1b3f573fSAndroid Build Coastguard Worker  * @param value The to set in the field.
283*1b3f573fSAndroid Build Coastguard Worker  **/
284*1b3f573fSAndroid Build Coastguard Worker void GPBSetMessageFloatField(GPBMessage *self, GPBFieldDescriptor *field, float value);
285*1b3f573fSAndroid Build Coastguard Worker 
286*1b3f573fSAndroid Build Coastguard Worker /**
287*1b3f573fSAndroid Build Coastguard Worker  * Gets the value of a double field.
288*1b3f573fSAndroid Build Coastguard Worker  *
289*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message from which to get the field.
290*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to get.
291*1b3f573fSAndroid Build Coastguard Worker  **/
292*1b3f573fSAndroid Build Coastguard Worker double GPBGetMessageDoubleField(GPBMessage *self, GPBFieldDescriptor *field);
293*1b3f573fSAndroid Build Coastguard Worker 
294*1b3f573fSAndroid Build Coastguard Worker /**
295*1b3f573fSAndroid Build Coastguard Worker  * Sets the value of a double field.
296*1b3f573fSAndroid Build Coastguard Worker  *
297*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message into which to set the field.
298*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to set.
299*1b3f573fSAndroid Build Coastguard Worker  * @param value The to set in the field.
300*1b3f573fSAndroid Build Coastguard Worker  **/
301*1b3f573fSAndroid Build Coastguard Worker void GPBSetMessageDoubleField(GPBMessage *self, GPBFieldDescriptor *field, double value);
302*1b3f573fSAndroid Build Coastguard Worker 
303*1b3f573fSAndroid Build Coastguard Worker /**
304*1b3f573fSAndroid Build Coastguard Worker  * Gets the given enum field of a message. For proto3, if the value isn't a
305*1b3f573fSAndroid Build Coastguard Worker  * member of the enum, @c kGPBUnrecognizedEnumeratorValue will be returned.
306*1b3f573fSAndroid Build Coastguard Worker  * GPBGetMessageRawEnumField will bypass the check and return whatever value
307*1b3f573fSAndroid Build Coastguard Worker  * was set.
308*1b3f573fSAndroid Build Coastguard Worker  *
309*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message from which to get the field.
310*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to get.
311*1b3f573fSAndroid Build Coastguard Worker  *
312*1b3f573fSAndroid Build Coastguard Worker  * @return The enum value for the given field.
313*1b3f573fSAndroid Build Coastguard Worker  **/
314*1b3f573fSAndroid Build Coastguard Worker int32_t GPBGetMessageEnumField(GPBMessage *self, GPBFieldDescriptor *field);
315*1b3f573fSAndroid Build Coastguard Worker 
316*1b3f573fSAndroid Build Coastguard Worker /**
317*1b3f573fSAndroid Build Coastguard Worker  * Set the given enum field of a message. You can only set values that are
318*1b3f573fSAndroid Build Coastguard Worker  * members of the enum.
319*1b3f573fSAndroid Build Coastguard Worker  *
320*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message into which to set the field.
321*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to set.
322*1b3f573fSAndroid Build Coastguard Worker  * @param value The enum value to set in the field.
323*1b3f573fSAndroid Build Coastguard Worker  **/
324*1b3f573fSAndroid Build Coastguard Worker void GPBSetMessageEnumField(GPBMessage *self,
325*1b3f573fSAndroid Build Coastguard Worker                             GPBFieldDescriptor *field,
326*1b3f573fSAndroid Build Coastguard Worker                             int32_t value);
327*1b3f573fSAndroid Build Coastguard Worker 
328*1b3f573fSAndroid Build Coastguard Worker /**
329*1b3f573fSAndroid Build Coastguard Worker  * Get the given enum field of a message. No check is done to ensure the value
330*1b3f573fSAndroid Build Coastguard Worker  * was defined in the enum.
331*1b3f573fSAndroid Build Coastguard Worker  *
332*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message from which to get the field.
333*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to get.
334*1b3f573fSAndroid Build Coastguard Worker  *
335*1b3f573fSAndroid Build Coastguard Worker  * @return The raw enum value for the given field.
336*1b3f573fSAndroid Build Coastguard Worker  **/
337*1b3f573fSAndroid Build Coastguard Worker int32_t GPBGetMessageRawEnumField(GPBMessage *self, GPBFieldDescriptor *field);
338*1b3f573fSAndroid Build Coastguard Worker 
339*1b3f573fSAndroid Build Coastguard Worker /**
340*1b3f573fSAndroid Build Coastguard Worker  * Set the given enum field of a message. You can set the value to anything,
341*1b3f573fSAndroid Build Coastguard Worker  * even a value that is not a member of the enum.
342*1b3f573fSAndroid Build Coastguard Worker  *
343*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message into which to set the field.
344*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to set.
345*1b3f573fSAndroid Build Coastguard Worker  * @param value The raw enum value to set in the field.
346*1b3f573fSAndroid Build Coastguard Worker  **/
347*1b3f573fSAndroid Build Coastguard Worker void GPBSetMessageRawEnumField(GPBMessage *self,
348*1b3f573fSAndroid Build Coastguard Worker                                GPBFieldDescriptor *field,
349*1b3f573fSAndroid Build Coastguard Worker                                int32_t value);
350*1b3f573fSAndroid Build Coastguard Worker 
351*1b3f573fSAndroid Build Coastguard Worker // Repeated Fields
352*1b3f573fSAndroid Build Coastguard Worker 
353*1b3f573fSAndroid Build Coastguard Worker /**
354*1b3f573fSAndroid Build Coastguard Worker  * Gets the value of a repeated field.
355*1b3f573fSAndroid Build Coastguard Worker  *
356*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message from which to get the field.
357*1b3f573fSAndroid Build Coastguard Worker  * @param field The repeated field to get.
358*1b3f573fSAndroid Build Coastguard Worker  *
359*1b3f573fSAndroid Build Coastguard Worker  * @return A GPB*Array or an NSMutableArray based on the field's type.
360*1b3f573fSAndroid Build Coastguard Worker  **/
361*1b3f573fSAndroid Build Coastguard Worker id GPBGetMessageRepeatedField(GPBMessage *self, GPBFieldDescriptor *field);
362*1b3f573fSAndroid Build Coastguard Worker 
363*1b3f573fSAndroid Build Coastguard Worker /**
364*1b3f573fSAndroid Build Coastguard Worker  * Sets the value of a repeated field.
365*1b3f573fSAndroid Build Coastguard Worker  *
366*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message into which to set the field.
367*1b3f573fSAndroid Build Coastguard Worker  * @param field The field to set.
368*1b3f573fSAndroid Build Coastguard Worker  * @param array A GPB*Array or NSMutableArray based on the field's type.
369*1b3f573fSAndroid Build Coastguard Worker  **/
370*1b3f573fSAndroid Build Coastguard Worker void GPBSetMessageRepeatedField(GPBMessage *self,
371*1b3f573fSAndroid Build Coastguard Worker                                 GPBFieldDescriptor *field,
372*1b3f573fSAndroid Build Coastguard Worker                                 id array);
373*1b3f573fSAndroid Build Coastguard Worker 
374*1b3f573fSAndroid Build Coastguard Worker // Map Fields
375*1b3f573fSAndroid Build Coastguard Worker 
376*1b3f573fSAndroid Build Coastguard Worker /**
377*1b3f573fSAndroid Build Coastguard Worker  * Gets the value of a map<> field.
378*1b3f573fSAndroid Build Coastguard Worker  *
379*1b3f573fSAndroid Build Coastguard Worker  * @param self  The message from which to get the field.
380*1b3f573fSAndroid Build Coastguard Worker  * @param field The repeated field to get.
381*1b3f573fSAndroid Build Coastguard Worker  *
382*1b3f573fSAndroid Build Coastguard Worker  * @return A GPB*Dictionary or NSMutableDictionary based on the field's type.
383*1b3f573fSAndroid Build Coastguard Worker  **/
384*1b3f573fSAndroid Build Coastguard Worker id GPBGetMessageMapField(GPBMessage *self, GPBFieldDescriptor *field);
385*1b3f573fSAndroid Build Coastguard Worker 
386*1b3f573fSAndroid Build Coastguard Worker /**
387*1b3f573fSAndroid Build Coastguard Worker  * Sets the value of a map<> field.
388*1b3f573fSAndroid Build Coastguard Worker  *
389*1b3f573fSAndroid Build Coastguard Worker  * @param self       The message into which to set the field.
390*1b3f573fSAndroid Build Coastguard Worker  * @param field      The field to set.
391*1b3f573fSAndroid Build Coastguard Worker  * @param dictionary A GPB*Dictionary or NSMutableDictionary based on the
392*1b3f573fSAndroid Build Coastguard Worker  *                   field's type.
393*1b3f573fSAndroid Build Coastguard Worker  **/
394*1b3f573fSAndroid Build Coastguard Worker void GPBSetMessageMapField(GPBMessage *self,
395*1b3f573fSAndroid Build Coastguard Worker                            GPBFieldDescriptor *field,
396*1b3f573fSAndroid Build Coastguard Worker                            id dictionary);
397*1b3f573fSAndroid Build Coastguard Worker 
398*1b3f573fSAndroid Build Coastguard Worker // clang-format on
399*1b3f573fSAndroid Build Coastguard Worker //%PDDM-EXPAND-END GPB_ACCESSORS()
400*1b3f573fSAndroid Build Coastguard Worker 
401*1b3f573fSAndroid Build Coastguard Worker /**
402*1b3f573fSAndroid Build Coastguard Worker  * Returns an empty NSData to assign to byte fields when you wish to assign them
403*1b3f573fSAndroid Build Coastguard Worker  * to empty. Prevents allocating a lot of little [NSData data] objects.
404*1b3f573fSAndroid Build Coastguard Worker  **/
405*1b3f573fSAndroid Build Coastguard Worker NSData *GPBEmptyNSData(void) __attribute__((pure));
406*1b3f573fSAndroid Build Coastguard Worker 
407*1b3f573fSAndroid Build Coastguard Worker /**
408*1b3f573fSAndroid Build Coastguard Worker  * Drops the `unknownFields` from the given message and from all sub message.
409*1b3f573fSAndroid Build Coastguard Worker  **/
410*1b3f573fSAndroid Build Coastguard Worker void GPBMessageDropUnknownFieldsRecursively(GPBMessage *message);
411*1b3f573fSAndroid Build Coastguard Worker 
412*1b3f573fSAndroid Build Coastguard Worker NS_ASSUME_NONNULL_END
413*1b3f573fSAndroid Build Coastguard Worker 
414*1b3f573fSAndroid Build Coastguard Worker CF_EXTERN_C_END
415*1b3f573fSAndroid Build Coastguard Worker 
416*1b3f573fSAndroid Build Coastguard Worker 
417*1b3f573fSAndroid Build Coastguard Worker //%PDDM-DEFINE GPB_ACCESSORS()
418*1b3f573fSAndroid Build Coastguard Worker //%
419*1b3f573fSAndroid Build Coastguard Worker //%//
420*1b3f573fSAndroid Build Coastguard Worker //%// Get/Set a given field from/to a message.
421*1b3f573fSAndroid Build Coastguard Worker //%//
422*1b3f573fSAndroid Build Coastguard Worker //%
423*1b3f573fSAndroid Build Coastguard Worker //%// Single Fields
424*1b3f573fSAndroid Build Coastguard Worker //%
425*1b3f573fSAndroid Build Coastguard Worker //%GPB_ACCESSOR_SINGLE_FULL(Bytes, NSData, , *)
426*1b3f573fSAndroid Build Coastguard Worker //%GPB_ACCESSOR_SINGLE_FULL(String, NSString, , *)
427*1b3f573fSAndroid Build Coastguard Worker //%GPB_ACCESSOR_SINGLE_FULL(Message, GPBMessage, , *)
428*1b3f573fSAndroid Build Coastguard Worker //%GPB_ACCESSOR_SINGLE_FULL(Group, GPBMessage, , *)
429*1b3f573fSAndroid Build Coastguard Worker //%GPB_ACCESSOR_SINGLE(Bool, BOOL, )
430*1b3f573fSAndroid Build Coastguard Worker //%GPB_ACCESSOR_SINGLE(Int32, int32_t, n)
431*1b3f573fSAndroid Build Coastguard Worker //%GPB_ACCESSOR_SINGLE(UInt32, uint32_t, n)
432*1b3f573fSAndroid Build Coastguard Worker //%GPB_ACCESSOR_SINGLE(Int64, int64_t, n)
433*1b3f573fSAndroid Build Coastguard Worker //%GPB_ACCESSOR_SINGLE(UInt64, uint64_t, n)
434*1b3f573fSAndroid Build Coastguard Worker //%GPB_ACCESSOR_SINGLE(Float, float, )
435*1b3f573fSAndroid Build Coastguard Worker //%GPB_ACCESSOR_SINGLE(Double, double, )
436*1b3f573fSAndroid Build Coastguard Worker //%/**
437*1b3f573fSAndroid Build Coastguard Worker //% * Gets the given enum field of a message. For proto3, if the value isn't a
438*1b3f573fSAndroid Build Coastguard Worker //% * member of the enum, @c kGPBUnrecognizedEnumeratorValue will be returned.
439*1b3f573fSAndroid Build Coastguard Worker //% * GPBGetMessageRawEnumField will bypass the check and return whatever value
440*1b3f573fSAndroid Build Coastguard Worker //% * was set.
441*1b3f573fSAndroid Build Coastguard Worker //% *
442*1b3f573fSAndroid Build Coastguard Worker //% * @param self  The message from which to get the field.
443*1b3f573fSAndroid Build Coastguard Worker //% * @param field The field to get.
444*1b3f573fSAndroid Build Coastguard Worker //% *
445*1b3f573fSAndroid Build Coastguard Worker //% * @return The enum value for the given field.
446*1b3f573fSAndroid Build Coastguard Worker //% **/
447*1b3f573fSAndroid Build Coastguard Worker //%int32_t GPBGetMessageEnumField(GPBMessage *self, GPBFieldDescriptor *field);
448*1b3f573fSAndroid Build Coastguard Worker //%
449*1b3f573fSAndroid Build Coastguard Worker //%/**
450*1b3f573fSAndroid Build Coastguard Worker //% * Set the given enum field of a message. You can only set values that are
451*1b3f573fSAndroid Build Coastguard Worker //% * members of the enum.
452*1b3f573fSAndroid Build Coastguard Worker //% *
453*1b3f573fSAndroid Build Coastguard Worker //% * @param self  The message into which to set the field.
454*1b3f573fSAndroid Build Coastguard Worker //% * @param field The field to set.
455*1b3f573fSAndroid Build Coastguard Worker //% * @param value The enum value to set in the field.
456*1b3f573fSAndroid Build Coastguard Worker //% **/
457*1b3f573fSAndroid Build Coastguard Worker //%void GPBSetMessageEnumField(GPBMessage *self,
458*1b3f573fSAndroid Build Coastguard Worker //%                            GPBFieldDescriptor *field,
459*1b3f573fSAndroid Build Coastguard Worker //%                            int32_t value);
460*1b3f573fSAndroid Build Coastguard Worker //%
461*1b3f573fSAndroid Build Coastguard Worker //%/**
462*1b3f573fSAndroid Build Coastguard Worker //% * Get the given enum field of a message. No check is done to ensure the value
463*1b3f573fSAndroid Build Coastguard Worker //% * was defined in the enum.
464*1b3f573fSAndroid Build Coastguard Worker //% *
465*1b3f573fSAndroid Build Coastguard Worker //% * @param self  The message from which to get the field.
466*1b3f573fSAndroid Build Coastguard Worker //% * @param field The field to get.
467*1b3f573fSAndroid Build Coastguard Worker //% *
468*1b3f573fSAndroid Build Coastguard Worker //% * @return The raw enum value for the given field.
469*1b3f573fSAndroid Build Coastguard Worker //% **/
470*1b3f573fSAndroid Build Coastguard Worker //%int32_t GPBGetMessageRawEnumField(GPBMessage *self, GPBFieldDescriptor *field);
471*1b3f573fSAndroid Build Coastguard Worker //%
472*1b3f573fSAndroid Build Coastguard Worker //%/**
473*1b3f573fSAndroid Build Coastguard Worker //% * Set the given enum field of a message. You can set the value to anything,
474*1b3f573fSAndroid Build Coastguard Worker //% * even a value that is not a member of the enum.
475*1b3f573fSAndroid Build Coastguard Worker //% *
476*1b3f573fSAndroid Build Coastguard Worker //% * @param self  The message into which to set the field.
477*1b3f573fSAndroid Build Coastguard Worker //% * @param field The field to set.
478*1b3f573fSAndroid Build Coastguard Worker //% * @param value The raw enum value to set in the field.
479*1b3f573fSAndroid Build Coastguard Worker //% **/
480*1b3f573fSAndroid Build Coastguard Worker //%void GPBSetMessageRawEnumField(GPBMessage *self,
481*1b3f573fSAndroid Build Coastguard Worker //%                               GPBFieldDescriptor *field,
482*1b3f573fSAndroid Build Coastguard Worker //%                               int32_t value);
483*1b3f573fSAndroid Build Coastguard Worker //%
484*1b3f573fSAndroid Build Coastguard Worker //%// Repeated Fields
485*1b3f573fSAndroid Build Coastguard Worker //%
486*1b3f573fSAndroid Build Coastguard Worker //%/**
487*1b3f573fSAndroid Build Coastguard Worker //% * Gets the value of a repeated field.
488*1b3f573fSAndroid Build Coastguard Worker //% *
489*1b3f573fSAndroid Build Coastguard Worker //% * @param self  The message from which to get the field.
490*1b3f573fSAndroid Build Coastguard Worker //% * @param field The repeated field to get.
491*1b3f573fSAndroid Build Coastguard Worker //% *
492*1b3f573fSAndroid Build Coastguard Worker //% * @return A GPB*Array or an NSMutableArray based on the field's type.
493*1b3f573fSAndroid Build Coastguard Worker //% **/
494*1b3f573fSAndroid Build Coastguard Worker //%id GPBGetMessageRepeatedField(GPBMessage *self, GPBFieldDescriptor *field);
495*1b3f573fSAndroid Build Coastguard Worker //%
496*1b3f573fSAndroid Build Coastguard Worker //%/**
497*1b3f573fSAndroid Build Coastguard Worker //% * Sets the value of a repeated field.
498*1b3f573fSAndroid Build Coastguard Worker //% *
499*1b3f573fSAndroid Build Coastguard Worker //% * @param self  The message into which to set the field.
500*1b3f573fSAndroid Build Coastguard Worker //% * @param field The field to set.
501*1b3f573fSAndroid Build Coastguard Worker //% * @param array A GPB*Array or NSMutableArray based on the field's type.
502*1b3f573fSAndroid Build Coastguard Worker //% **/
503*1b3f573fSAndroid Build Coastguard Worker //%void GPBSetMessageRepeatedField(GPBMessage *self,
504*1b3f573fSAndroid Build Coastguard Worker //%                                GPBFieldDescriptor *field,
505*1b3f573fSAndroid Build Coastguard Worker //%                                id array);
506*1b3f573fSAndroid Build Coastguard Worker //%
507*1b3f573fSAndroid Build Coastguard Worker //%// Map Fields
508*1b3f573fSAndroid Build Coastguard Worker //%
509*1b3f573fSAndroid Build Coastguard Worker //%/**
510*1b3f573fSAndroid Build Coastguard Worker //% * Gets the value of a map<> field.
511*1b3f573fSAndroid Build Coastguard Worker //% *
512*1b3f573fSAndroid Build Coastguard Worker //% * @param self  The message from which to get the field.
513*1b3f573fSAndroid Build Coastguard Worker //% * @param field The repeated field to get.
514*1b3f573fSAndroid Build Coastguard Worker //% *
515*1b3f573fSAndroid Build Coastguard Worker //% * @return A GPB*Dictionary or NSMutableDictionary based on the field's type.
516*1b3f573fSAndroid Build Coastguard Worker //% **/
517*1b3f573fSAndroid Build Coastguard Worker //%id GPBGetMessageMapField(GPBMessage *self, GPBFieldDescriptor *field);
518*1b3f573fSAndroid Build Coastguard Worker //%
519*1b3f573fSAndroid Build Coastguard Worker //%/**
520*1b3f573fSAndroid Build Coastguard Worker //% * Sets the value of a map<> field.
521*1b3f573fSAndroid Build Coastguard Worker //% *
522*1b3f573fSAndroid Build Coastguard Worker //% * @param self       The message into which to set the field.
523*1b3f573fSAndroid Build Coastguard Worker //% * @param field      The field to set.
524*1b3f573fSAndroid Build Coastguard Worker //% * @param dictionary A GPB*Dictionary or NSMutableDictionary based on the
525*1b3f573fSAndroid Build Coastguard Worker //% *                   field's type.
526*1b3f573fSAndroid Build Coastguard Worker //% **/
527*1b3f573fSAndroid Build Coastguard Worker //%void GPBSetMessageMapField(GPBMessage *self,
528*1b3f573fSAndroid Build Coastguard Worker //%                           GPBFieldDescriptor *field,
529*1b3f573fSAndroid Build Coastguard Worker //%                           id dictionary);
530*1b3f573fSAndroid Build Coastguard Worker //%
531*1b3f573fSAndroid Build Coastguard Worker 
532*1b3f573fSAndroid Build Coastguard Worker //%PDDM-DEFINE GPB_ACCESSOR_SINGLE(NAME, TYPE, AN)
533*1b3f573fSAndroid Build Coastguard Worker //%GPB_ACCESSOR_SINGLE_FULL(NAME, TYPE, AN, )
534*1b3f573fSAndroid Build Coastguard Worker //%PDDM-DEFINE GPB_ACCESSOR_SINGLE_FULL(NAME, TYPE, AN, TisP)
535*1b3f573fSAndroid Build Coastguard Worker //%/**
536*1b3f573fSAndroid Build Coastguard Worker //% * Gets the value of a##AN NAME$L field.
537*1b3f573fSAndroid Build Coastguard Worker //% *
538*1b3f573fSAndroid Build Coastguard Worker //% * @param self  The message from which to get the field.
539*1b3f573fSAndroid Build Coastguard Worker //% * @param field The field to get.
540*1b3f573fSAndroid Build Coastguard Worker //% **/
541*1b3f573fSAndroid Build Coastguard Worker //%TYPE TisP##GPBGetMessage##NAME##Field(GPBMessage *self, GPBFieldDescriptor *field);
542*1b3f573fSAndroid Build Coastguard Worker //%
543*1b3f573fSAndroid Build Coastguard Worker //%/**
544*1b3f573fSAndroid Build Coastguard Worker //% * Sets the value of a##AN NAME$L field.
545*1b3f573fSAndroid Build Coastguard Worker //% *
546*1b3f573fSAndroid Build Coastguard Worker //% * @param self  The message into which to set the field.
547*1b3f573fSAndroid Build Coastguard Worker //% * @param field The field to set.
548*1b3f573fSAndroid Build Coastguard Worker //% * @param value The to set in the field.
549*1b3f573fSAndroid Build Coastguard Worker //% **/
550*1b3f573fSAndroid Build Coastguard Worker //%void GPBSetMessage##NAME##Field(GPBMessage *self, GPBFieldDescriptor *field, TYPE TisP##value);
551*1b3f573fSAndroid Build Coastguard Worker //%
552