xref: /aosp_15_r20/external/protobuf/objectivec/GPBStruct.pbobjc.m (revision 1b3f573f81763fcece89efc2b6a5209149e44ab8)
1// Generated by the protocol buffer compiler.  DO NOT EDIT!
2// source: google/protobuf/struct.proto
3
4#import "GPBProtocolBuffers_RuntimeSupport.h"
5#import "GPBStruct.pbobjc.h"
6
7#import <stdatomic.h>
8
9// @@protoc_insertion_point(imports)
10
11#pragma clang diagnostic push
12#pragma clang diagnostic ignored "-Wdeprecated-declarations"
13#pragma clang diagnostic ignored "-Wdirect-ivar-access"
14#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension"
15
16#pragma mark - Objective C Class declarations
17// Forward declarations of Objective C classes that we can use as
18// static values in struct initializers.
19// We don't use [Foo class] because it is not a static value.
20GPBObjCClassDeclaration(GPBListValue);
21GPBObjCClassDeclaration(GPBStruct);
22GPBObjCClassDeclaration(GPBValue);
23
24#pragma mark - GPBStructRoot
25
26@implementation GPBStructRoot
27
28// No extensions in the file and no imports, so no need to generate
29// +extensionRegistry.
30
31@end
32
33#pragma mark - GPBStructRoot_FileDescriptor
34
35static GPBFileDescriptor *GPBStructRoot_FileDescriptor(void) {
36  // This is called by +initialize so there is no need to worry
37  // about thread safety of the singleton.
38  static GPBFileDescriptor *descriptor = NULL;
39  if (!descriptor) {
40    GPB_DEBUG_CHECK_RUNTIME_VERSIONS();
41    descriptor = [[GPBFileDescriptor alloc] initWithPackage:@"google.protobuf"
42                                                 objcPrefix:@"GPB"
43                                                     syntax:GPBFileSyntaxProto3];
44  }
45  return descriptor;
46}
47
48#pragma mark - Enum GPBNullValue
49
50GPBEnumDescriptor *GPBNullValue_EnumDescriptor(void) {
51  static _Atomic(GPBEnumDescriptor*) descriptor = nil;
52  if (!descriptor) {
53    static const char *valueNames =
54        "NullValue\000";
55    static const int32_t values[] = {
56        GPBNullValue_NullValue,
57    };
58    GPBEnumDescriptor *worker =
59        [GPBEnumDescriptor allocDescriptorForName:GPBNSStringifySymbol(GPBNullValue)
60                                       valueNames:valueNames
61                                           values:values
62                                            count:(uint32_t)(sizeof(values) / sizeof(int32_t))
63                                     enumVerifier:GPBNullValue_IsValidValue];
64    GPBEnumDescriptor *expected = nil;
65    if (!atomic_compare_exchange_strong(&descriptor, &expected, worker)) {
66      [worker release];
67    }
68  }
69  return descriptor;
70}
71
72BOOL GPBNullValue_IsValidValue(int32_t value__) {
73  switch (value__) {
74    case GPBNullValue_NullValue:
75      return YES;
76    default:
77      return NO;
78  }
79}
80
81#pragma mark - GPBStruct
82
83@implementation GPBStruct
84
85@dynamic fields, fields_Count;
86
87typedef struct GPBStruct__storage_ {
88  uint32_t _has_storage_[1];
89  NSMutableDictionary *fields;
90} GPBStruct__storage_;
91
92// This method is threadsafe because it is initially called
93// in +initialize for each subclass.
94+ (GPBDescriptor *)descriptor {
95  static GPBDescriptor *descriptor = nil;
96  if (!descriptor) {
97    static GPBMessageFieldDescription fields[] = {
98      {
99        .name = "fields",
100        .dataTypeSpecific.clazz = GPBObjCClass(GPBValue),
101        .number = GPBStruct_FieldNumber_Fields,
102        .hasIndex = GPBNoHasBit,
103        .offset = (uint32_t)offsetof(GPBStruct__storage_, fields),
104        .flags = GPBFieldMapKeyString,
105        .dataType = GPBDataTypeMessage,
106      },
107    };
108    GPBDescriptor *localDescriptor =
109        [GPBDescriptor allocDescriptorForClass:[GPBStruct class]
110                                     rootClass:[GPBStructRoot class]
111                                          file:GPBStructRoot_FileDescriptor()
112                                        fields:fields
113                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
114                                   storageSize:sizeof(GPBStruct__storage_)
115                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)];
116    #if defined(DEBUG) && DEBUG
117      NSAssert(descriptor == nil, @"Startup recursed!");
118    #endif  // DEBUG
119    descriptor = localDescriptor;
120  }
121  return descriptor;
122}
123
124@end
125
126#pragma mark - GPBValue
127
128@implementation GPBValue
129
130@dynamic kindOneOfCase;
131@dynamic nullValue;
132@dynamic numberValue;
133@dynamic stringValue;
134@dynamic boolValue;
135@dynamic structValue;
136@dynamic listValue;
137
138typedef struct GPBValue__storage_ {
139  uint32_t _has_storage_[2];
140  GPBNullValue nullValue;
141  NSString *stringValue;
142  GPBStruct *structValue;
143  GPBListValue *listValue;
144  double numberValue;
145} GPBValue__storage_;
146
147// This method is threadsafe because it is initially called
148// in +initialize for each subclass.
149+ (GPBDescriptor *)descriptor {
150  static GPBDescriptor *descriptor = nil;
151  if (!descriptor) {
152    static GPBMessageFieldDescription fields[] = {
153      {
154        .name = "nullValue",
155        .dataTypeSpecific.enumDescFunc = GPBNullValue_EnumDescriptor,
156        .number = GPBValue_FieldNumber_NullValue,
157        .hasIndex = -1,
158        .offset = (uint32_t)offsetof(GPBValue__storage_, nullValue),
159        .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldHasEnumDescriptor),
160        .dataType = GPBDataTypeEnum,
161      },
162      {
163        .name = "numberValue",
164        .dataTypeSpecific.clazz = Nil,
165        .number = GPBValue_FieldNumber_NumberValue,
166        .hasIndex = -1,
167        .offset = (uint32_t)offsetof(GPBValue__storage_, numberValue),
168        .flags = GPBFieldOptional,
169        .dataType = GPBDataTypeDouble,
170      },
171      {
172        .name = "stringValue",
173        .dataTypeSpecific.clazz = Nil,
174        .number = GPBValue_FieldNumber_StringValue,
175        .hasIndex = -1,
176        .offset = (uint32_t)offsetof(GPBValue__storage_, stringValue),
177        .flags = GPBFieldOptional,
178        .dataType = GPBDataTypeString,
179      },
180      {
181        .name = "boolValue",
182        .dataTypeSpecific.clazz = Nil,
183        .number = GPBValue_FieldNumber_BoolValue,
184        .hasIndex = -1,
185        .offset = 0,  // Stored in _has_storage_ to save space.
186        .flags = GPBFieldOptional,
187        .dataType = GPBDataTypeBool,
188      },
189      {
190        .name = "structValue",
191        .dataTypeSpecific.clazz = GPBObjCClass(GPBStruct),
192        .number = GPBValue_FieldNumber_StructValue,
193        .hasIndex = -1,
194        .offset = (uint32_t)offsetof(GPBValue__storage_, structValue),
195        .flags = GPBFieldOptional,
196        .dataType = GPBDataTypeMessage,
197      },
198      {
199        .name = "listValue",
200        .dataTypeSpecific.clazz = GPBObjCClass(GPBListValue),
201        .number = GPBValue_FieldNumber_ListValue,
202        .hasIndex = -1,
203        .offset = (uint32_t)offsetof(GPBValue__storage_, listValue),
204        .flags = GPBFieldOptional,
205        .dataType = GPBDataTypeMessage,
206      },
207    };
208    GPBDescriptor *localDescriptor =
209        [GPBDescriptor allocDescriptorForClass:[GPBValue class]
210                                     rootClass:[GPBStructRoot class]
211                                          file:GPBStructRoot_FileDescriptor()
212                                        fields:fields
213                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
214                                   storageSize:sizeof(GPBValue__storage_)
215                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)];
216    static const char *oneofs[] = {
217      "kind",
218    };
219    [localDescriptor setupOneofs:oneofs
220                           count:(uint32_t)(sizeof(oneofs) / sizeof(char*))
221                   firstHasIndex:-1];
222    #if defined(DEBUG) && DEBUG
223      NSAssert(descriptor == nil, @"Startup recursed!");
224    #endif  // DEBUG
225    descriptor = localDescriptor;
226  }
227  return descriptor;
228}
229
230@end
231
232int32_t GPBValue_NullValue_RawValue(GPBValue *message) {
233  GPBDescriptor *descriptor = [GPBValue descriptor];
234  GPBFieldDescriptor *field = [descriptor fieldWithNumber:GPBValue_FieldNumber_NullValue];
235  return GPBGetMessageRawEnumField(message, field);
236}
237
238void SetGPBValue_NullValue_RawValue(GPBValue *message, int32_t value) {
239  GPBDescriptor *descriptor = [GPBValue descriptor];
240  GPBFieldDescriptor *field = [descriptor fieldWithNumber:GPBValue_FieldNumber_NullValue];
241  GPBSetMessageRawEnumField(message, field, value);
242}
243
244void GPBValue_ClearKindOneOfCase(GPBValue *message) {
245  GPBDescriptor *descriptor = [GPBValue descriptor];
246  GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0];
247  GPBClearOneof(message, oneof);
248}
249#pragma mark - GPBListValue
250
251@implementation GPBListValue
252
253@dynamic valuesArray, valuesArray_Count;
254
255typedef struct GPBListValue__storage_ {
256  uint32_t _has_storage_[1];
257  NSMutableArray *valuesArray;
258} GPBListValue__storage_;
259
260// This method is threadsafe because it is initially called
261// in +initialize for each subclass.
262+ (GPBDescriptor *)descriptor {
263  static GPBDescriptor *descriptor = nil;
264  if (!descriptor) {
265    static GPBMessageFieldDescription fields[] = {
266      {
267        .name = "valuesArray",
268        .dataTypeSpecific.clazz = GPBObjCClass(GPBValue),
269        .number = GPBListValue_FieldNumber_ValuesArray,
270        .hasIndex = GPBNoHasBit,
271        .offset = (uint32_t)offsetof(GPBListValue__storage_, valuesArray),
272        .flags = GPBFieldRepeated,
273        .dataType = GPBDataTypeMessage,
274      },
275    };
276    GPBDescriptor *localDescriptor =
277        [GPBDescriptor allocDescriptorForClass:[GPBListValue class]
278                                     rootClass:[GPBStructRoot class]
279                                          file:GPBStructRoot_FileDescriptor()
280                                        fields:fields
281                                    fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription))
282                                   storageSize:sizeof(GPBListValue__storage_)
283                                         flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)];
284    #if defined(DEBUG) && DEBUG
285      NSAssert(descriptor == nil, @"Startup recursed!");
286    #endif  // DEBUG
287    descriptor = localDescriptor;
288  }
289  return descriptor;
290}
291
292@end
293
294
295#pragma clang diagnostic pop
296
297// @@protoc_insertion_point(global_scope)
298