|  | // 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 <Foundation/Foundation.h> | 
|  |  | 
|  | #import "GPBArray.h" | 
|  | #import "GPBUnknownFields.h" | 
|  |  | 
|  | @class GPBUnknownFields; | 
|  |  | 
|  | NS_ASSUME_NONNULL_BEGIN | 
|  |  | 
|  | typedef NS_ENUM(uint8_t, GPBUnknownFieldType) { | 
|  | GPBUnknownFieldTypeVarint, | 
|  | GPBUnknownFieldTypeFixed32, | 
|  | GPBUnknownFieldTypeFixed64, | 
|  | GPBUnknownFieldTypeLengthDelimited,  // Length prefixed | 
|  | GPBUnknownFieldTypeGroup,            // Tag delimited | 
|  | }; | 
|  |  | 
|  | /** | 
|  | * Store an unknown field. These are used in conjunction with GPBUnknownFields. | 
|  | **/ | 
|  | __attribute__((objc_subclassing_restricted)) | 
|  | @interface GPBUnknownField : NSObject<NSCopying> | 
|  |  | 
|  | /** 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; | 
|  |  | 
|  | @end | 
|  |  | 
|  | NS_ASSUME_NONNULL_END |