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