blob: 5b96023b16cf2bb3d6c25b5495f931e30a9327e4 [file] [log] [blame]
Brian Silverman9c614bc2016-02-15 20:20:02 -05001// Protocol Buffers - Google's data interchange format
2// Copyright 2008 Google Inc. All rights reserved.
3// https://developers.google.com/protocol-buffers/
4//
5// Redistribution and use in source and binary forms, with or without
6// modification, are permitted provided that the following conditions are
7// met:
8//
9// * Redistributions of source code must retain the above copyright
10// notice, this list of conditions and the following disclaimer.
11// * Redistributions in binary form must reproduce the above
12// copyright notice, this list of conditions and the following disclaimer
13// in the documentation and/or other materials provided with the
14// distribution.
15// * Neither the name of Google Inc. nor the names of its
16// contributors may be used to endorse or promote products derived from
17// this software without specific prior written permission.
18//
19// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
31#import <Foundation/Foundation.h>
32
33@class GPBCodedOutputStream;
34@class GPBUInt32Array;
35@class GPBUInt64Array;
36@class GPBUnknownFieldSet;
37
38NS_ASSUME_NONNULL_BEGIN
Austin Schuh40c16522018-10-28 20:27:54 -070039/**
40 * Store an unknown field. These are used in conjunction with
41 * GPBUnknownFieldSet.
42 **/
Brian Silverman9c614bc2016-02-15 20:20:02 -050043@interface GPBUnknownField : NSObject<NSCopying>
44
Austin Schuh40c16522018-10-28 20:27:54 -070045/** Initialize a field with the given number. */
46- (instancetype)initWithNumber:(int32_t)number;
47
48/** The field number the data is stored under. */
Brian Silverman9c614bc2016-02-15 20:20:02 -050049@property(nonatomic, readonly, assign) int32_t number;
50
Austin Schuh40c16522018-10-28 20:27:54 -070051/** An array of varint values for this field. */
Brian Silverman9c614bc2016-02-15 20:20:02 -050052@property(nonatomic, readonly, strong) GPBUInt64Array *varintList;
Brian Silverman9c614bc2016-02-15 20:20:02 -050053
Austin Schuh40c16522018-10-28 20:27:54 -070054/** An array of fixed32 values for this field. */
55@property(nonatomic, readonly, strong) GPBUInt32Array *fixed32List;
56
57/** An array of fixed64 values for this field. */
58@property(nonatomic, readonly, strong) GPBUInt64Array *fixed64List;
59
60/** An array of data values for this field. */
61@property(nonatomic, readonly, strong) NSArray<NSData*> *lengthDelimitedList;
62
63/** An array of groups of values for this field. */
64@property(nonatomic, readonly, strong) NSArray<GPBUnknownFieldSet*> *groupList;
65
66/**
67 * Add a value to the varintList.
68 *
69 * @param value The value to add.
70 **/
Brian Silverman9c614bc2016-02-15 20:20:02 -050071- (void)addVarint:(uint64_t)value;
Austin Schuh40c16522018-10-28 20:27:54 -070072/**
73 * Add a value to the fixed32List.
74 *
75 * @param value The value to add.
76 **/
Brian Silverman9c614bc2016-02-15 20:20:02 -050077- (void)addFixed32:(uint32_t)value;
Austin Schuh40c16522018-10-28 20:27:54 -070078/**
79 * Add a value to the fixed64List.
80 *
81 * @param value The value to add.
82 **/
Brian Silverman9c614bc2016-02-15 20:20:02 -050083- (void)addFixed64:(uint64_t)value;
Austin Schuh40c16522018-10-28 20:27:54 -070084/**
85 * Add a value to the lengthDelimitedList.
86 *
87 * @param value The value to add.
88 **/
Brian Silverman9c614bc2016-02-15 20:20:02 -050089- (void)addLengthDelimited:(NSData *)value;
Austin Schuh40c16522018-10-28 20:27:54 -070090/**
91 * Add a value to the groupList.
92 *
93 * @param value The value to add.
94 **/
Brian Silverman9c614bc2016-02-15 20:20:02 -050095- (void)addGroup:(GPBUnknownFieldSet *)value;
96
97@end
98
99NS_ASSUME_NONNULL_END