session-ios/Libraries/ProtocolBuffers/Field.m

144 lines
3.6 KiB
Objective-C

// Copyright 2008 Cyrus Najmabadi
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#import "Field.h"
#import "CodedOutputStream.h"
#import "MutableField.h"
@interface PBField ()
@property (retain) NSMutableArray* mutableVarintList;
@property (retain) NSMutableArray* mutableFixed32List;
@property (retain) NSMutableArray* mutableFixed64List;
@property (retain) NSMutableArray* mutableLengthDelimitedList;
@property (retain) NSMutableArray* mutableGroupList;
@end
@implementation PBField
static PBField* defaultInstance = nil;
+ (void) initialize {
if (self == [PBField class]) {
defaultInstance = [[PBField alloc] init];
}
}
@synthesize mutableVarintList;
@synthesize mutableFixed32List;
@synthesize mutableFixed64List;
@synthesize mutableLengthDelimitedList;
@synthesize mutableGroupList;
- (void) dealloc {
self.mutableVarintList = nil;
self.mutableFixed32List = nil;
self.mutableFixed64List = nil;
self.mutableLengthDelimitedList = nil;
self.mutableGroupList = nil;
}
+ (PBField*) defaultInstance {
return defaultInstance;
}
- (NSArray*) varintList {
return mutableVarintList;
}
- (NSArray*) fixed32List {
return mutableFixed32List;
}
- (NSArray*) fixed64List {
return mutableFixed64List;
}
- (NSArray*) lengthDelimitedList {
return mutableLengthDelimitedList;
}
- (NSArray*) groupList {
return mutableGroupList;
}
- (void) writeTo:(int32_t) fieldNumber
output:(PBCodedOutputStream*) output {
for (NSNumber* value in self.varintList) {
[output writeUInt64:fieldNumber value:value.longLongValue];
}
for (NSNumber* value in self.fixed32List) {
[output writeFixed32:fieldNumber value:value.intValue];
}
for (NSNumber* value in self.fixed64List) {
[output writeFixed64:fieldNumber value:value.longLongValue];
}
for (NSData* value in self.lengthDelimitedList) {
[output writeData:fieldNumber value:value];
}
for (PBUnknownFieldSet* value in self.groupList) {
[output writeUnknownGroup:fieldNumber value:value];
}
}
- (int32_t) getSerializedSize:(int32_t) fieldNumber {
int32_t result = 0;
for (NSNumber* value in self.varintList) {
result += computeUInt64Size(fieldNumber, value.longLongValue);
}
for (NSNumber* value in self.fixed32List) {
result += computeFixed32Size(fieldNumber, value.intValue);
}
for (NSNumber* value in self.fixed64List) {
result += computeFixed64Size(fieldNumber, value.longLongValue);
}
for (NSData* value in self.lengthDelimitedList) {
result += computeDataSize(fieldNumber, value);
}
for (PBUnknownFieldSet* value in self.groupList) {
result += computeUnknownGroupSize(fieldNumber, value);
}
return result;
}
- (void) writeAsMessageSetExtensionTo:(int32_t) fieldNumber
output:(PBCodedOutputStream*) output {
for (NSData* value in self.lengthDelimitedList) {
[output writeRawMessageSetExtension:fieldNumber value:value];
}
}
- (int32_t) getSerializedSizeAsMessageSetExtension:(int32_t) fieldNumber {
int32_t result = 0;
for (NSData* value in self.lengthDelimitedList) {
result += computeRawMessageSetExtensionSize(fieldNumber, value);
}
return result;
}
@end