// Protocol Buffers - Google's data interchange format // Copyright 2008 Google Inc. All rights reserved. // // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file or at // https://developers.google.com/open-source/licenses/bsd #import @class GPBCodedOutputStream; @class GPBUInt32Array; @class GPBUInt64Array; @class GPBUnknownFieldSet; @class GPBUnknownFields; NS_ASSUME_NONNULL_BEGIN typedef NS_ENUM(uint8_t, GPBUnknownFieldType) { GPBUnknownFieldTypeVarint, GPBUnknownFieldTypeFixed32, GPBUnknownFieldTypeFixed64, GPBUnknownFieldTypeLengthDelimited, // Length prefixed GPBUnknownFieldTypeGroup, // Tag delimited /** * This type is only used with fields from `GPBUnknownFieldsSet`. Some methods * only work with instances with this type and other apis require the other * type(s). It is a programming error to use the wrong methods. **/ GPBUnknownFieldTypeLegacy, }; /** * Store an unknown field. These are used in conjunction with * GPBUnknownFieldSet. **/ __attribute__((objc_subclassing_restricted)) @interface GPBUnknownField : NSObject /** Initialize a field with the given number. */ - (instancetype)initWithNumber:(int32_t)number; /** The field number the data is stored under. */ @property(nonatomic, readonly, assign) int32_t number; /** The type of the field. */ @property(nonatomic, readonly, assign) GPBUnknownFieldType type; /** * Fetch the varint value. * * It is a programming error to call this when the `type` is not a varint. */ @property(nonatomic, readonly, assign) uint64_t varint; /** * Fetch the fixed32 value. * * It is a programming error to call this when the `type` is not a fixed32. */ @property(nonatomic, readonly, assign) uint32_t fixed32; /** * Fetch the fixed64 value. * * It is a programming error to call this when the `type` is not a fixed64. */ @property(nonatomic, readonly, assign) uint64_t fixed64; /** * Fetch the length delimited (length prefixed) value. * * It is a programming error to call this when the `type` is not a length * delimited. */ @property(nonatomic, readonly, strong, nonnull) NSData *lengthDelimited; /** * Fetch the group (tag delimited) value. * * It is a programming error to call this when the `type` is not a group. */ @property(nonatomic, readonly, strong, nonnull) GPBUnknownFields *group; /** * An array of varint values for this field. * * Only valid for type == GPBUnknownFieldTypeLegacy, it is a programming error * to use with any other type. */ @property(nonatomic, readonly, strong) GPBUInt64Array *varintList; /** * An array of fixed32 values for this field. * * Only valid for type == GPBUnknownFieldTypeLegacy, it is a programming error * to use with any other type. */ @property(nonatomic, readonly, strong) GPBUInt32Array *fixed32List; /** * An array of fixed64 values for this field. * * Only valid for type == GPBUnknownFieldTypeLegacy, it is a programming error * to use with any other type. */ @property(nonatomic, readonly, strong) GPBUInt64Array *fixed64List; /** * An array of data values for this field. * * Only valid for type == GPBUnknownFieldTypeLegacy, it is a programming error * to use with any other type. */ @property(nonatomic, readonly, strong) NSArray *lengthDelimitedList; /** * An array of groups of values for this field. * * Only valid for type == GPBUnknownFieldTypeLegacy, it is a programming error * to use with any other type. */ @property(nonatomic, readonly, strong) NSArray *groupList; /** * Add a value to the varintList. * * Only valid for type == GPBUnknownFieldTypeLegacy, it is a programming error * to use with any other type. * * @param value The value to add. **/ - (void)addVarint:(uint64_t)value; /** * Add a value to the fixed32List. * * Only valid for type == GPBUnknownFieldTypeLegacy, it is a programming error * to use with any other type. * * @param value The value to add. **/ - (void)addFixed32:(uint32_t)value; /** * Add a value to the fixed64List. * * Only valid for type == GPBUnknownFieldTypeLegacy, it is a programming error * to use with any other type. * * @param value The value to add. **/ - (void)addFixed64:(uint64_t)value; /** * Add a value to the lengthDelimitedList. * * Only valid for type == GPBUnknownFieldTypeLegacy, it is a programming error * to use with any other type. * * @param value The value to add. **/ - (void)addLengthDelimited:(NSData *)value; /** * Add a value to the groupList. * * Only valid for type == GPBUnknownFieldTypeLegacy, it is a programming error * to use with any other type. * * @param value The value to add. **/ - (void)addGroup:(GPBUnknownFieldSet *)value; @end NS_ASSUME_NONNULL_END