mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			162 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Objective-C
		
	
			
		
		
	
	
			162 lines
		
	
	
		
			4.2 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 "UnknownFieldSet.h"
 | |
| 
 | |
| #import "CodedInputStream.h"
 | |
| #import "CodedOutputStream.h"
 | |
| #import "Field.h"
 | |
| #import "UnknownFieldSet_Builder.h"
 | |
| 
 | |
| @interface PBUnknownFieldSet()
 | |
| @property (retain) NSDictionary* fields;
 | |
| @end
 | |
| 
 | |
| 
 | |
| @implementation PBUnknownFieldSet
 | |
| 
 | |
| static PBUnknownFieldSet* defaultInstance = nil;
 | |
| 
 | |
| + (void) initialize {
 | |
|   if (self == [PBUnknownFieldSet class]) {
 | |
|     defaultInstance = [PBUnknownFieldSet setWithFields:[NSMutableDictionary dictionary]];
 | |
|   }
 | |
| }
 | |
| 
 | |
| 
 | |
| @synthesize fields;
 | |
| 
 | |
| - (void) dealloc {
 | |
|   self.fields = nil;
 | |
| }
 | |
| 
 | |
| 
 | |
| + (PBUnknownFieldSet*) defaultInstance {
 | |
|   return defaultInstance;
 | |
| }
 | |
| 
 | |
| 
 | |
| - (id) initWithFields:(NSMutableDictionary*) fields_ {
 | |
|   if ((self = [super init])) {
 | |
|     self.fields = fields_;
 | |
|   }
 | |
| 
 | |
|   return self;
 | |
| }
 | |
| 
 | |
| 
 | |
| + (PBUnknownFieldSet*) setWithFields:(NSMutableDictionary*) fields {
 | |
|   return [[PBUnknownFieldSet alloc] initWithFields:fields];
 | |
| }
 | |
| 
 | |
| 
 | |
| - (BOOL) hasField:(int32_t) number {
 | |
|   return [fields objectForKey:[NSNumber numberWithInt:number]] != nil;
 | |
| }
 | |
| 
 | |
| 
 | |
| - (PBField*) getField:(int32_t) number {
 | |
|   PBField* result = [fields objectForKey:[NSNumber numberWithInt:number]];
 | |
|   return (result == nil) ? [PBField defaultInstance] : result;
 | |
| }
 | |
| 
 | |
| 
 | |
| - (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
 | |
|   NSArray* sortedKeys = [fields.allKeys sortedArrayUsingSelector:@selector(compare:)];
 | |
|   for (NSNumber* number in sortedKeys) {
 | |
|     PBField* value = [fields objectForKey:number];
 | |
|     [value writeTo:number.intValue output:output];
 | |
|   }
 | |
| }
 | |
| 
 | |
| 
 | |
| - (void) writeToOutputStream:(NSOutputStream*) output {
 | |
|   PBCodedOutputStream* codedOutput = [PBCodedOutputStream streamWithOutputStream:output];
 | |
|   [self writeToCodedOutputStream:codedOutput];
 | |
|   [codedOutput flush];
 | |
| }
 | |
| 
 | |
| 
 | |
| + (PBUnknownFieldSet*) parseFromCodedInputStream:(PBCodedInputStream*) input {
 | |
|   return [[[PBUnknownFieldSet builder] mergeFromCodedInputStream:input] build];
 | |
| }
 | |
| 
 | |
| 
 | |
| + (PBUnknownFieldSet*) parseFromData:(NSData*) data {
 | |
|   return [[[PBUnknownFieldSet builder] mergeFromData:data] build];
 | |
| }
 | |
| 
 | |
| 
 | |
| + (PBUnknownFieldSet*) parseFromInputStream:(NSInputStream*) input {
 | |
|   return [[[PBUnknownFieldSet builder] mergeFromInputStream:input] build];
 | |
| }
 | |
| 
 | |
| 
 | |
| + (PBUnknownFieldSet_Builder*) builder {
 | |
|   return [[PBUnknownFieldSet_Builder alloc] init];
 | |
| }
 | |
| 
 | |
| 
 | |
| + (PBUnknownFieldSet_Builder*) builderWithUnknownFields:(PBUnknownFieldSet*) copyFrom {
 | |
|   return [[PBUnknownFieldSet builder] mergeUnknownFields:copyFrom];
 | |
| }
 | |
| 
 | |
| 
 | |
| /** Get the number of bytes required to encode this set. */
 | |
| - (int32_t) serializedSize {
 | |
|   int32_t result = 0;
 | |
|   for (NSNumber* number in fields) {
 | |
|     result += [[fields objectForKey:number] getSerializedSize:number.intValue];
 | |
|   }
 | |
|   return result;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Serializes the set and writes it to {@code output} using
 | |
|  * {@code MessageSet} wire format.
 | |
|  */
 | |
| - (void) writeAsMessageSetTo:(PBCodedOutputStream*) output {
 | |
|   for (NSNumber* number in fields) {
 | |
|     [[fields objectForKey:number] writeAsMessageSetExtensionTo:number.intValue output:output];
 | |
|   }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Get the number of bytes required to encode this set using
 | |
|  * {@code MessageSet} wire format.
 | |
|  */
 | |
| - (int32_t) serializedSizeAsMessageSet {
 | |
|   int32_t result = 0;
 | |
|   for (NSNumber* number in fields) {
 | |
|     result += [[fields objectForKey:number] getSerializedSizeAsMessageSetExtension:number.intValue];
 | |
|   }
 | |
|   return result;
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Serializes the message to a {@code ByteString} and returns it. This is
 | |
|  * just a trivial wrapper around {@link #writeTo(PBCodedOutputStream)}.
 | |
|  */
 | |
| - (NSData*) data {
 | |
|   NSMutableData* data = [NSMutableData dataWithLength:(NSUInteger)self.serializedSize];
 | |
|   PBCodedOutputStream* output = [PBCodedOutputStream streamWithData:data];
 | |
| 
 | |
|   [self writeToCodedOutputStream:output];
 | |
|   return data;
 | |
| }
 | |
| 
 | |
| @end
 |