xref: /aosp_15_r20/external/cronet/third_party/protobuf/objectivec/GPBFieldMask.pbobjc.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Generated by the protocol buffer compiler.  DO NOT EDIT!
2*6777b538SAndroid Build Coastguard Worker // source: google/protobuf/field_mask.proto
3*6777b538SAndroid Build Coastguard Worker 
4*6777b538SAndroid Build Coastguard Worker #import "GPBDescriptor.h"
5*6777b538SAndroid Build Coastguard Worker #import "GPBMessage.h"
6*6777b538SAndroid Build Coastguard Worker #import "GPBRootObject.h"
7*6777b538SAndroid Build Coastguard Worker 
8*6777b538SAndroid Build Coastguard Worker #if GOOGLE_PROTOBUF_OBJC_VERSION < 30004
9*6777b538SAndroid Build Coastguard Worker #error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources.
10*6777b538SAndroid Build Coastguard Worker #endif
11*6777b538SAndroid Build Coastguard Worker #if 30004 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION
12*6777b538SAndroid Build Coastguard Worker #error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources.
13*6777b538SAndroid Build Coastguard Worker #endif
14*6777b538SAndroid Build Coastguard Worker 
15*6777b538SAndroid Build Coastguard Worker // @@protoc_insertion_point(imports)
16*6777b538SAndroid Build Coastguard Worker 
17*6777b538SAndroid Build Coastguard Worker #pragma clang diagnostic push
18*6777b538SAndroid Build Coastguard Worker #pragma clang diagnostic ignored "-Wdeprecated-declarations"
19*6777b538SAndroid Build Coastguard Worker 
20*6777b538SAndroid Build Coastguard Worker CF_EXTERN_C_BEGIN
21*6777b538SAndroid Build Coastguard Worker 
22*6777b538SAndroid Build Coastguard Worker NS_ASSUME_NONNULL_BEGIN
23*6777b538SAndroid Build Coastguard Worker 
24*6777b538SAndroid Build Coastguard Worker #pragma mark - GPBFieldMaskRoot
25*6777b538SAndroid Build Coastguard Worker 
26*6777b538SAndroid Build Coastguard Worker /**
27*6777b538SAndroid Build Coastguard Worker  * Exposes the extension registry for this file.
28*6777b538SAndroid Build Coastguard Worker  *
29*6777b538SAndroid Build Coastguard Worker  * The base class provides:
30*6777b538SAndroid Build Coastguard Worker  * @code
31*6777b538SAndroid Build Coastguard Worker  *   + (GPBExtensionRegistry *)extensionRegistry;
32*6777b538SAndroid Build Coastguard Worker  * @endcode
33*6777b538SAndroid Build Coastguard Worker  * which is a @c GPBExtensionRegistry that includes all the extensions defined by
34*6777b538SAndroid Build Coastguard Worker  * this file and all files that it depends on.
35*6777b538SAndroid Build Coastguard Worker  **/
36*6777b538SAndroid Build Coastguard Worker GPB_FINAL @interface GPBFieldMaskRoot : GPBRootObject
37*6777b538SAndroid Build Coastguard Worker @end
38*6777b538SAndroid Build Coastguard Worker 
39*6777b538SAndroid Build Coastguard Worker #pragma mark - GPBFieldMask
40*6777b538SAndroid Build Coastguard Worker 
41*6777b538SAndroid Build Coastguard Worker typedef GPB_ENUM(GPBFieldMask_FieldNumber) {
42*6777b538SAndroid Build Coastguard Worker   GPBFieldMask_FieldNumber_PathsArray = 1,
43*6777b538SAndroid Build Coastguard Worker };
44*6777b538SAndroid Build Coastguard Worker 
45*6777b538SAndroid Build Coastguard Worker /**
46*6777b538SAndroid Build Coastguard Worker  * `FieldMask` represents a set of symbolic field paths, for example:
47*6777b538SAndroid Build Coastguard Worker  *
48*6777b538SAndroid Build Coastguard Worker  *     paths: "f.a"
49*6777b538SAndroid Build Coastguard Worker  *     paths: "f.b.d"
50*6777b538SAndroid Build Coastguard Worker  *
51*6777b538SAndroid Build Coastguard Worker  * Here `f` represents a field in some root message, `a` and `b`
52*6777b538SAndroid Build Coastguard Worker  * fields in the message found in `f`, and `d` a field found in the
53*6777b538SAndroid Build Coastguard Worker  * message in `f.b`.
54*6777b538SAndroid Build Coastguard Worker  *
55*6777b538SAndroid Build Coastguard Worker  * Field masks are used to specify a subset of fields that should be
56*6777b538SAndroid Build Coastguard Worker  * returned by a get operation or modified by an update operation.
57*6777b538SAndroid Build Coastguard Worker  * Field masks also have a custom JSON encoding (see below).
58*6777b538SAndroid Build Coastguard Worker  *
59*6777b538SAndroid Build Coastguard Worker  * # Field Masks in Projections
60*6777b538SAndroid Build Coastguard Worker  *
61*6777b538SAndroid Build Coastguard Worker  * When used in the context of a projection, a response message or
62*6777b538SAndroid Build Coastguard Worker  * sub-message is filtered by the API to only contain those fields as
63*6777b538SAndroid Build Coastguard Worker  * specified in the mask. For example, if the mask in the previous
64*6777b538SAndroid Build Coastguard Worker  * example is applied to a response message as follows:
65*6777b538SAndroid Build Coastguard Worker  *
66*6777b538SAndroid Build Coastguard Worker  *     f {
67*6777b538SAndroid Build Coastguard Worker  *       a : 22
68*6777b538SAndroid Build Coastguard Worker  *       b {
69*6777b538SAndroid Build Coastguard Worker  *         d : 1
70*6777b538SAndroid Build Coastguard Worker  *         x : 2
71*6777b538SAndroid Build Coastguard Worker  *       }
72*6777b538SAndroid Build Coastguard Worker  *       y : 13
73*6777b538SAndroid Build Coastguard Worker  *     }
74*6777b538SAndroid Build Coastguard Worker  *     z: 8
75*6777b538SAndroid Build Coastguard Worker  *
76*6777b538SAndroid Build Coastguard Worker  * The result will not contain specific values for fields x,y and z
77*6777b538SAndroid Build Coastguard Worker  * (their value will be set to the default, and omitted in proto text
78*6777b538SAndroid Build Coastguard Worker  * output):
79*6777b538SAndroid Build Coastguard Worker  *
80*6777b538SAndroid Build Coastguard Worker  *
81*6777b538SAndroid Build Coastguard Worker  *     f {
82*6777b538SAndroid Build Coastguard Worker  *       a : 22
83*6777b538SAndroid Build Coastguard Worker  *       b {
84*6777b538SAndroid Build Coastguard Worker  *         d : 1
85*6777b538SAndroid Build Coastguard Worker  *       }
86*6777b538SAndroid Build Coastguard Worker  *     }
87*6777b538SAndroid Build Coastguard Worker  *
88*6777b538SAndroid Build Coastguard Worker  * A repeated field is not allowed except at the last position of a
89*6777b538SAndroid Build Coastguard Worker  * paths string.
90*6777b538SAndroid Build Coastguard Worker  *
91*6777b538SAndroid Build Coastguard Worker  * If a FieldMask object is not present in a get operation, the
92*6777b538SAndroid Build Coastguard Worker  * operation applies to all fields (as if a FieldMask of all fields
93*6777b538SAndroid Build Coastguard Worker  * had been specified).
94*6777b538SAndroid Build Coastguard Worker  *
95*6777b538SAndroid Build Coastguard Worker  * Note that a field mask does not necessarily apply to the
96*6777b538SAndroid Build Coastguard Worker  * top-level response message. In case of a REST get operation, the
97*6777b538SAndroid Build Coastguard Worker  * field mask applies directly to the response, but in case of a REST
98*6777b538SAndroid Build Coastguard Worker  * list operation, the mask instead applies to each individual message
99*6777b538SAndroid Build Coastguard Worker  * in the returned resource list. In case of a REST custom method,
100*6777b538SAndroid Build Coastguard Worker  * other definitions may be used. Where the mask applies will be
101*6777b538SAndroid Build Coastguard Worker  * clearly documented together with its declaration in the API.  In
102*6777b538SAndroid Build Coastguard Worker  * any case, the effect on the returned resource/resources is required
103*6777b538SAndroid Build Coastguard Worker  * behavior for APIs.
104*6777b538SAndroid Build Coastguard Worker  *
105*6777b538SAndroid Build Coastguard Worker  * # Field Masks in Update Operations
106*6777b538SAndroid Build Coastguard Worker  *
107*6777b538SAndroid Build Coastguard Worker  * A field mask in update operations specifies which fields of the
108*6777b538SAndroid Build Coastguard Worker  * targeted resource are going to be updated. The API is required
109*6777b538SAndroid Build Coastguard Worker  * to only change the values of the fields as specified in the mask
110*6777b538SAndroid Build Coastguard Worker  * and leave the others untouched. If a resource is passed in to
111*6777b538SAndroid Build Coastguard Worker  * describe the updated values, the API ignores the values of all
112*6777b538SAndroid Build Coastguard Worker  * fields not covered by the mask.
113*6777b538SAndroid Build Coastguard Worker  *
114*6777b538SAndroid Build Coastguard Worker  * If a repeated field is specified for an update operation, new values will
115*6777b538SAndroid Build Coastguard Worker  * be appended to the existing repeated field in the target resource. Note that
116*6777b538SAndroid Build Coastguard Worker  * a repeated field is only allowed in the last position of a `paths` string.
117*6777b538SAndroid Build Coastguard Worker  *
118*6777b538SAndroid Build Coastguard Worker  * If a sub-message is specified in the last position of the field mask for an
119*6777b538SAndroid Build Coastguard Worker  * update operation, then new value will be merged into the existing sub-message
120*6777b538SAndroid Build Coastguard Worker  * in the target resource.
121*6777b538SAndroid Build Coastguard Worker  *
122*6777b538SAndroid Build Coastguard Worker  * For example, given the target message:
123*6777b538SAndroid Build Coastguard Worker  *
124*6777b538SAndroid Build Coastguard Worker  *     f {
125*6777b538SAndroid Build Coastguard Worker  *       b {
126*6777b538SAndroid Build Coastguard Worker  *         d: 1
127*6777b538SAndroid Build Coastguard Worker  *         x: 2
128*6777b538SAndroid Build Coastguard Worker  *       }
129*6777b538SAndroid Build Coastguard Worker  *       c: [1]
130*6777b538SAndroid Build Coastguard Worker  *     }
131*6777b538SAndroid Build Coastguard Worker  *
132*6777b538SAndroid Build Coastguard Worker  * And an update message:
133*6777b538SAndroid Build Coastguard Worker  *
134*6777b538SAndroid Build Coastguard Worker  *     f {
135*6777b538SAndroid Build Coastguard Worker  *       b {
136*6777b538SAndroid Build Coastguard Worker  *         d: 10
137*6777b538SAndroid Build Coastguard Worker  *       }
138*6777b538SAndroid Build Coastguard Worker  *       c: [2]
139*6777b538SAndroid Build Coastguard Worker  *     }
140*6777b538SAndroid Build Coastguard Worker  *
141*6777b538SAndroid Build Coastguard Worker  * then if the field mask is:
142*6777b538SAndroid Build Coastguard Worker  *
143*6777b538SAndroid Build Coastguard Worker  *  paths: ["f.b", "f.c"]
144*6777b538SAndroid Build Coastguard Worker  *
145*6777b538SAndroid Build Coastguard Worker  * then the result will be:
146*6777b538SAndroid Build Coastguard Worker  *
147*6777b538SAndroid Build Coastguard Worker  *     f {
148*6777b538SAndroid Build Coastguard Worker  *       b {
149*6777b538SAndroid Build Coastguard Worker  *         d: 10
150*6777b538SAndroid Build Coastguard Worker  *         x: 2
151*6777b538SAndroid Build Coastguard Worker  *       }
152*6777b538SAndroid Build Coastguard Worker  *       c: [1, 2]
153*6777b538SAndroid Build Coastguard Worker  *     }
154*6777b538SAndroid Build Coastguard Worker  *
155*6777b538SAndroid Build Coastguard Worker  * An implementation may provide options to override this default behavior for
156*6777b538SAndroid Build Coastguard Worker  * repeated and message fields.
157*6777b538SAndroid Build Coastguard Worker  *
158*6777b538SAndroid Build Coastguard Worker  * In order to reset a field's value to the default, the field must
159*6777b538SAndroid Build Coastguard Worker  * be in the mask and set to the default value in the provided resource.
160*6777b538SAndroid Build Coastguard Worker  * Hence, in order to reset all fields of a resource, provide a default
161*6777b538SAndroid Build Coastguard Worker  * instance of the resource and set all fields in the mask, or do
162*6777b538SAndroid Build Coastguard Worker  * not provide a mask as described below.
163*6777b538SAndroid Build Coastguard Worker  *
164*6777b538SAndroid Build Coastguard Worker  * If a field mask is not present on update, the operation applies to
165*6777b538SAndroid Build Coastguard Worker  * all fields (as if a field mask of all fields has been specified).
166*6777b538SAndroid Build Coastguard Worker  * Note that in the presence of schema evolution, this may mean that
167*6777b538SAndroid Build Coastguard Worker  * fields the client does not know and has therefore not filled into
168*6777b538SAndroid Build Coastguard Worker  * the request will be reset to their default. If this is unwanted
169*6777b538SAndroid Build Coastguard Worker  * behavior, a specific service may require a client to always specify
170*6777b538SAndroid Build Coastguard Worker  * a field mask, producing an error if not.
171*6777b538SAndroid Build Coastguard Worker  *
172*6777b538SAndroid Build Coastguard Worker  * As with get operations, the location of the resource which
173*6777b538SAndroid Build Coastguard Worker  * describes the updated values in the request message depends on the
174*6777b538SAndroid Build Coastguard Worker  * operation kind. In any case, the effect of the field mask is
175*6777b538SAndroid Build Coastguard Worker  * required to be honored by the API.
176*6777b538SAndroid Build Coastguard Worker  *
177*6777b538SAndroid Build Coastguard Worker  * ## Considerations for HTTP REST
178*6777b538SAndroid Build Coastguard Worker  *
179*6777b538SAndroid Build Coastguard Worker  * The HTTP kind of an update operation which uses a field mask must
180*6777b538SAndroid Build Coastguard Worker  * be set to PATCH instead of PUT in order to satisfy HTTP semantics
181*6777b538SAndroid Build Coastguard Worker  * (PUT must only be used for full updates).
182*6777b538SAndroid Build Coastguard Worker  *
183*6777b538SAndroid Build Coastguard Worker  * # JSON Encoding of Field Masks
184*6777b538SAndroid Build Coastguard Worker  *
185*6777b538SAndroid Build Coastguard Worker  * In JSON, a field mask is encoded as a single string where paths are
186*6777b538SAndroid Build Coastguard Worker  * separated by a comma. Fields name in each path are converted
187*6777b538SAndroid Build Coastguard Worker  * to/from lower-camel naming conventions.
188*6777b538SAndroid Build Coastguard Worker  *
189*6777b538SAndroid Build Coastguard Worker  * As an example, consider the following message declarations:
190*6777b538SAndroid Build Coastguard Worker  *
191*6777b538SAndroid Build Coastguard Worker  *     message Profile {
192*6777b538SAndroid Build Coastguard Worker  *       User user = 1;
193*6777b538SAndroid Build Coastguard Worker  *       Photo photo = 2;
194*6777b538SAndroid Build Coastguard Worker  *     }
195*6777b538SAndroid Build Coastguard Worker  *     message User {
196*6777b538SAndroid Build Coastguard Worker  *       string display_name = 1;
197*6777b538SAndroid Build Coastguard Worker  *       string address = 2;
198*6777b538SAndroid Build Coastguard Worker  *     }
199*6777b538SAndroid Build Coastguard Worker  *
200*6777b538SAndroid Build Coastguard Worker  * In proto a field mask for `Profile` may look as such:
201*6777b538SAndroid Build Coastguard Worker  *
202*6777b538SAndroid Build Coastguard Worker  *     mask {
203*6777b538SAndroid Build Coastguard Worker  *       paths: "user.display_name"
204*6777b538SAndroid Build Coastguard Worker  *       paths: "photo"
205*6777b538SAndroid Build Coastguard Worker  *     }
206*6777b538SAndroid Build Coastguard Worker  *
207*6777b538SAndroid Build Coastguard Worker  * In JSON, the same mask is represented as below:
208*6777b538SAndroid Build Coastguard Worker  *
209*6777b538SAndroid Build Coastguard Worker  *     {
210*6777b538SAndroid Build Coastguard Worker  *       mask: "user.displayName,photo"
211*6777b538SAndroid Build Coastguard Worker  *     }
212*6777b538SAndroid Build Coastguard Worker  *
213*6777b538SAndroid Build Coastguard Worker  * # Field Masks and Oneof Fields
214*6777b538SAndroid Build Coastguard Worker  *
215*6777b538SAndroid Build Coastguard Worker  * Field masks treat fields in oneofs just as regular fields. Consider the
216*6777b538SAndroid Build Coastguard Worker  * following message:
217*6777b538SAndroid Build Coastguard Worker  *
218*6777b538SAndroid Build Coastguard Worker  *     message SampleMessage {
219*6777b538SAndroid Build Coastguard Worker  *       oneof test_oneof {
220*6777b538SAndroid Build Coastguard Worker  *         string name = 4;
221*6777b538SAndroid Build Coastguard Worker  *         SubMessage sub_message = 9;
222*6777b538SAndroid Build Coastguard Worker  *       }
223*6777b538SAndroid Build Coastguard Worker  *     }
224*6777b538SAndroid Build Coastguard Worker  *
225*6777b538SAndroid Build Coastguard Worker  * The field mask can be:
226*6777b538SAndroid Build Coastguard Worker  *
227*6777b538SAndroid Build Coastguard Worker  *     mask {
228*6777b538SAndroid Build Coastguard Worker  *       paths: "name"
229*6777b538SAndroid Build Coastguard Worker  *     }
230*6777b538SAndroid Build Coastguard Worker  *
231*6777b538SAndroid Build Coastguard Worker  * Or:
232*6777b538SAndroid Build Coastguard Worker  *
233*6777b538SAndroid Build Coastguard Worker  *     mask {
234*6777b538SAndroid Build Coastguard Worker  *       paths: "sub_message"
235*6777b538SAndroid Build Coastguard Worker  *     }
236*6777b538SAndroid Build Coastguard Worker  *
237*6777b538SAndroid Build Coastguard Worker  * Note that oneof type names ("test_oneof" in this case) cannot be used in
238*6777b538SAndroid Build Coastguard Worker  * paths.
239*6777b538SAndroid Build Coastguard Worker  *
240*6777b538SAndroid Build Coastguard Worker  * ## Field Mask Verification
241*6777b538SAndroid Build Coastguard Worker  *
242*6777b538SAndroid Build Coastguard Worker  * The implementation of any API method which has a FieldMask type field in the
243*6777b538SAndroid Build Coastguard Worker  * request should verify the included field paths, and return an
244*6777b538SAndroid Build Coastguard Worker  * `INVALID_ARGUMENT` error if any path is unmappable.
245*6777b538SAndroid Build Coastguard Worker  **/
246*6777b538SAndroid Build Coastguard Worker GPB_FINAL @interface GPBFieldMask : GPBMessage
247*6777b538SAndroid Build Coastguard Worker 
248*6777b538SAndroid Build Coastguard Worker /** The set of field mask paths. */
249*6777b538SAndroid Build Coastguard Worker @property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *pathsArray;
250*6777b538SAndroid Build Coastguard Worker /** The number of items in @c pathsArray without causing the array to be created. */
251*6777b538SAndroid Build Coastguard Worker @property(nonatomic, readonly) NSUInteger pathsArray_Count;
252*6777b538SAndroid Build Coastguard Worker 
253*6777b538SAndroid Build Coastguard Worker @end
254*6777b538SAndroid Build Coastguard Worker 
255*6777b538SAndroid Build Coastguard Worker NS_ASSUME_NONNULL_END
256*6777b538SAndroid Build Coastguard Worker 
257*6777b538SAndroid Build Coastguard Worker CF_EXTERN_C_END
258*6777b538SAndroid Build Coastguard Worker 
259*6777b538SAndroid Build Coastguard Worker #pragma clang diagnostic pop
260*6777b538SAndroid Build Coastguard Worker 
261*6777b538SAndroid Build Coastguard Worker // @@protoc_insertion_point(global_scope)
262