Using dot syntax for count and length
This commit is contained in:
parent
84eb87ac60
commit
9e36872644
|
@ -77,11 +77,11 @@
|
|||
attrs = @{NSFileProtectionKey: NSFileProtectionComplete};
|
||||
[[NSFileManager defaultManager] setAttributes:attrs ofItemAtPath:logPath error:&error];
|
||||
|
||||
for (NSUInteger i = 0; i < [logsFiles count]; i++) {
|
||||
for (NSUInteger i = 0; i < logsFiles.count; i++) {
|
||||
[pathsToExclude addObject:[logPath stringByAppendingString:logsFiles[i]]];
|
||||
}
|
||||
|
||||
for (NSUInteger i = 0; i < [pathsToExclude count]; i++) {
|
||||
for (NSUInteger i = 0; i < pathsToExclude.count; i++) {
|
||||
[[NSURL fileURLWithPath:pathsToExclude[i]] setResourceValue: @YES
|
||||
forKey: NSURLIsExcludedFromBackupKey error: &error];
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
NSData* data = [self getIdForNotification:notification];
|
||||
[_witnessedNotifications insertObject:data atIndex:0];
|
||||
|
||||
while(MAX_NOTIFICATIONS_TO_TRACK < [_witnessedNotifications count]){
|
||||
while(MAX_NOTIFICATIONS_TO_TRACK < _witnessedNotifications.count){
|
||||
[_witnessedNotifications removeLastObject];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
untilCancelled:(id<CancelToken>)untilCancelledToken {
|
||||
|
||||
require(cancellableOperationStarters != nil);
|
||||
if ([cancellableOperationStarters count] == 0) return [Future failed:@[]];
|
||||
if (cancellableOperationStarters.count == 0) return [Future failed:@[]];
|
||||
|
||||
NSArray* racingOperations = [AsyncUtilHelperRacingOperation racingOperationsFromCancellableOperationStarters:cancellableOperationStarters
|
||||
untilCancelled:untilCancelledToken];
|
||||
|
|
|
@ -39,12 +39,12 @@
|
|||
|
||||
FutureSource* futureWinner = [FutureSource new];
|
||||
|
||||
NSUInteger totalCount = [racingOperations count];
|
||||
NSUInteger totalCount = racingOperations.count;
|
||||
NSMutableArray* failures = [NSMutableArray array];
|
||||
void(^failIfAllFailed)(id) = ^(id failure) {
|
||||
@synchronized(failures) {
|
||||
[failures addObject:failure];
|
||||
if ([failures count] < totalCount) return;
|
||||
if (failures.count < totalCount) return;
|
||||
}
|
||||
|
||||
[futureWinner trySetFailure:failures];
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
}
|
||||
|
||||
-(EncodedAudioPacket*) tryGetFinishedAudioPacket{
|
||||
if ([framesToSend count] < AUDIO_FRAMES_PER_PACKET) return nil;
|
||||
if (framesToSend.count < AUDIO_FRAMES_PER_PACKET) return nil;
|
||||
|
||||
uint16_t sequenceNumber = nextSequenceNumber++;
|
||||
NSData* payload = [framesToSend concatDatas];
|
||||
|
@ -55,9 +55,9 @@
|
|||
require(packet != nil);
|
||||
|
||||
NSData* audioData = [packet audioData];
|
||||
requireState([audioData length] % AUDIO_FRAMES_PER_PACKET == 0);
|
||||
requireState(audioData.length % AUDIO_FRAMES_PER_PACKET == 0);
|
||||
|
||||
NSUInteger frameSize = [audioData length] / AUDIO_FRAMES_PER_PACKET;
|
||||
NSUInteger frameSize = audioData.length / AUDIO_FRAMES_PER_PACKET;
|
||||
for (NSUInteger i = 0; i < AUDIO_FRAMES_PER_PACKET; i++) {
|
||||
NSData* frameData = [audioData subdataWithRange:NSMakeRange(frameSize*i, frameSize)];
|
||||
[audioFrameToReceiveQueue enqueue:[EncodedAudioFrame encodedAudioFrameWithData:frameData]];
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
NSData* decodedAudioData = [audioProcessor tryDecodeOrInferFrame];
|
||||
if (decodedAudioData == nil) break;
|
||||
[audioInterface populatePlaybackQueueWithData:decodedAudioData];
|
||||
bytesInPlaybackBuffer += [decodedAudioData length];
|
||||
bytesInPlaybackBuffer += decodedAudioData.length;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ static bool doesActiveInstanceExist;
|
|||
newRemoteIoInterface->playbackBufferSizeLogger = [[Environment logging] getValueLoggerForValue:@"|playback queue|" from:newRemoteIoInterface];
|
||||
newRemoteIoInterface->recordingQueueSizeLogger = [[Environment logging] getValueLoggerForValue:@"|recording queue|" from:newRemoteIoInterface];
|
||||
|
||||
while ([newRemoteIoInterface->unusedBuffers count] < INITIAL_NUMBER_OF_BUFFERS) {
|
||||
while (newRemoteIoInterface->unusedBuffers.count < INITIAL_NUMBER_OF_BUFFERS) {
|
||||
[newRemoteIoInterface addUnusedBuffer];
|
||||
}
|
||||
[newRemoteIoInterface setupAudio];
|
||||
|
@ -236,7 +236,7 @@ static OSStatus recordingCallback(void *inRefCon,
|
|||
|
||||
-(void)populatePlaybackQueueWithData:(NSData*)data {
|
||||
require(data != nil);
|
||||
if ([data length] == 0) return;
|
||||
if (data.length == 0) return;
|
||||
@synchronized(self){
|
||||
[playbackQueue enqueueData:data];
|
||||
}
|
||||
|
@ -258,7 +258,7 @@ static OSStatus playbackCallback(void *inRefCon,
|
|||
[instance->starveLogger markOccurrence:@(starveAmount)];
|
||||
} else {
|
||||
NSData* audioToCopyVolatile = [[instance playbackQueue] dequeuePotentialyVolatileDataWithLength:requestedByteCount];
|
||||
memcpy(ioData->mBuffers[0].mData, [audioToCopyVolatile bytes], [audioToCopyVolatile length]);
|
||||
memcpy(ioData->mBuffers[0].mData, [audioToCopyVolatile bytes], audioToCopyVolatile.length);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -37,12 +37,12 @@
|
|||
|
||||
-(void) determineDecodedLength {
|
||||
NSData* encoded = [self encode:[NSMutableData dataWithLength:[self decodedFrameSizeInBytes]]];
|
||||
cachedEncodedLength = [encoded length];
|
||||
cachedEncodedLength = encoded.length;
|
||||
}
|
||||
|
||||
-(NSData*)encode:(NSData*)rawData {
|
||||
require(rawData != nil);
|
||||
require([rawData length] == FRAME_SIZE_IN_SAMPLES*DECODED_SAMPLE_SIZE_IN_BYTES);
|
||||
require(rawData.length == FRAME_SIZE_IN_SAMPLES*DECODED_SAMPLE_SIZE_IN_BYTES);
|
||||
speex_bits_reset(&encodingBits);
|
||||
speex_encode_int(encodingState, (spx_int16_t*)[rawData bytes], &encodingBits);
|
||||
|
||||
|
@ -55,7 +55,7 @@
|
|||
}
|
||||
|
||||
-(NSData*)decode:(NSData*)potentiallyMissingEncodedData {
|
||||
NSUInteger encodedDataLength = [potentiallyMissingEncodedData length];
|
||||
NSUInteger encodedDataLength = potentiallyMissingEncodedData.length;
|
||||
if (potentiallyMissingEncodedData == nil) {
|
||||
encodedDataLength = [self decodedFrameSizeInBytes]; // size for infering audio data
|
||||
}
|
||||
|
@ -70,7 +70,7 @@
|
|||
|
||||
-(NSUInteger) encodedDataLengthFromData:(NSData*)potentiallyMissingEncodedData{
|
||||
if (potentiallyMissingEncodedData != nil) {
|
||||
return [potentiallyMissingEncodedData length];
|
||||
return potentiallyMissingEncodedData.length;
|
||||
}
|
||||
return [self decodedFrameSizeInBytes];
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
checkOperationDescribe(time_scale_rate(&timeScaleState, (float)stretchFactor) == 0, @"Changing time scaling");
|
||||
|
||||
int inputSampleCount = (unsigned int)[audioData length]/sizeof(int16_t);
|
||||
int inputSampleCount = (unsigned int)audioData.length/sizeof(int16_t);
|
||||
int maxOutputSampleCount = [self getSafeMaxOutputSampleCountFromInputSampleCount:inputSampleCount];
|
||||
|
||||
int16_t* input = (int16_t*)[audioData bytes];
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
}
|
||||
|
||||
-(NSUInteger) count {
|
||||
return [resultPriorityQueue count];
|
||||
return resultPriorityQueue.count;
|
||||
}
|
||||
|
||||
-(bool) tryEnqueue:(EncodedAudioPacket*)audioPacket {
|
||||
|
@ -96,7 +96,7 @@
|
|||
}];
|
||||
}
|
||||
-(void) discardExcess {
|
||||
if ([resultPriorityQueue count] <= MAXIMUM_JITTER_QUEUE_SIZE_BEFORE_DISCARDING) return;
|
||||
if (resultPriorityQueue.count <= MAXIMUM_JITTER_QUEUE_SIZE_BEFORE_DISCARDING) return;
|
||||
|
||||
EncodedAudioPacket* discarded = [resultPriorityQueue dequeue];
|
||||
uint16_t discardedSequenceNumber = [discarded sequenceNumber];
|
||||
|
@ -127,7 +127,7 @@
|
|||
[idsInJitterQueue removeObject:@([result sequenceNumber])];
|
||||
|
||||
for (id<JitterQueueNotificationReceiver> e in watchers) {
|
||||
[e notifyDequeue:[result sequenceNumber] withRemainingEnqueuedItemCount:[idsInJitterQueue count]];
|
||||
[e notifyDequeue:[result sequenceNumber] withRemainingEnqueuedItemCount:idsInJitterQueue.count];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
@ -141,7 +141,7 @@
|
|||
return isOutOfSync;
|
||||
}
|
||||
-(bool) checkReactIfEmptyForDequeue {
|
||||
bool isEmpty = [resultPriorityQueue count] == 0;
|
||||
bool isEmpty = resultPriorityQueue.count == 0;
|
||||
if (isEmpty) {
|
||||
readHeadSpan += 1;
|
||||
for (id<JitterQueueNotificationReceiver> watcher in watchers) {
|
||||
|
|
|
@ -190,7 +190,7 @@ void onAddressBookChanged(ABAddressBookRef notifyAddressBook, CFDictionaryRef in
|
|||
|
||||
for (CFIndex i = 0; i < ABMultiValueGetCount(phoneNumbers); i++) {
|
||||
NSString* phoneNumber = (__bridge_transfer NSString*) ABMultiValueCopyValueAtIndex(phoneNumbers, i);
|
||||
if ([phoneNumber length]>0) {
|
||||
if (phoneNumber.length>0) {
|
||||
result = YES;
|
||||
break;
|
||||
}
|
||||
|
@ -208,7 +208,7 @@ void onAddressBookChanged(ABAddressBookRef notifyAddressBook, CFDictionaryRef in
|
|||
|
||||
-(NSArray*)latestContactsWithSearchString:(NSString *)searchString {
|
||||
return [[latestContactsById allValues] filter:^int(Contact *contact) {
|
||||
return [searchString length] == 0 || [ContactsManager name:[contact fullName] matchesQuery:searchString];
|
||||
return searchString.length == 0 || [ContactsManager name:[contact fullName] matchesQuery:searchString];
|
||||
}];
|
||||
}
|
||||
|
||||
|
@ -225,7 +225,7 @@ void onAddressBookChanged(ABAddressBookRef notifyAddressBook, CFDictionaryRef in
|
|||
NSString *companyName = (__bridge_transfer NSString*)ABRecordCopyValue(record, kABPersonOrganizationProperty);
|
||||
if (companyName) {
|
||||
firstName = companyName;
|
||||
} else if ([phoneNumbers count]) {
|
||||
} else if (phoneNumbers.count) {
|
||||
firstName = [phoneNumbers firstObject];
|
||||
}
|
||||
}
|
||||
|
@ -288,7 +288,7 @@ void onAddressBookChanged(ABAddressBookRef notifyAddressBook, CFDictionaryRef in
|
|||
|
||||
NSMutableArray *numbers = [NSMutableArray array];
|
||||
|
||||
for (NSUInteger i = 0; i < [phoneNumbers count]; i++) {
|
||||
for (NSUInteger i = 0; i < phoneNumbers.count; i++) {
|
||||
NSString *phoneNumber = phoneNumbers[i];
|
||||
[numbers addObject:phoneNumber];
|
||||
}
|
||||
|
@ -323,7 +323,7 @@ void onAddressBookChanged(ABAddressBookRef notifyAddressBook, CFDictionaryRef in
|
|||
require(contacts != nil);
|
||||
|
||||
NSArray *matchingContacts = [contacts filter:^int(Contact *contact) {
|
||||
return [optionalSearchString length] == 0 || [self name:[contact fullName] matchesQuery:optionalSearchString];
|
||||
return optionalSearchString.length == 0 || [self name:[contact fullName] matchesQuery:optionalSearchString];
|
||||
}];
|
||||
|
||||
return [matchingContacts groupBy:^id(Contact *contact) {
|
||||
|
@ -373,7 +373,7 @@ void onAddressBookChanged(ABAddressBookRef notifyAddressBook, CFDictionaryRef in
|
|||
NSArray *nameStrings = [nameString componentsSeparatedByCharactersInSet:whitespaceSet];
|
||||
|
||||
return [queryStrings all:^int(NSString* query) {
|
||||
if ([query length] == 0) return YES;
|
||||
if (query.length == 0) return YES;
|
||||
return [nameStrings any:^int(NSString* nameWord) {
|
||||
NSStringCompareOptions searchOpts = NSCaseInsensitiveSearch | NSAnchoredSearch;
|
||||
return [nameWord rangeOfString:query options:searchOpts].location != NSNotFound;
|
||||
|
@ -387,7 +387,7 @@ void onAddressBookChanged(ABAddressBookRef notifyAddressBook, CFDictionaryRef in
|
|||
[[NSCharacterSet decimalDigitCharacterSet] invertedSet]]
|
||||
componentsJoinedByString:@""];
|
||||
|
||||
if ([queryString length] == 0) return YES;
|
||||
if (queryString.length == 0) return YES;
|
||||
NSStringCompareOptions searchOpts = NSCaseInsensitiveSearch | NSAnchoredSearch;
|
||||
return [searchString rangeOfString:queryString options:searchOpts].location != NSNotFound;
|
||||
}
|
||||
|
@ -451,12 +451,12 @@ void onAddressBookChanged(ABAddressBookRef notifyAddressBook, CFDictionaryRef in
|
|||
NSArray *currentUsers = [self getWhisperUsersFromContactsArray:[latestContactsById allValues]];
|
||||
NSArray *newUsers = [self getNewItemsFrom:currentUsers comparedTo:[latestWhisperUsersById allValues]];
|
||||
|
||||
if([newUsers count] > 0){
|
||||
if(newUsers.count > 0){
|
||||
[observableWhisperUsersController updateValue:currentUsers];
|
||||
}
|
||||
|
||||
NSArray *unacknowledgedUserIds = [self getUnacknowledgedUsersFrom:currentUsers];
|
||||
if([unacknowledgedUserIds count] > 0){
|
||||
if(unacknowledgedUserIds.count > 0){
|
||||
NSArray *unacknowledgedUsers = [self contactsForContactIds: unacknowledgedUserIds];
|
||||
if(!newUserNotificationsEnabled){
|
||||
[self addContactsToKnownWhisperUsers:unacknowledgedUsers];
|
||||
|
@ -465,7 +465,7 @@ void onAddressBookChanged(ABAddressBookRef notifyAddressBook, CFDictionaryRef in
|
|||
[[NSNotificationCenter defaultCenter] postNotificationName:NOTIFICATION_NEW_USERS_AVAILABLE object:self userInfo:payload];
|
||||
}
|
||||
}
|
||||
return [newUsers count];
|
||||
return newUsers.count;
|
||||
}
|
||||
|
||||
-(NSArray*) getUnacknowledgedUsersFrom:(NSArray*) users {
|
||||
|
|
|
@ -65,8 +65,8 @@
|
|||
}
|
||||
-(bool)isEqualToData_TimingSafe:(NSData*)other {
|
||||
if (other == nil) return false;
|
||||
NSUInteger n = [self length];
|
||||
if ([other length] != n) return false;
|
||||
NSUInteger n = self.length;
|
||||
if (other.length != n) return false;
|
||||
bool equal = true;
|
||||
for (NSUInteger i = 0; i < n; i++)
|
||||
equal &= [self uint8At:i] == [other uint8At:i];
|
||||
|
|
|
@ -33,8 +33,8 @@
|
|||
NSUInteger digestLength = [NumberUtil assertConvertIntToNSUInteger:EVP_MD_size(md)];
|
||||
|
||||
unsigned char* digest = HMAC(md,
|
||||
[key bytes], [NumberUtil assertConvertNSUIntegerToInt:[key length]],
|
||||
[data bytes], [data length],
|
||||
[key bytes], [NumberUtil assertConvertNSUIntegerToInt:key.length],
|
||||
[data bytes], data.length,
|
||||
NULL, NULL);
|
||||
|
||||
return [NSData dataWithBytes:digest length:digestLength];
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
+(NSData*) encryptMessage:(NSData *)message usingCipher:(const EVP_CIPHER*) cipher andKey:(NSData *)key andIv:(NSData *)iv {
|
||||
[self assertKey:key andIv:iv lengthsAgainstCipher:cipher];
|
||||
|
||||
int messageLength = [NumberUtil assertConvertNSUIntegerToInt:[message length]];
|
||||
int messageLength = [NumberUtil assertConvertNSUIntegerToInt:message.length];
|
||||
int cipherBlockSize = EVP_CIPHER_block_size(cipher);
|
||||
int cipherTextLength = 0;
|
||||
int paddingLength = 0;
|
||||
|
@ -40,15 +40,15 @@
|
|||
int cipherKeyLength = EVP_CIPHER_key_length(cipher);
|
||||
int cipherIvLength = EVP_CIPHER_iv_length(cipher);
|
||||
|
||||
require([key length] == [NumberUtil assertConvertIntToNSUInteger:cipherKeyLength]);
|
||||
require([iv length] == [NumberUtil assertConvertIntToNSUInteger:cipherIvLength]);
|
||||
require(key.length == [NumberUtil assertConvertIntToNSUInteger:cipherKeyLength]);
|
||||
require(iv.length == [NumberUtil assertConvertIntToNSUInteger:cipherIvLength]);
|
||||
}
|
||||
|
||||
+(NSData*) decryptMessage:(NSData *)cipherText usingCipher:(const EVP_CIPHER*) cipher andKey:(NSData *)key andIv:(NSData *)iv {
|
||||
|
||||
[self assertKey:key andIv:iv lengthsAgainstCipher:cipher];
|
||||
|
||||
int cipherTextLength = [NumberUtil assertConvertNSUIntegerToInt:[cipherText length]];
|
||||
int cipherTextLength = [NumberUtil assertConvertNSUIntegerToInt:cipherText.length];
|
||||
int cipherBlockSize = EVP_CIPHER_block_size(cipher);
|
||||
int plainTextLength = 0;
|
||||
int paddingLength = 0;
|
||||
|
|
|
@ -50,7 +50,7 @@ MacrosSingletonImplemention
|
|||
NSString *logPath = [NSHomeDirectory() stringByAppendingString:@"/Library/Caches/Logs/"];
|
||||
NSArray *logsFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:logPath error:&error];
|
||||
|
||||
for (NSUInteger i = 0; i < [logsFiles count]; i++) {
|
||||
for (NSUInteger i = 0; i < logsFiles.count; i++) {
|
||||
[[NSFileManager defaultManager] removeItemAtPath:[logPath stringByAppendingString:logsFiles[i]] error:&error];
|
||||
}
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
NSUInteger hashCount = [[self tryGetValueForKey:PHONE_DIRECTORY_BLOOM_FILTER_HASH_COUNT_KEY] unsignedIntegerValue];
|
||||
NSData* data = [self tryGetValueForKey:PHONE_DIRECTORY_BLOOM_FILTER_DATA_KEY];
|
||||
NSDate* expiration = [self tryGetValueForKey:PHONE_DIRECTORY_EXPIRATION];
|
||||
if (hashCount == 0 || [data length] == 0 || expiration == nil) return nil;
|
||||
if (hashCount == 0 || data.length == 0 || expiration == nil) return nil;
|
||||
BloomFilter* bloomFilter = [BloomFilter bloomFilterWithHashCount:hashCount andData:data];
|
||||
return [PhoneNumberDirectoryFilter phoneNumberDirectoryFilterWithBloomFilter:bloomFilter
|
||||
andExpirationDate:expiration];
|
||||
|
|
|
@ -67,8 +67,8 @@
|
|||
|
||||
+(Zid *)zid{
|
||||
NSData *data = [self dataForKey:ZID_KEY];
|
||||
if ([data length] != ZID_LENGTH) {
|
||||
DDLogError(@"ZID length is incorrect. Is %lu, should be %d", (unsigned long)[data length], ZID_LENGTH);
|
||||
if (data.length != ZID_LENGTH) {
|
||||
DDLogError(@"ZID length is incorrect. Is %lu, should be %d", (unsigned long)data.length, ZID_LENGTH);
|
||||
}
|
||||
Zid *zid = [Zid zidWithData:data];
|
||||
return zid;
|
||||
|
@ -90,8 +90,8 @@
|
|||
+(NSString *)serverAuthPassword{
|
||||
NSString *password = [self stringForKey:SAVED_PASSWORD_KEY];
|
||||
NSData *data = [password decodedAsBase64Data];
|
||||
if ([data length] != SAVED_PASSWORD_LENGTH) {
|
||||
DDLogError(@"The server password has incorrect length. Is %lu but should be %d", (unsigned long)[data length], SAVED_PASSWORD_LENGTH);
|
||||
if (data.length != SAVED_PASSWORD_LENGTH) {
|
||||
DDLogError(@"The server password has incorrect length. Is %lu but should be %d", (unsigned long)data.length, SAVED_PASSWORD_LENGTH);
|
||||
}
|
||||
return password;
|
||||
}
|
||||
|
@ -109,8 +109,8 @@
|
|||
+(NSData*)dataForKey:(NSString*)key andVerifyLength:(uint)length{
|
||||
NSData *data = [self dataForKey:key];
|
||||
|
||||
if ([data length] != length) {
|
||||
DDLogError(@"Length of data not matching. Got %lu, expected %u", (unsigned long)[data length], length);
|
||||
if (data.length != length) {
|
||||
DDLogError(@"Length of data not matching. Got %lu, expected %u", (unsigned long)data.length, length);
|
||||
}
|
||||
|
||||
return data;
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
NSArray *entries = [dict allKeys];
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
|
||||
for (NSUInteger i = 0; i < [entries count]; i++) {
|
||||
for (NSUInteger i = 0; i < entries.count; i++) {
|
||||
NSString *key = entries[i];
|
||||
[defaults setObject:dict[key] forKey:key];
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
|
||||
+(IpEndPoint*) ipEndPointFromSockaddrData:(NSData*)sockaddrData {
|
||||
require(sockaddrData != nil);
|
||||
require([sockaddrData length] >= sizeof(struct sockaddr));
|
||||
require(sockaddrData.length >= sizeof(struct sockaddr));
|
||||
|
||||
struct sockaddr s;
|
||||
memcpy(&s, [sockaddrData bytes], sizeof(struct sockaddr));
|
||||
|
@ -44,7 +44,7 @@
|
|||
}
|
||||
+(IpEndPoint*) ipv4EndPointFromSockaddrData:(NSData*)sockaddrData {
|
||||
require(sockaddrData != nil);
|
||||
require([sockaddrData length] >= sizeof(struct sockaddr_in));
|
||||
require(sockaddrData.length >= sizeof(struct sockaddr_in));
|
||||
|
||||
struct sockaddr_in s;
|
||||
memcpy(&s, [sockaddrData bytes], sizeof(struct sockaddr_in));
|
||||
|
@ -53,7 +53,7 @@
|
|||
}
|
||||
+(IpEndPoint*) ipv6EndPointFromSockaddrData:(NSData*)sockaddrData {
|
||||
require(sockaddrData != nil);
|
||||
require([sockaddrData length] >= sizeof(struct sockaddr_in6));
|
||||
require(sockaddrData.length >= sizeof(struct sockaddr_in6));
|
||||
|
||||
struct sockaddr_in6 s;
|
||||
memcpy(&s, [sockaddrData bytes], sizeof(struct sockaddr_in6));
|
||||
|
|
|
@ -120,7 +120,7 @@
|
|||
HttpResponse* response = requestHandler([requestOrResponse request]);
|
||||
requireState(response != nil);
|
||||
[httpChannel send:[HttpRequestOrResponse httpRequestOrResponse:response]];
|
||||
} else if ([eventualResponseQueue count] == 0) {
|
||||
} else if (eventualResponseQueue.count == 0) {
|
||||
errorHandler(@"Response when no requests queued", [requestOrResponse response], false);
|
||||
} else {
|
||||
FutureSource* ev = [eventualResponseQueue dequeue];
|
||||
|
@ -137,17 +137,17 @@
|
|||
}
|
||||
-(void) clearQueue:(id)error {
|
||||
@synchronized (self) {
|
||||
while ([eventualResponseQueue count] > 0) {
|
||||
while (eventualResponseQueue.count > 0) {
|
||||
[[eventualResponseQueue dequeue] trySetFailure:error];
|
||||
}
|
||||
}
|
||||
}
|
||||
-(void) terminateWhenDoneCurrentWork {
|
||||
@synchronized (self) {
|
||||
if ([eventualResponseQueue count] == 0) {
|
||||
if (eventualResponseQueue.count == 0) {
|
||||
[self terminate];
|
||||
} else {
|
||||
FutureSource* v = [eventualResponseQueue peekAt:[eventualResponseQueue count]-1];
|
||||
FutureSource* v = [eventualResponseQueue peekAt:eventualResponseQueue.count-1];
|
||||
[v finallyDo:^(id _) {
|
||||
[self terminate];
|
||||
}];
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
require(location != nil);
|
||||
require(headers != nil);
|
||||
require((optionalBody == nil) == (headers[@"Content-Length"] == nil));
|
||||
require(optionalBody == nil || [[@([optionalBody length]) description] isEqualToString:headers[@"Content-Length"]]);
|
||||
require(optionalBody == nil || [[@(optionalBody.length) description] isEqualToString:headers[@"Content-Length"]]);
|
||||
|
||||
HttpRequest* s = [HttpRequest new];
|
||||
s->_method = method;
|
||||
|
@ -36,7 +36,7 @@
|
|||
|
||||
NSMutableDictionary* headers = [NSMutableDictionary dictionary];
|
||||
if (optionalBody != nil) {
|
||||
headers[@"Content-Length"] = [@([optionalBody length]) stringValue];
|
||||
headers[@"Content-Length"] = [@(optionalBody.length) stringValue];
|
||||
}
|
||||
|
||||
HttpRequest* s = [HttpRequest new];
|
||||
|
@ -58,7 +58,7 @@
|
|||
|
||||
NSMutableDictionary* headers = [NSMutableDictionary dictionary];
|
||||
if (optionalBody != nil) {
|
||||
headers[@"Content-Length"] = [@([optionalBody length]) stringValue];
|
||||
headers[@"Content-Length"] = [@(optionalBody.length) stringValue];
|
||||
}
|
||||
headers[@"Authorization"] = [HttpRequest computeBasicAuthorizationTokenForLocalNumber:localNumber andPassword:password];
|
||||
|
||||
|
@ -81,7 +81,7 @@
|
|||
|
||||
NSMutableDictionary* headers = [NSMutableDictionary dictionary];
|
||||
if (optionalBody != nil) {
|
||||
headers[@"Content-Length"] = [@([optionalBody length]) stringValue];
|
||||
headers[@"Content-Length"] = [@(optionalBody.length) stringValue];
|
||||
}
|
||||
headers[@"Authorization"] = [HttpRequest computeOtpAuthorizationTokenForLocalNumber:localNumber andCounterValue:counter andPassword:password];
|
||||
|
||||
|
@ -97,7 +97,7 @@
|
|||
require(data != nil);
|
||||
NSUInteger requestSize;
|
||||
HttpRequestOrResponse* http = [HttpRequestOrResponse tryExtractFromPartialData:data usedLengthOut:&requestSize];
|
||||
checkOperation([http isRequest] && requestSize == [data length]);
|
||||
checkOperation([http isRequest] && requestSize == data.length);
|
||||
return [http request];
|
||||
}
|
||||
|
||||
|
@ -156,7 +156,7 @@
|
|||
self.method,
|
||||
self.location,
|
||||
self.optionalBody == nil ? @""
|
||||
: [self.optionalBody length] == 0 ? @" [empty body]"
|
||||
: self.optionalBody.length == 0 ? @" [empty body]"
|
||||
: @" [...body...]"];
|
||||
}
|
||||
|
||||
|
|
|
@ -45,23 +45,23 @@
|
|||
headerLength += 4; // account for \r\n\r\n
|
||||
|
||||
NSArray* headerLines = [fullHeader componentsSeparatedByString:@"\r\n"];
|
||||
checkOperation([headerLines count] >= 1);
|
||||
checkOperation(headerLines.count >= 1);
|
||||
|
||||
// GET /index.html HTTP/1.1
|
||||
// HTTP/1.1 200 OK
|
||||
NSString* requestOrResponseLine = headerLines[0];
|
||||
NSArray* requestOrResponseLineParts = [requestOrResponseLine componentsSeparatedByString:@" "];
|
||||
checkOperation([requestOrResponseLineParts count] >= 3);
|
||||
checkOperation(requestOrResponseLineParts.count >= 3);
|
||||
bool isResponse = [requestOrResponseLineParts[0] hasPrefix:@"HTTP/"];
|
||||
|
||||
// Host: www.example.com
|
||||
// Content-Length: 5
|
||||
NSMutableDictionary* headers = [NSMutableDictionary dictionary];
|
||||
for (NSUInteger i = 1; i < [headerLines count]; i++) {
|
||||
for (NSUInteger i = 1; i < headerLines.count; i++) {
|
||||
NSString* headerLine = headerLines[i];
|
||||
|
||||
NSArray* headerLineParts = [headerLine componentsSeparatedByString:@":"];
|
||||
checkOperation([headerLineParts count] >= 2);
|
||||
checkOperation(headerLineParts.count >= 2);
|
||||
NSString* headerKey = [headerLineParts[0] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
|
||||
NSString* headerValue = [[headerLine substringFromIndex:[(NSString *)headerLineParts[0] length]+1] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
|
||||
headers[headerKey] = headerValue;
|
||||
|
@ -73,7 +73,7 @@
|
|||
|
||||
bool hasContent = contentLengthParsed != nil;
|
||||
NSUInteger contentLength = [contentLengthParsed unsignedIntegerValue];
|
||||
if (headerLength + contentLength > [data length]) return nil; // need more data
|
||||
if (headerLength + contentLength > data.length) return nil; // need more data
|
||||
NSData* optionalBodyData = hasContent ? [data subdataWithRange:NSMakeRange(headerLength, contentLength)] : nil;
|
||||
|
||||
*usedLengthPtr = headerLength + contentLength;
|
||||
|
@ -82,14 +82,14 @@
|
|||
checkOperation(statusCodeParsed != nil);
|
||||
|
||||
NSUInteger statusCode = [statusCodeParsed unsignedIntegerValue];
|
||||
NSString* statusText = [[requestOrResponseLineParts subarrayWithRange:NSMakeRange(2, [requestOrResponseLineParts count] - 2)] componentsJoinedByString:@" "];
|
||||
NSString* statusText = [[requestOrResponseLineParts subarrayWithRange:NSMakeRange(2, requestOrResponseLineParts.count - 2)] componentsJoinedByString:@" "];
|
||||
HttpResponse* response = [HttpResponse httpResponseFromStatusCode:statusCode
|
||||
andStatusText:statusText
|
||||
andHeaders:headers
|
||||
andOptionalBodyData:optionalBodyData];
|
||||
return [HttpRequestOrResponse httpRequestOrResponse:response];
|
||||
} else {
|
||||
checkOperation([requestOrResponseLineParts count] == 3);
|
||||
checkOperation(requestOrResponseLineParts.count == 3);
|
||||
NSString* method = requestOrResponseLineParts[0];
|
||||
NSString* location = requestOrResponseLineParts[1];
|
||||
HttpRequest* request = [HttpRequest httpRequestWithMethod:method
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
require(data != nil);
|
||||
NSUInteger responseSize;
|
||||
HttpRequestOrResponse* http = [HttpRequestOrResponse tryExtractFromPartialData:data usedLengthOut:&responseSize];
|
||||
checkOperation([http isResponse] && responseSize == [data length]);
|
||||
checkOperation([http isResponse] && responseSize == data.length);
|
||||
return [http response];
|
||||
}
|
||||
+(HttpResponse*) httpResponse200Ok {
|
||||
|
@ -81,7 +81,7 @@
|
|||
}
|
||||
|
||||
-(bool) hasEmptyBody {
|
||||
return [optionalBodyData length] == 0 && [optionalBodyText length] == 0;
|
||||
return optionalBodyData.length == 0 && optionalBodyText.length == 0;
|
||||
}
|
||||
-(NSString*) getOptionalBodyText {
|
||||
if (optionalBodyText != nil) return optionalBodyText;
|
||||
|
@ -106,7 +106,7 @@
|
|||
NSString* body = [self getOptionalBodyText];
|
||||
if (body != nil) {
|
||||
[r addObject:@"Content-Length: "];
|
||||
[r addObject:[@([body length]) stringValue]];
|
||||
[r addObject:[@(body.length) stringValue]];
|
||||
[r addObject:@"\r\n"];
|
||||
[r addObject:body];
|
||||
} else {
|
||||
|
|
|
@ -68,7 +68,7 @@
|
|||
require([packet isKindOfClass:[NSData class]]);
|
||||
NSData* data = packet;
|
||||
|
||||
[partialDataBuffer replaceBytesInRange:NSMakeRange([partialDataBuffer length], [data length]) withBytes:[data bytes]];
|
||||
[partialDataBuffer replaceBytesInRange:NSMakeRange(partialDataBuffer.length, data.length) withBytes:[data bytes]];
|
||||
|
||||
while (true) {
|
||||
NSUInteger usedDataLength;
|
||||
|
|
|
@ -69,9 +69,9 @@ andSynchronizationSourceIdentifier:(uint32_t)synchronizedSourceIdentifier
|
|||
require((version & ~0x3) == 0);
|
||||
require((payloadType & ~0x7F) == 0);
|
||||
require(extensionData != nil);
|
||||
require([extensionData length] < 0x10000);
|
||||
require(extensionData.length < 0x10000);
|
||||
require(contributingSourceIdentifiers != nil);
|
||||
require([contributingSourceIdentifiers count] < 0x10);
|
||||
require(contributingSourceIdentifiers.count < 0x10);
|
||||
require(payload != nil);
|
||||
|
||||
RtpPacket* p = [RtpPacket new];
|
||||
|
@ -102,7 +102,7 @@ andSynchronizationSourceIdentifier:(uint32_t)synchronizedSourceIdentifier
|
|||
require((version & ~0x3) == 0);
|
||||
require((payloadType & ~0x7F) == 0);
|
||||
require(contributingSourceIdentifiers != nil);
|
||||
require([contributingSourceIdentifiers count] < 0x10);
|
||||
require(contributingSourceIdentifiers.count < 0x10);
|
||||
require(payload != nil);
|
||||
|
||||
RtpPacket* p = [RtpPacket new];
|
||||
|
@ -156,7 +156,7 @@ andSynchronizationSourceIdentifier:(uint32_t)synchronizedSourceIdentifier
|
|||
uint8_t contributingSourceCount = [NumberUtil lowUInt4OfUint8:[packetData uint8At:VERSION_AND_PADDING_AND_EXTENSION_AND_CCSRC_FLAG_BYTE_OFFSET]];
|
||||
|
||||
*minSize += contributingSourceCount * CONTRIBUTING_SOURCE_ID_LENGTH;
|
||||
checkOperationDescribe([packetData length] >= *minSize, @"Rtp packet ends before header finished.");
|
||||
checkOperationDescribe(packetData.length >= *minSize, @"Rtp packet ends before header finished.");
|
||||
|
||||
NSMutableArray* contributingSources = [NSMutableArray array];
|
||||
for (NSUInteger i = 0; i < contributingSourceCount; i++) {
|
||||
|
@ -183,7 +183,7 @@ andSynchronizationSourceIdentifier:(uint32_t)synchronizedSourceIdentifier
|
|||
if (!hasExtensionHeader) return;
|
||||
|
||||
*minSize += EXTENSION_HEADER_IDENTIFIER_LENGTH + EXTENSION_HEADER_LENGTH_LENGTH;
|
||||
checkOperationDescribe([packetData length] >= *minSize, @"Rtp packet ends before header of extension header finished.");
|
||||
checkOperationDescribe(packetData.length >= *minSize, @"Rtp packet ends before header of extension header finished.");
|
||||
|
||||
extensionHeaderIdentifier = [packetData bigEndianUInt16At:*offset];
|
||||
*offset += EXTENSION_HEADER_IDENTIFIER_LENGTH;
|
||||
|
@ -192,7 +192,7 @@ andSynchronizationSourceIdentifier:(uint32_t)synchronizedSourceIdentifier
|
|||
*offset += EXTENSION_HEADER_LENGTH_LENGTH;
|
||||
|
||||
*minSize += extensionLength;
|
||||
checkOperationDescribe([packetData length] >= *minSize, @"Rtp packet ends before payload of extension header finished.");
|
||||
checkOperationDescribe(packetData.length >= *minSize, @"Rtp packet ends before payload of extension header finished.");
|
||||
|
||||
extensionHeaderData = [packetData subdataWithRange:NSMakeRange(*offset, extensionLength)];
|
||||
*offset += extensionLength;
|
||||
|
@ -210,17 +210,17 @@ andSynchronizationSourceIdentifier:(uint32_t)synchronizedSourceIdentifier
|
|||
|
||||
if (!hasPadding) return;
|
||||
|
||||
padding = [packetData uint8At:[packetData length] - 1];
|
||||
padding = [packetData uint8At:packetData.length - 1];
|
||||
checkOperationDescribe(padding > 0, @"Padding length must be at least 1 because it includes the suffix byte specifying the length.");
|
||||
|
||||
*minSize += padding;
|
||||
checkOperationDescribe([packetData length] >= *minSize, @"Rtp packet overlaps header and padding.");
|
||||
checkOperationDescribe(packetData.length >= *minSize, @"Rtp packet overlaps header and padding.");
|
||||
}
|
||||
+(RtpPacket*) rtpPacketParsedFromPacketData:(NSData*)packetData {
|
||||
require(packetData != nil);
|
||||
|
||||
NSUInteger minSize = MINIMUM_RTP_HEADER_LENGTH;
|
||||
checkOperationDescribe([packetData length] >= minSize, @"Rtp packet ends before header finished.");
|
||||
checkOperationDescribe(packetData.length >= minSize, @"Rtp packet ends before header finished.");
|
||||
|
||||
RtpPacket* p = [RtpPacket new];
|
||||
|
||||
|
@ -235,7 +235,7 @@ andSynchronizationSourceIdentifier:(uint32_t)synchronizedSourceIdentifier
|
|||
[p readContributingSourcesFromPacketData:packetData trackingOffset:&offset andMinSize:&minSize];
|
||||
[p readExtensionHeaderFromPacketData:packetData trackingOffset:&offset andMinSize:&minSize];
|
||||
[p readPaddingFromPacketData:packetData andMinSize:&minSize];
|
||||
p->payload = [packetData subdataWithRange:NSMakeRange(offset, [packetData length] - p->padding - offset)];
|
||||
p->payload = [packetData subdataWithRange:NSMakeRange(offset, packetData.length - p->padding - offset)];
|
||||
|
||||
p->sequenceNumber = [self getSequenceNumberFromPacketData:packetData];
|
||||
p->timeStamp = [self getTimeStampFromPacketData:packetData];
|
||||
|
@ -247,14 +247,14 @@ andSynchronizationSourceIdentifier:(uint32_t)synchronizedSourceIdentifier
|
|||
-(NSData*) generateFlags {
|
||||
requireState((version & ~0x3) == 0);
|
||||
requireState((payloadType & ~0x7F) == 0);
|
||||
requireState([contributingSourceIdentifiers count] < 0x10);
|
||||
requireState(contributingSourceIdentifiers.count < 0x10);
|
||||
|
||||
NSMutableData* flags = [NSMutableData dataWithLength:2];
|
||||
|
||||
uint8_t versionMask = (uint8_t)(version << VERSION_INDEX);
|
||||
uint8_t paddingBit = padding > 0 ? (uint8_t)(1<<HAS_PADDING_BIT_INDEX) : 0;
|
||||
uint8_t extensionBit = hasExtensionHeader ? (uint8_t)(1<<HAS_EXTENSION_HEADER_BIT_INDEX) : 0;
|
||||
uint8_t ccsrcCount = (uint8_t)[contributingSourceIdentifiers count];
|
||||
uint8_t ccsrcCount = (uint8_t)contributingSourceIdentifiers.count;
|
||||
[flags setUint8At:VERSION_AND_PADDING_AND_EXTENSION_AND_CCSRC_FLAG_BYTE_OFFSET
|
||||
to:versionMask | paddingBit | extensionBit | ccsrcCount];
|
||||
|
||||
|
@ -274,20 +274,20 @@ andSynchronizationSourceIdentifier:(uint32_t)synchronizedSourceIdentifier
|
|||
|
||||
return [@[
|
||||
[NSData dataWithBigEndianBytesOfUInt16:extensionHeaderIdentifier],
|
||||
[NSData dataWithBigEndianBytesOfUInt16:(uint16_t)[extensionHeaderData length]],
|
||||
[NSData dataWithBigEndianBytesOfUInt16:(uint16_t)extensionHeaderData.length],
|
||||
extensionHeaderData
|
||||
] concatDatas];
|
||||
}
|
||||
-(NSData*) generatePaddingData {
|
||||
NSMutableData* paddingData = [NSMutableData dataWithLength:padding];
|
||||
if (padding > 0) {
|
||||
[paddingData setUint8At:[paddingData length] - 1 to:padding];
|
||||
[paddingData setUint8At:paddingData.length - 1 to:padding];
|
||||
}
|
||||
return paddingData;
|
||||
}
|
||||
-(NSData*) generateSerializedPacketDataUsingInteropOptions:(NSArray*)interopOptions {
|
||||
requireState(hasExtensionHeader == (extensionHeaderData != nil));
|
||||
requireState(extensionHeaderData == nil || [extensionHeaderData length] <= MAX_EXTENSION_HEADER_LENGTH);
|
||||
requireState(extensionHeaderData == nil || extensionHeaderData.length <= MAX_EXTENSION_HEADER_LENGTH);
|
||||
|
||||
NSData* shouldBeEmpty = [NSData data];
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
require(cipherKey != nil);
|
||||
require(macKey != nil);
|
||||
require(cipherIvSalt != nil);
|
||||
require([cipherIvSalt length] == IV_SALT_LENGTH);
|
||||
require(cipherIvSalt.length == IV_SALT_LENGTH);
|
||||
|
||||
SrtpStream* s = [SrtpStream new];
|
||||
s->cipherIvSalt = cipherIvSalt;
|
||||
|
@ -42,7 +42,7 @@
|
|||
NSData* authenticatedData = [securedRtpPacket rawPacketDataUsingInteropOptions:nil];
|
||||
NSData* includedHmac = [authenticatedData takeLastVolatile:HMAC_LENGTH];
|
||||
NSData* expectedHmac = [[authenticatedData skipLastVolatile:HMAC_LENGTH] hmacWithSha1WithKey:macKey];
|
||||
checkOperationDescribe([expectedHmac length] == HMAC_LENGTH, @"Hmac length constant is wrong");
|
||||
checkOperationDescribe(expectedHmac.length == HMAC_LENGTH, @"Hmac length constant is wrong");
|
||||
checkOperationDescribe([includedHmac isEqualToData_TimingSafe:expectedHmac], @"Authentication failed.");
|
||||
|
||||
NSData* iv = [self getIvForSequenceNumber:[securedRtpPacket sequenceNumber] andSynchronizationSourceIdentifier:[securedRtpPacket synchronizationSourceIdentifier]];
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
+(HashChain*) hashChainWithSeed:(NSData*)seed {
|
||||
require(seed != nil);
|
||||
require([seed length] == HASH_CHAIN_ITEM_LENGTH);
|
||||
require(seed.length == HASH_CHAIN_ITEM_LENGTH);
|
||||
HashChain* s = [HashChain new];
|
||||
s->h0 = seed;
|
||||
s->h1 = [s->h0 hashWithSha256];
|
||||
|
|
|
@ -79,7 +79,7 @@ const char* PGP_LIST_ODD[] = {
|
|||
|
||||
+(NSString*) generateFromData:(NSData*)sasBytes {
|
||||
require(sasBytes != nil);
|
||||
require([sasBytes length] >= MIN_SAS_BYTES);
|
||||
require(sasBytes.length >= MIN_SAS_BYTES);
|
||||
uint8_t wordIndexOne = [sasBytes uint8At:0];
|
||||
uint8_t wordIndexTwo = [sasBytes uint8At:1];
|
||||
|
||||
|
|
|
@ -134,7 +134,7 @@ enum KeyAgreementType {
|
|||
size_t secret_len;
|
||||
unsigned char* secret;
|
||||
|
||||
EVP_PKEY* peerkey = [self deserializePublicKey:[publicKey bytes] withLength:[publicKey length]];
|
||||
EVP_PKEY* peerkey = [self deserializePublicKey:[publicKey bytes] withLength:publicKey.length];
|
||||
EVP_PKEY_CTX* ctx;
|
||||
|
||||
|
||||
|
@ -314,7 +314,7 @@ enum KeyAgreementType {
|
|||
}
|
||||
|
||||
-(BIGNUM*) generateBignumberFor:(NSData*) data{
|
||||
assert([data length] <= INT_MAX );
|
||||
assert(data.length <= INT_MAX );
|
||||
return BN_bin2bn([data bytes], (int)data.length, NULL);
|
||||
}
|
||||
|
||||
|
|
|
@ -68,12 +68,12 @@
|
|||
require(dhPart2HelloCommitment != nil);
|
||||
require(hmacKey != nil);
|
||||
|
||||
require([h2 length] == HASH_CHAIN_ITEM_LENGTH);
|
||||
require([hashSpecId length] == HASH_SPEC_LENGTH);
|
||||
require([cipherSpecId length] == CIPHER_SPEC_LENGTH);
|
||||
require([authSpecId length] == AUTH_SPEC_LENGTH);
|
||||
require([agreeSpecId length] == AGREE_SPEC_LENGTH);
|
||||
require([sasSpecId length] == SAS_SPEC_LENGTH);
|
||||
require(h2.length == HASH_CHAIN_ITEM_LENGTH);
|
||||
require(hashSpecId.length == HASH_SPEC_LENGTH);
|
||||
require(cipherSpecId.length == CIPHER_SPEC_LENGTH);
|
||||
require(authSpecId.length == AUTH_SPEC_LENGTH);
|
||||
require(agreeSpecId.length == AGREE_SPEC_LENGTH);
|
||||
require(sasSpecId.length == SAS_SPEC_LENGTH);
|
||||
|
||||
CommitPacket* p = [CommitPacket new];
|
||||
|
||||
|
@ -93,12 +93,12 @@
|
|||
-(HandshakePacket*) embedInHandshakePacketAuthenticatedWith:(NSData*)hmacKey {
|
||||
|
||||
require(hmacKey != nil);
|
||||
requireState([h2 length] == HASH_CHAIN_ITEM_LENGTH);
|
||||
requireState([hashSpecId length] == HASH_SPEC_LENGTH);
|
||||
requireState([cipherSpecId length] == CIPHER_SPEC_LENGTH);
|
||||
requireState([authSpecId length] == AUTH_SPEC_LENGTH);
|
||||
requireState([agreementSpecId length] == AGREE_SPEC_LENGTH);
|
||||
requireState([sasSpecId length] == SAS_SPEC_LENGTH);
|
||||
requireState(h2.length == HASH_CHAIN_ITEM_LENGTH);
|
||||
requireState(hashSpecId.length == HASH_SPEC_LENGTH);
|
||||
requireState(cipherSpecId.length == CIPHER_SPEC_LENGTH);
|
||||
requireState(authSpecId.length == AUTH_SPEC_LENGTH);
|
||||
requireState(agreementSpecId.length == AGREE_SPEC_LENGTH);
|
||||
requireState(sasSpecId.length == SAS_SPEC_LENGTH);
|
||||
|
||||
NSData* payload = [@[
|
||||
h2,
|
||||
|
@ -156,7 +156,7 @@
|
|||
require(handshakePacket != nil);
|
||||
checkOperation([[handshakePacket typeId] isEqualToData:HANDSHAKE_TYPE_COMMIT]);
|
||||
NSData* payload = [handshakePacket payload];
|
||||
checkOperation([payload length] == COMMIT_OFFSET + COMMIT_LENGTH + HANDSHAKE_TRUNCATED_HMAC_LENGTH);
|
||||
checkOperation(payload.length == COMMIT_OFFSET + COMMIT_LENGTH + HANDSHAKE_TRUNCATED_HMAC_LENGTH);
|
||||
|
||||
CommitPacket* p = [CommitPacket new];
|
||||
|
||||
|
|
|
@ -68,8 +68,8 @@
|
|||
require(cipherKey != nil);
|
||||
require(hashChainH0 != nil);
|
||||
require(iv != nil);
|
||||
require([iv length] == CONFIRM_IV_LENGTH);
|
||||
require([hashChainH0 length] == HASH_CHAIN_ITEM_LENGTH);
|
||||
require(iv.length == CONFIRM_IV_LENGTH);
|
||||
require(hashChainH0.length == HASH_CHAIN_ITEM_LENGTH);
|
||||
|
||||
ConfirmPacket* p = [ConfirmPacket new];
|
||||
p->hashChainH0 = hashChainH0;
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
require(sharedSecretHashes != nil);
|
||||
require(publicKeyData != nil);
|
||||
|
||||
require([hashChainH0 length] == HASH_CHAIN_ITEM_LENGTH);
|
||||
require(hashChainH0.length == HASH_CHAIN_ITEM_LENGTH);
|
||||
|
||||
DhPacket* p = [DhPacket new];
|
||||
p->isPart1 = isPart1;
|
||||
|
@ -93,7 +93,7 @@
|
|||
NSData* payload = [handshakePacket payload];
|
||||
|
||||
checkOperation([[handshakePacket typeId] isEqualToData:expectedTypeIdDhPacket]);
|
||||
checkOperation([payload length] >= MIN_DH_PKT_LENGTH);
|
||||
checkOperation(payload.length >= MIN_DH_PKT_LENGTH);
|
||||
|
||||
DhPacket* p = [DhPacket new];
|
||||
p->hashChainH1 = [self getHashChainH1FromPayload:payload];
|
||||
|
@ -105,7 +105,7 @@
|
|||
|
||||
-(HandshakePacket*) embedIntoHandshakePacketAuthenticatedWithMacKey:(NSData*)macKey {
|
||||
require(macKey != nil);
|
||||
requireState([hashChainH1 length] == HASH_CHAIN_ITEM_LENGTH);
|
||||
requireState(hashChainH1.length == HASH_CHAIN_ITEM_LENGTH);
|
||||
|
||||
NSData* typeId = isPart1 ? HANDSHAKE_TYPE_DH_1 : HANDSHAKE_TYPE_DH_2;
|
||||
|
||||
|
|
|
@ -22,10 +22,10 @@
|
|||
require(aux != nil);
|
||||
require(pbx != nil);
|
||||
|
||||
require([rs1 length] == DH_RS1_LENGTH);
|
||||
require([rs2 length] == DH_RS2_LENGTH);
|
||||
require([aux length] == DH_AUX_LENGTH);
|
||||
require([pbx length] == DH_PBX_LENGTH);
|
||||
require(rs1.length == DH_RS1_LENGTH);
|
||||
require(rs2.length == DH_RS2_LENGTH);
|
||||
require(aux.length == DH_AUX_LENGTH);
|
||||
require(pbx.length == DH_PBX_LENGTH);
|
||||
|
||||
DhPacketSharedSecretHashes* h = [DhPacketSharedSecretHashes new];
|
||||
h->rs1 = rs1;
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
+(HandshakePacket*) handshakePacketWithTypeId:(NSData*)typeId andPayload:(NSData*)payload {
|
||||
require(typeId != nil);
|
||||
require(payload != nil);
|
||||
require([typeId length] == HANDSHAKE_TYPE_ID_LENGTH);
|
||||
require(typeId.length == HANDSHAKE_TYPE_ID_LENGTH);
|
||||
|
||||
HandshakePacket* p = [HandshakePacket new];
|
||||
p->typeId = typeId;
|
||||
|
@ -93,7 +93,7 @@
|
|||
// The data corresponding to the rtp extension header is used when hmac-ing
|
||||
return [@[
|
||||
[NSData dataWithBigEndianBytesOfUInt16:HANDSHAKE_PACKET_EXTENSION_IDENTIFIER],
|
||||
[NSData dataWithBigEndianBytesOfUInt16:(uint16_t)([payload length] + HEADER_FOOTER_LENGTH_WITHOUT_HMAC)],
|
||||
[NSData dataWithBigEndianBytesOfUInt16:(uint16_t)(payload.length + HEADER_FOOTER_LENGTH_WITHOUT_HMAC)],
|
||||
typeId,
|
||||
payload
|
||||
] concatDatas];
|
||||
|
@ -110,14 +110,14 @@
|
|||
// When we hmac the rtp extension header, the hmac length must be counted even though it's not appended yet
|
||||
return [@[
|
||||
[NSData dataWithBigEndianBytesOfUInt16:HANDSHAKE_PACKET_EXTENSION_IDENTIFIER],
|
||||
[NSData dataWithBigEndianBytesOfUInt16:(uint16_t)([payload length] + HEADER_FOOTER_LENGTH_WITH_HMAC)],
|
||||
[NSData dataWithBigEndianBytesOfUInt16:(uint16_t)(payload.length + HEADER_FOOTER_LENGTH_WITH_HMAC)],
|
||||
typeId,
|
||||
payload
|
||||
] concatDatas];
|
||||
}
|
||||
|
||||
-(RtpPacket*) embeddedIntoRtpPacketWithSequenceNumber:(uint16_t)sequenceNumber usingInteropOptions:(NSArray*)interopOptions {
|
||||
requireState([typeId length] == HANDSHAKE_TYPE_ID_LENGTH);
|
||||
requireState(typeId.length == HANDSHAKE_TYPE_ID_LENGTH);
|
||||
|
||||
NSData* payloadExceptCrc = [self rtpExtensionPayloadExceptCrc];
|
||||
NSData* extensionDataWithZeroCrc = [(@[payloadExceptCrc, [NSData dataWithBigEndianBytesOfUInt32:0]]) concatDatas];
|
||||
|
|
|
@ -101,14 +101,14 @@
|
|||
require((flagsUnusedLow4 & ~FLAGS_UNUSED_LOW_MASK) == 0);
|
||||
require((flagsUnusedHigh4 & ~FLAGS_UNUSED_HIGH_MASK) == 0);
|
||||
|
||||
require([versionId length] == VERSION_ID_LENGTH);
|
||||
require([clientId length] == CLIENT_ID_LENGTH);
|
||||
require([hashChainH3 length] == HASH_CHAIN_ITEM_LENGTH);
|
||||
require([hashIds count] <= MAX_SPEC_IDS);
|
||||
require([cipherIds count] <= MAX_SPEC_IDS);
|
||||
require([authIds count] <= MAX_SPEC_IDS);
|
||||
require([agreeIds count] <= MAX_SPEC_IDS);
|
||||
require([sasIds count] <= MAX_SPEC_IDS);
|
||||
require(versionId.length == VERSION_ID_LENGTH);
|
||||
require(clientId.length == CLIENT_ID_LENGTH);
|
||||
require(hashChainH3.length == HASH_CHAIN_ITEM_LENGTH);
|
||||
require(hashIds.count <= MAX_SPEC_IDS);
|
||||
require(cipherIds.count <= MAX_SPEC_IDS);
|
||||
require(authIds.count <= MAX_SPEC_IDS);
|
||||
require(agreeIds.count <= MAX_SPEC_IDS);
|
||||
require(sasIds.count <= MAX_SPEC_IDS);
|
||||
|
||||
HelloPacket* p = [HelloPacket new];
|
||||
p->flagsUnusedLow4 = flagsUnusedLow4;
|
||||
|
@ -136,16 +136,16 @@
|
|||
andHighUInt4:flags0SMP]];
|
||||
|
||||
[flags setUint8At:UNUSED_HIGH_AND_0SMP_FLAG_INDEX
|
||||
to:[NumberUtil uint8FromLowUInt4:(uint8_t)[hashIds count]
|
||||
to:[NumberUtil uint8FromLowUInt4:(uint8_t)hashIds.count
|
||||
andHighUInt4:flagsUnusedLow4]];
|
||||
|
||||
[flags setUint8At:AUTH_ID_AND_CIPHER_ID_FLAG_INDEX
|
||||
to:[NumberUtil uint8FromLowUInt4:(uint8_t)[authIds count]
|
||||
andHighUInt4:(uint8_t)[cipherIds count]]];
|
||||
to:[NumberUtil uint8FromLowUInt4:(uint8_t)authIds.count
|
||||
andHighUInt4:(uint8_t)cipherIds.count]];
|
||||
|
||||
[flags setUint8At:SAS_ID_AND_AGREE_ID_FLAG_INDEX
|
||||
to:[NumberUtil uint8FromLowUInt4:(uint8_t)[sasIds count]
|
||||
andHighUInt4:(uint8_t)[agreeIds count]]];
|
||||
to:[NumberUtil uint8FromLowUInt4:(uint8_t)sasIds.count
|
||||
andHighUInt4:(uint8_t)agreeIds.count]];
|
||||
|
||||
return flags;
|
||||
}
|
||||
|
@ -179,7 +179,7 @@
|
|||
return [Zid zidWithData:[payload subdataWithRange:NSMakeRange(ZID_OFFSET, ZID_LENGTH)]];
|
||||
}
|
||||
+(NSArray*) getSpecIdsFromPayload:(NSData*)payload counts:(NSArray*)counts {
|
||||
checkOperation([payload length] >= SPEC_IDS_OFFSET + SPEC_ID_LENGTH*[counts sumNSUInteger]);
|
||||
checkOperation(payload.length >= SPEC_IDS_OFFSET + SPEC_ID_LENGTH*[counts sumNSUInteger]);
|
||||
|
||||
NSMutableArray* result = [NSMutableArray array];
|
||||
NSUInteger offset = SPEC_IDS_OFFSET;
|
||||
|
@ -223,7 +223,7 @@
|
|||
checkOperationDescribe([[handshakePacket typeId] isEqualToData:HANDSHAKE_TYPE_HELLO], @"Not a hello packet");
|
||||
|
||||
NSData* payload = [handshakePacket payload];
|
||||
checkOperation([payload length] >= SPEC_IDS_OFFSET);
|
||||
checkOperation(payload.length >= SPEC_IDS_OFFSET);
|
||||
|
||||
HelloPacket* p = [HelloPacket new];
|
||||
|
||||
|
|
|
@ -82,7 +82,7 @@
|
|||
|
||||
while ([writeBuffer enqueuedLength] > 0 && [outputStream hasSpaceAvailable]) {
|
||||
NSData* data = [writeBuffer peekVolatileHeadOfData];
|
||||
NSInteger d = [outputStream write:[data bytes] maxLength:[data length]];
|
||||
NSInteger d = [outputStream write:[data bytes] maxLength:data.length];
|
||||
|
||||
// reached destination buffer capacity?
|
||||
if (d == 0) break;
|
||||
|
@ -184,7 +184,7 @@
|
|||
if (![[futureConnectedAndWritableSource forceGetResult] isEqual:@YES]) return;
|
||||
|
||||
while ([inputStream hasBytesAvailable]) {
|
||||
NSInteger numRead = [inputStream read:[readBuffer mutableBytes] maxLength:[readBuffer length]];
|
||||
NSInteger numRead = [inputStream read:[readBuffer mutableBytes] maxLength:readBuffer.length];
|
||||
|
||||
if (numRead < 0) [self onErrorOccurred:@"Read Error"];
|
||||
if (numRead <= 0) break;
|
||||
|
|
|
@ -102,7 +102,7 @@ void onReceivedData(CFSocketRef socket, CFSocketCallBackType type, CFDataRef add
|
|||
checkOperation(type == kCFSocketDataCallBack);
|
||||
|
||||
bool waitingForClient = ![self isRemoteEndPointKnown];
|
||||
bool packetHasContent = [data length] > 0;
|
||||
bool packetHasContent = data.length > 0;
|
||||
bool haveNotSentPacketToBeBounced = !hasSentData;
|
||||
checkOperationDescribe(packetHasContent || waitingForClient || haveNotSentPacketToBeBounced,
|
||||
@"Received empty UDP packet. Probably indicates destination is unreachable.");
|
||||
|
|
|
@ -65,7 +65,7 @@ static NSString *const RPDefaultsKeyPhoneNumberCanonical = @"RPDefaultsKeyPhoneN
|
|||
NBAsYouTypeFormatter* formatter = [[NBAsYouTypeFormatter alloc] initWithRegionCode:regionCode];
|
||||
|
||||
NSString* result = input;
|
||||
for (NSUInteger i = 0; i < [input length]; i++) {
|
||||
for (NSUInteger i = 0; i < input.length; i++) {
|
||||
result = [formatter inputDigit:[input substringWithRange:NSMakeRange(i, 1)]];
|
||||
}
|
||||
return result;
|
||||
|
@ -94,9 +94,9 @@ static NSString *const RPDefaultsKeyPhoneNumberCanonical = @"RPDefaultsKeyPhoneN
|
|||
+(PhoneNumber*) tryParsePhoneNumberFromUserSpecifiedText:(NSString*)text {
|
||||
require(text != nil);
|
||||
|
||||
char s[[text length]+1];
|
||||
char s[text.length+1];
|
||||
int xx = 0;
|
||||
for (NSUInteger i = 0; i < [text length]; i++) {
|
||||
for (NSUInteger i = 0; i < text.length; i++) {
|
||||
unichar x = [text characterAtIndex:i];
|
||||
if (x == '+' || (x >= '0' && x <= '9')) {
|
||||
s[xx++] = (char)x;
|
||||
|
|
|
@ -124,9 +124,9 @@
|
|||
unlessCancelled:untilCancelledToken];
|
||||
|
||||
Future* futureEndPoint = [futureDnsResult then:^(NSArray* ipAddresses) {
|
||||
require([ipAddresses count] > 0);
|
||||
require(ipAddresses.count > 0);
|
||||
|
||||
IpAddress* address = ipAddresses[arc4random_uniform((unsigned int)[ipAddresses count])];
|
||||
IpAddress* address = ipAddresses[arc4random_uniform((unsigned int)ipAddresses.count)];
|
||||
return [IpEndPoint ipEndPointAtAddress:address
|
||||
onPort:sessionDescriptor.relayUdpPort];
|
||||
}];
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
checkOperation(message != nil);
|
||||
NSData* authenticatedPayload = [message decodedAsBase64Data];
|
||||
|
||||
checkOperation([authenticatedPayload length] > 0);
|
||||
checkOperation(authenticatedPayload.length > 0);
|
||||
uint8_t includedRemoteNotificationFormatVersion = [authenticatedPayload uint8At:0];
|
||||
checkOperation(includedRemoteNotificationFormatVersion == EXPECTED_REMOTE_NOTIF_FORMAT_VERSION);
|
||||
|
||||
|
@ -86,7 +86,7 @@
|
|||
}
|
||||
+(NSData*) verifyAndRemoveMacFromRemoteNotifcationData:(NSData*)data {
|
||||
require(data != nil);
|
||||
checkOperation([data length] >= HMAC_TRUNCATED_SIZE);
|
||||
checkOperation(data.length >= HMAC_TRUNCATED_SIZE);
|
||||
NSData* includedMac = [data takeLast:HMAC_TRUNCATED_SIZE];
|
||||
NSData* payload = [data skipLast:HMAC_TRUNCATED_SIZE];
|
||||
NSData* signalingMacKey = [SGNKeychainUtil signalingMacKey];
|
||||
|
@ -97,7 +97,7 @@
|
|||
}
|
||||
+(NSData*) decryptRemoteNotificationData:(NSData*)data {
|
||||
require(data != nil);
|
||||
checkOperation([data length] >= VERSION_SIZE + IV_SIZE);
|
||||
checkOperation(data.length >= VERSION_SIZE + IV_SIZE);
|
||||
NSData* cipherKey = [SGNKeychainUtil signalingCipherKey];
|
||||
NSData* iv = [data subdataWithRange:NSMakeRange(VERSION_SIZE, IV_SIZE)];
|
||||
NSData* cipherText = [data skip:VERSION_SIZE+IV_SIZE];
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
-(NSNumber*) tryGetSessionId {
|
||||
if (![self.location hasPrefix:@"/session/"]) return nil;
|
||||
|
||||
NSString* sessionIdText = [self.location substringFromIndex:[@"/session/" length]];
|
||||
NSString* sessionIdText = [self.location substringFromIndex:@"/session/".length];
|
||||
sessionIdText = [sessionIdText stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
|
||||
NSNumber* sessionIdNumber = [sessionIdText tryParseAsDecimalNumber];
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
checkOperation(hashCountValue > 0);
|
||||
|
||||
NSData* responseBody = [response getOptionalBodyData];
|
||||
checkOperation([responseBody length] > 0);
|
||||
checkOperation(responseBody.length > 0);
|
||||
|
||||
BloomFilter* bloomFilter = [BloomFilter bloomFilterWithHashCount:(NSUInteger)hashCountValue
|
||||
andData:responseBody];
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
-(void) log:(NSString*)category details:(id)details {
|
||||
NSNumber* index = indexDic[category];
|
||||
if (index == nil) {
|
||||
index = @([indexDic count]);
|
||||
index = @(indexDic.count);
|
||||
indexDic[category] = index;
|
||||
}
|
||||
NSUInteger x = [index unsignedIntegerValue];
|
||||
|
|
|
@ -27,10 +27,10 @@
|
|||
lastWindowEnding = endOfWindowTime;
|
||||
|
||||
NSTimeInterval startOfWindowTime = endOfWindowTime - windowDuration;
|
||||
while([events count] > 0 && [[events peek] doubleValue] < startOfWindowTime) {
|
||||
while(events.count > 0 && [[events peek] doubleValue] < startOfWindowTime) {
|
||||
[events dequeue];
|
||||
}
|
||||
return [events count];
|
||||
return events.count;
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
@implementation NSArray (Util)
|
||||
|
||||
-(NSData*) toUint8Data {
|
||||
NSUInteger n = [self count];
|
||||
NSUInteger n = self.count;
|
||||
uint8_t x[n];
|
||||
for (NSUInteger i = 0; i < n; i++) {
|
||||
x[i] = [(NSNumber*)self[i] unsignedCharValue];
|
||||
|
@ -21,8 +21,8 @@
|
|||
NSMutableData* result = [NSMutableData dataWithLength:t];
|
||||
uint8_t* dst = [result mutableBytes];
|
||||
for (NSData* d in self) {
|
||||
memcpy(dst, [d bytes], [d length]);
|
||||
dst += [d length];
|
||||
memcpy(dst, [d bytes], d.length);
|
||||
dst += d.length;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
-(uint32_t) hash:(NSData*)value index:(NSUInteger)index {
|
||||
NSData* key = [[@(index) stringValue] encodedAsAscii];
|
||||
NSData* hash = [value hmacWithSha1WithKey:key];
|
||||
return [hash bigEndianUInt32At:0] % ([data length] * 8);
|
||||
return [hash bigEndianUInt32At:0] % (data.length * 8);
|
||||
}
|
||||
|
||||
-(bool) isBitSetAt:(uint32_t)bitIndex {
|
||||
|
|
|
@ -5,12 +5,12 @@
|
|||
@implementation NSData (Conversions)
|
||||
|
||||
-(uint16_t) bigEndianUInt16At:(NSUInteger)offset {
|
||||
require(offset <= [self length]-sizeof(uint16_t));
|
||||
require(offset <= self.length-sizeof(uint16_t));
|
||||
return (uint16_t)[self uint8At:1+offset]
|
||||
| (uint16_t)((uint16_t)[self uint8At:0+offset] << 8);
|
||||
}
|
||||
-(uint32_t) bigEndianUInt32At:(NSUInteger)offset {
|
||||
require(offset <= [self length]-sizeof(uint32_t));
|
||||
require(offset <= self.length-sizeof(uint32_t));
|
||||
return ((uint32_t)[self uint8At:3+offset] << 0)
|
||||
| ((uint32_t)[self uint8At:2+offset] << 8)
|
||||
| ((uint32_t)[self uint8At:1+offset] << 16)
|
||||
|
@ -34,7 +34,7 @@
|
|||
+(NSData*) switchEndiannessOfData:(NSData*)data{
|
||||
const void* bytes = [data bytes];
|
||||
NSMutableData* switchedEndianData = [NSMutableData new];
|
||||
for (NSUInteger i = [data length]; i > 0; --i){
|
||||
for (NSUInteger i = data.length; i > 0; --i){
|
||||
uint8_t byte = *(((uint8_t*)(bytes))+((i-1)*sizeof(uint8_t)));
|
||||
[switchedEndianData appendData:[NSData dataWithBytes:&byte length:sizeof(byte)]];
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ void generateCRC32Table(uint32_t *pTable, uint32_t poly) {
|
|||
|
||||
uint32_t crc = seed;
|
||||
uint8_t *pBytes = (uint8_t *)[self bytes];
|
||||
NSUInteger length = [self length];
|
||||
NSUInteger length = self.length;
|
||||
|
||||
while (length--) {
|
||||
crc = (crc>>8) ^ pTable[(crc & 0xFF) ^ *pBytes++];
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
// (also, by virtue of being const, there are no threading/entrancy issues)
|
||||
static const int SafeNonNullPointerToStaticStorageLocation[1];
|
||||
|
||||
if ([self length] == 0) {
|
||||
if (self.length == 0) {
|
||||
return SafeNonNullPointerToStaticStorageLocation;
|
||||
} else {
|
||||
require([self bytes] != nil);
|
||||
|
@ -23,10 +23,10 @@
|
|||
}
|
||||
-(NSNumber*) tryFindIndexOf:(NSData*)subData {
|
||||
require(subData != nil);
|
||||
if ([subData length] > [self length]) return nil;
|
||||
if (subData.length > self.length) return nil;
|
||||
|
||||
NSUInteger subDataLength = [subData length];
|
||||
NSUInteger excessLength = [self length] - subDataLength;
|
||||
NSUInteger subDataLength = subData.length;
|
||||
NSUInteger excessLength = self.length - subDataLength;
|
||||
|
||||
const uint8_t* selfBytes = [self bytes];
|
||||
const uint8_t* subDataBytes = [subData bytes];
|
||||
|
@ -41,14 +41,14 @@
|
|||
if (![self bytes]) return @"";
|
||||
|
||||
NSMutableString* result = [NSMutableString string];
|
||||
for (NSUInteger i = 0; i < [self length]; ++i)
|
||||
for (NSUInteger i = 0; i < self.length; ++i)
|
||||
[result appendString:[NSString stringWithFormat:@"%02x", [self uint8At:i]]];
|
||||
|
||||
return result;
|
||||
}
|
||||
-(NSString*) decodedAsUtf8 {
|
||||
// workaround for empty data having nil bytes
|
||||
if ([self length] == 0) return @"";
|
||||
if (self.length == 0) return @"";
|
||||
|
||||
[NSString stringWithUTF8String:[self bytes]];
|
||||
NSString* result = [[NSString alloc] initWithData:self encoding:NSUTF8StringEncoding];
|
||||
|
@ -57,9 +57,9 @@
|
|||
}
|
||||
-(NSString*) decodedAsAscii {
|
||||
// workaround for empty data having nil bytes
|
||||
if ([self length] == 0) return @"";
|
||||
if (self.length == 0) return @"";
|
||||
// workaround for initWithData not enforcing the fact that NSASCIIStringEncoding means strict 7-bit
|
||||
for (NSUInteger i = 0; i < [self length]; i++) {
|
||||
for (NSUInteger i = 0; i < self.length; i++) {
|
||||
checkOperationDescribe(([self uint8At:i] & 0x80) == 0, @"Invalid ascii data.");
|
||||
}
|
||||
|
||||
|
@ -71,8 +71,8 @@
|
|||
const int MinPrintableChar = ' ';
|
||||
const int MaxPrintableChar = '~';
|
||||
|
||||
NSMutableData* d = [NSMutableData dataWithLength:[self length]];
|
||||
for (NSUInteger i = 0; i < [self length]; i++) {
|
||||
NSMutableData* d = [NSMutableData dataWithLength:self.length];
|
||||
for (NSUInteger i = 0; i < self.length; i++) {
|
||||
uint8_t v = [self uint8At:i];
|
||||
if (v < MinPrintableChar || v > MaxPrintableChar) v = '.';
|
||||
[d setUint8At:i to:v];
|
||||
|
@ -81,24 +81,24 @@
|
|||
}
|
||||
|
||||
-(NSData*) skip:(NSUInteger)offset {
|
||||
require(offset <= [self length]);
|
||||
return [self subdataWithRange:NSMakeRange(offset, [self length] - offset)];
|
||||
require(offset <= self.length);
|
||||
return [self subdataWithRange:NSMakeRange(offset, self.length - offset)];
|
||||
}
|
||||
-(NSData*) take:(NSUInteger)takeCount {
|
||||
require(takeCount <= [self length]);
|
||||
require(takeCount <= self.length);
|
||||
return [self subdataWithRange:NSMakeRange(0, takeCount)];
|
||||
}
|
||||
-(NSData*) skipLast:(NSUInteger)skipLastCount {
|
||||
require(skipLastCount <= [self length]);
|
||||
return [self subdataWithRange:NSMakeRange(0, [self length] - skipLastCount)];
|
||||
require(skipLastCount <= self.length);
|
||||
return [self subdataWithRange:NSMakeRange(0, self.length - skipLastCount)];
|
||||
}
|
||||
-(NSData*) takeLast:(NSUInteger)takeLastCount {
|
||||
require(takeLastCount <= [self length]);
|
||||
return [self subdataWithRange:NSMakeRange([self length] - takeLastCount, takeLastCount)];
|
||||
require(takeLastCount <= self.length);
|
||||
return [self subdataWithRange:NSMakeRange(self.length - takeLastCount, takeLastCount)];
|
||||
}
|
||||
|
||||
-(NSData*) subdataVolatileWithRange:(NSRange)range {
|
||||
NSUInteger length = [self length];
|
||||
NSUInteger length = self.length;
|
||||
require(range.location <= length);
|
||||
require(range.length <= length);
|
||||
require(range.location + range.length <= length);
|
||||
|
@ -106,20 +106,20 @@
|
|||
return [NSData dataWithBytesNoCopy:(uint8_t*)[self bytes] + range.location length:range.length freeWhenDone:NO];
|
||||
}
|
||||
-(NSData*) skipVolatile:(NSUInteger)offset {
|
||||
require(offset <= [self length]);
|
||||
return [self subdataVolatileWithRange:NSMakeRange(offset, [self length] - offset)];
|
||||
require(offset <= self.length);
|
||||
return [self subdataVolatileWithRange:NSMakeRange(offset, self.length - offset)];
|
||||
}
|
||||
-(NSData*) takeVolatile:(NSUInteger)takeCount {
|
||||
require(takeCount <= [self length]);
|
||||
require(takeCount <= self.length);
|
||||
return [self subdataVolatileWithRange:NSMakeRange(0, takeCount)];
|
||||
}
|
||||
-(NSData*) skipLastVolatile:(NSUInteger)skipLastCount {
|
||||
require(skipLastCount <= [self length]);
|
||||
return [self subdataVolatileWithRange:NSMakeRange(0, [self length] - skipLastCount)];
|
||||
require(skipLastCount <= self.length);
|
||||
return [self subdataVolatileWithRange:NSMakeRange(0, self.length - skipLastCount)];
|
||||
}
|
||||
-(NSData*) takeLastVolatile:(NSUInteger)takeLastCount {
|
||||
require(takeLastCount <= [self length]);
|
||||
return [self subdataVolatileWithRange:NSMakeRange([self length] - takeLastCount, takeLastCount)];
|
||||
require(takeLastCount <= self.length);
|
||||
return [self subdataVolatileWithRange:NSMakeRange(self.length - takeLastCount, takeLastCount)];
|
||||
}
|
||||
|
||||
-(uint8_t) highUint4AtByteOffset:(NSUInteger)offset {
|
||||
|
@ -129,7 +129,7 @@
|
|||
return [self uint8At:offset] & 0xF;
|
||||
}
|
||||
-(uint8_t) uint8At:(NSUInteger)offset {
|
||||
require(offset < [self length]);
|
||||
require(offset < self.length);
|
||||
return ((const uint8_t*)[self bytes])[offset];
|
||||
}
|
||||
-(const uint8_t*) constPtrToUint8At:(NSUInteger)offset {
|
||||
|
@ -140,7 +140,7 @@
|
|||
const NSUInteger BitsPerByte = 8;
|
||||
const uint8_t Base64Chars[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||
|
||||
NSUInteger byteCount = [self length];
|
||||
NSUInteger byteCount = self.length;
|
||||
NSUInteger bitCount = byteCount*BitsPerByte;
|
||||
NSUInteger base64WordCount = bitCount / BitsPerBase64Word;
|
||||
if (base64WordCount * BitsPerBase64Word < bitCount) base64WordCount += 1;
|
||||
|
@ -180,12 +180,12 @@
|
|||
|
||||
@implementation NSMutableData (Util)
|
||||
-(void) setUint8At:(NSUInteger)offset to:(uint8_t)newValue {
|
||||
require(offset < [self length]);
|
||||
require(offset < self.length);
|
||||
((uint8_t*)[self mutableBytes])[offset] = newValue;
|
||||
}
|
||||
-(void) replaceBytesStartingAt:(NSUInteger)offset withData:(NSData*)data {
|
||||
require(data != nil);
|
||||
require(offset + [data length] <= [self length]);
|
||||
[self replaceBytesInRange:NSMakeRange(offset, [data length]) withBytes:[data bytes]];
|
||||
require(offset + data.length <= self.length);
|
||||
[self replaceBytesInRange:NSMakeRange(offset, data.length) withBytes:[data bytes]];
|
||||
}
|
||||
@end
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
-(NSArray*) map:(id (^)(id item))projection {
|
||||
require(projection != nil);
|
||||
|
||||
NSMutableArray* r = [NSMutableArray arrayWithCapacity:[self count]];
|
||||
NSMutableArray* r = [NSMutableArray arrayWithCapacity:self.count];
|
||||
for (id e in self) {
|
||||
[r addObject:projection(e)];
|
||||
}
|
||||
|
@ -78,7 +78,7 @@
|
|||
for (id value in self) {
|
||||
result[keySelector(value)] = value;
|
||||
}
|
||||
checkOperation([result count] == [self count]);
|
||||
checkOperation(result.count == self.count);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
|
||||
@implementation NSString (Util)
|
||||
-(NSData*) decodedAsHexString {
|
||||
require([self length] % 2 == 0);
|
||||
require(self.length % 2 == 0);
|
||||
|
||||
NSUInteger n = [self length] / 2;
|
||||
NSUInteger n = self.length / 2;
|
||||
uint8_t result[n];
|
||||
for (NSUInteger i = 0; i < n; i++) {
|
||||
unsigned int r;
|
||||
|
@ -52,17 +52,17 @@
|
|||
require(regex != nil);
|
||||
require(replacement != nil);
|
||||
NSMutableString* m = [self mutableCopy];
|
||||
[regex replaceMatchesInString:m options:0 range:NSMakeRange(0, [m length]) withTemplate:replacement];
|
||||
[regex replaceMatchesInString:m options:0 range:NSMakeRange(0, m.length) withTemplate:replacement];
|
||||
return m;
|
||||
}
|
||||
-(bool) containsAnyMatches:(NSRegularExpression*)regex {
|
||||
require(regex != nil);
|
||||
return [regex numberOfMatchesInString:self options:0 range:NSMakeRange(0, [self length])] > 0;
|
||||
return [regex numberOfMatchesInString:self options:0 range:NSMakeRange(0, self.length)] > 0;
|
||||
}
|
||||
-(NSString*) withPrefixRemovedElseNull:(NSString*)prefix {
|
||||
require(prefix != nil);
|
||||
if ([prefix length] > 0 && ![self hasPrefix:prefix]) return nil;
|
||||
return [self substringFromIndex:[prefix length]];
|
||||
if (prefix.length > 0 && ![self hasPrefix:prefix]) return nil;
|
||||
return [self substringFromIndex:prefix.length];
|
||||
}
|
||||
-(NSData*) decodedAsJsonIntoData {
|
||||
NSError* jsonParseError = nil;
|
||||
|
@ -93,11 +93,11 @@
|
|||
|
||||
// Determine amount of information (based on length and padding)
|
||||
NSUInteger paddingCount = 0;
|
||||
while (paddingCount < 2 && paddingCount < [self length] - 1 && [self characterAtIndex:[self length] - paddingCount - 1] == '=') {
|
||||
while (paddingCount < 2 && paddingCount < self.length - 1 && [self characterAtIndex:self.length - paddingCount - 1] == '=') {
|
||||
paddingCount += 1;
|
||||
}
|
||||
NSUInteger base64WordCount = [self length] - paddingCount;
|
||||
NSUInteger bitCount = [self length]*BitsPerBase64Word - paddingCount*BitsPerByte;
|
||||
NSUInteger base64WordCount = self.length - paddingCount;
|
||||
NSUInteger bitCount = self.length*BitsPerBase64Word - paddingCount*BitsPerByte;
|
||||
NSUInteger byteCount = bitCount / BitsPerByte;
|
||||
checkOperation(bitCount % BitsPerByte == 0);
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
@implementation Zid
|
||||
+(Zid*) zidWithData:(NSData*)zidData {
|
||||
require(zidData != nil);
|
||||
require([zidData length] == 12);
|
||||
require(zidData.length == 12);
|
||||
Zid* s = [Zid new];
|
||||
s->data = zidData;
|
||||
return s;
|
||||
|
|
|
@ -15,10 +15,10 @@
|
|||
|
||||
-(void) enqueueData:(NSData*)data {
|
||||
require(data != nil);
|
||||
if([data length] == 0) return;
|
||||
if(data.length == 0) return;
|
||||
|
||||
NSUInteger incomingDataLength = [data length];
|
||||
NSUInteger bufferCapacity = [buffer length];
|
||||
NSUInteger incomingDataLength = data.length;
|
||||
NSUInteger bufferCapacity = buffer.length;
|
||||
NSUInteger writeOffset = (readOffset + count) % bufferCapacity;
|
||||
NSUInteger bufferSpaceAvailable = bufferCapacity - count;
|
||||
NSUInteger writeSlack = bufferCapacity - writeOffset;
|
||||
|
@ -45,7 +45,7 @@
|
|||
if (incomingDataLength > writeSlack) {
|
||||
[buffer replaceBytesInRange:NSMakeRange(0, incomingDataLength - writeSlack) withBytes:(uint8_t*)[data bytes] + writeSlack];
|
||||
}
|
||||
count += [data length];
|
||||
count += data.length;
|
||||
}
|
||||
|
||||
-(NSUInteger) enqueuedLength {
|
||||
|
@ -55,14 +55,14 @@
|
|||
-(void) discard:(NSUInteger)length {
|
||||
require(length <= count);
|
||||
count -= length;
|
||||
readOffset = (readOffset + length)%(unsigned int)[buffer length];
|
||||
readOffset = (readOffset + length)%(unsigned int)buffer.length;
|
||||
}
|
||||
|
||||
-(NSData*) peekDataWithLength:(NSUInteger)length{
|
||||
require(length <= count);
|
||||
if (length == 0) return [NSData data];
|
||||
|
||||
NSUInteger readSlack = [buffer length] - readOffset;
|
||||
NSUInteger readSlack = buffer.length - readOffset;
|
||||
|
||||
NSMutableData* result = [NSMutableData dataWithLength:length];
|
||||
[result replaceBytesInRange:NSMakeRange(0, MIN(readSlack, length)) withBytes:(uint8_t*)[buffer bytes] + readOffset];
|
||||
|
@ -80,7 +80,7 @@
|
|||
}
|
||||
|
||||
-(NSData*) dequeuePotentialyVolatileDataWithLength:(NSUInteger)length {
|
||||
NSUInteger readSlack = [buffer length] - readOffset;
|
||||
NSUInteger readSlack = buffer.length - readOffset;
|
||||
|
||||
if (readSlack < length) return [self dequeueDataWithLength:length];
|
||||
|
||||
|
@ -91,7 +91,7 @@
|
|||
}
|
||||
|
||||
-(NSData*) peekVolatileHeadOfData {
|
||||
NSUInteger capacity = [buffer length];
|
||||
NSUInteger capacity = buffer.length;
|
||||
NSUInteger slack = capacity - readOffset;
|
||||
return [buffer subdataVolatileWithRange:NSMakeRange(readOffset, MIN(count, slack))];
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
}
|
||||
|
||||
-(void)enqueue:(id)item {
|
||||
NSUInteger curIndex = [items count];
|
||||
NSUInteger curIndex = items.count;
|
||||
[items addObject:item];
|
||||
while (curIndex > 0) {
|
||||
NSUInteger parentIndex = (curIndex - 1) >> 1;
|
||||
|
@ -26,16 +26,16 @@
|
|||
}
|
||||
|
||||
-(id)peek {
|
||||
requireState([items count] > 0);
|
||||
requireState(items.count > 0);
|
||||
return items[0];
|
||||
}
|
||||
|
||||
-(id) dequeue {
|
||||
requireState([items count] > 0);
|
||||
requireState(items.count > 0);
|
||||
id result = items[0];
|
||||
|
||||
// iteratively pull up smaller child until we hit the bottom of the heap
|
||||
NSUInteger endangeredIndex = [items count] - 1;
|
||||
NSUInteger endangeredIndex = items.count - 1;
|
||||
id endangeredItem = items[endangeredIndex];
|
||||
NSUInteger i = 0;
|
||||
while (true) {
|
||||
|
@ -60,7 +60,7 @@
|
|||
}
|
||||
|
||||
-(NSUInteger) count {
|
||||
return [items count];
|
||||
return items.count;
|
||||
}
|
||||
@end
|
||||
|
||||
|
|
|
@ -14,24 +14,24 @@
|
|||
[items addObject:item];
|
||||
}
|
||||
-(id) tryDequeue {
|
||||
if ([self count] == 0) return nil;
|
||||
if (self.count == 0) return nil;
|
||||
return [self dequeue];
|
||||
}
|
||||
-(id) dequeue {
|
||||
requireState([self count] > 0);
|
||||
requireState(self.count > 0);
|
||||
id result = items[0];
|
||||
[items removeObjectAtIndex:0];
|
||||
return result;
|
||||
}
|
||||
-(id) peek {
|
||||
requireState([self count] > 0);
|
||||
requireState(self.count > 0);
|
||||
return items[0];
|
||||
}
|
||||
-(id) peekAt:(NSUInteger)offset {
|
||||
require(offset < [self count]);
|
||||
require(offset < self.count);
|
||||
return items[offset];
|
||||
}
|
||||
-(NSUInteger) count {
|
||||
return [items count];
|
||||
return items.count;
|
||||
}
|
||||
@end
|
||||
|
|
|
@ -87,7 +87,7 @@ typedef NSComparisonResult (^CallComparator)(RecentCall*, RecentCall*);
|
|||
#pragma mark - UITableViewDelegate
|
||||
|
||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
|
||||
return (NSInteger)[_recents count];
|
||||
return (NSInteger)_recents.count;
|
||||
}
|
||||
|
||||
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
|
|
|
@ -53,7 +53,7 @@ static NSString *const FAVOURITE_FALSE_ICON_NAME = @"favourite_false_icon";
|
|||
}
|
||||
|
||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
|
||||
NSInteger secureNumberCount = (NSInteger)[_contact.userTextPhoneNumbers count] + (NSInteger)[_contact.emails count];
|
||||
NSInteger secureNumberCount = (NSInteger)_contact.userTextPhoneNumbers.count + (NSInteger)_contact.emails.count;
|
||||
return _contact.notes != nil ? secureNumberCount + 1 : secureNumberCount;
|
||||
}
|
||||
|
||||
|
@ -65,15 +65,15 @@ static NSString *const FAVOURITE_FALSE_ICON_NAME = @"favourite_false_icon";
|
|||
reuseIdentifier:DETAIL_TABLE_CELL_IDENTIFIER];
|
||||
}
|
||||
|
||||
if ((NSUInteger)indexPath.row < [_contact.userTextPhoneNumbers count]) {
|
||||
if ((NSUInteger)indexPath.row < _contact.userTextPhoneNumbers.count) {
|
||||
|
||||
PhoneNumber *phoneNumber = [PhoneNumber tryParsePhoneNumberFromUserSpecifiedText:_contact.userTextPhoneNumbers[(NSUInteger)indexPath.row]];
|
||||
BOOL isSecure = [[[[Environment getCurrent] phoneDirectoryManager] getCurrentFilter] containsPhoneNumber:phoneNumber];
|
||||
[cell configureWithPhoneNumber:phoneNumber isSecure:isSecure];
|
||||
|
||||
} else if ((NSUInteger)indexPath.row < [_contact.userTextPhoneNumbers count] + [_contact.emails count]) {
|
||||
} else if ((NSUInteger)indexPath.row < _contact.userTextPhoneNumbers.count + _contact.emails.count) {
|
||||
|
||||
NSUInteger emailIndex = (NSUInteger)indexPath.row - [_contact.userTextPhoneNumbers count];
|
||||
NSUInteger emailIndex = (NSUInteger)indexPath.row - _contact.userTextPhoneNumbers.count;
|
||||
[cell configureWithEmailString:_contact.emails[emailIndex]];
|
||||
|
||||
} else {
|
||||
|
@ -99,8 +99,8 @@ static NSString *const FAVOURITE_FALSE_ICON_NAME = @"favourite_false_icon";
|
|||
[self openPhoneAppWithPhoneNumber:number];
|
||||
}
|
||||
|
||||
} else if ((NSUInteger)indexPath.row < [_contact.userTextPhoneNumbers count] + [_contact.emails count]) {
|
||||
NSUInteger emailIndex = (NSUInteger)indexPath.row - [_contact.userTextPhoneNumbers count];
|
||||
} else if ((NSUInteger)indexPath.row < _contact.userTextPhoneNumbers.count + _contact.emails.count) {
|
||||
NSUInteger emailIndex = (NSUInteger)indexPath.row - _contact.userTextPhoneNumbers.count;
|
||||
[self openEmailAppWithEmail:_contact.emails[emailIndex]];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,7 +34,7 @@ static NSString *const CONTRY_CODE_TABLE_CELL_IDENTIFIER = @"CountryCodeTableVie
|
|||
#pragma mark - UITableViewDelegate
|
||||
|
||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
|
||||
return (NSInteger)[_countryCodes count];
|
||||
return (NSInteger)_countryCodes.count;
|
||||
}
|
||||
|
||||
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
|
|
|
@ -95,7 +95,7 @@
|
|||
}
|
||||
|
||||
- (void)removeLastDigit {
|
||||
NSUInteger n = [_currentNumberMutable length];
|
||||
NSUInteger n = _currentNumberMutable.length;
|
||||
if (n > 0) {
|
||||
[_currentNumberMutable deleteCharactersInRange:NSMakeRange(n - 1, 1)];
|
||||
}
|
||||
|
@ -134,7 +134,7 @@
|
|||
- (PhoneNumber *)phoneNumberForCurrentInput {
|
||||
NSString *numberText = [_currentNumberMutable copy];
|
||||
|
||||
if ([numberText length]> 0 && [[numberText substringToIndex:1] isEqualToString:COUNTRY_CODE_PREFIX]) {
|
||||
if (numberText.length> 0 && [[numberText substringToIndex:1] isEqualToString:COUNTRY_CODE_PREFIX]) {
|
||||
return [PhoneNumber tryParsePhoneNumberFromE164:numberText];
|
||||
} else {
|
||||
return [PhoneNumber tryParsePhoneNumberFromUserSpecifiedText:numberText];
|
||||
|
|
|
@ -53,7 +53,7 @@ static NSString *const CONTACT_TABLE_VIEW_CELL_IDENTIFIER = @"ContactTableViewCe
|
|||
}
|
||||
|
||||
- (void)hideTableViewIfNoFavourites {
|
||||
BOOL hideFavourites = [_favourites count] == 0;
|
||||
BOOL hideFavourites = _favourites.count == 0;
|
||||
_favouriteTableView.hidden = hideFavourites;
|
||||
}
|
||||
|
||||
|
@ -95,7 +95,7 @@ static NSString *const CONTACT_TABLE_VIEW_CELL_IDENTIFIER = @"ContactTableViewCe
|
|||
#pragma mark - UITableViewDelegate
|
||||
|
||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
|
||||
return _isSearching ? (NSInteger)[_searchFavourites count] : (NSInteger)[_favourites count];
|
||||
return _isSearching ? (NSInteger)_searchFavourites.count : (NSInteger)_favourites.count;
|
||||
}
|
||||
|
||||
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
|
@ -142,7 +142,7 @@ static NSString *const CONTACT_TABLE_VIEW_CELL_IDENTIFIER = @"ContactTableViewCe
|
|||
|
||||
- (NSArray *)favouritesForSearchTerm:(NSString *)searchTerm {
|
||||
return [_favourites filter:^int(Contact *contact) {
|
||||
return [searchTerm length] == 0 || [ContactsManager name:[contact fullName] matchesQuery:searchTerm];
|
||||
return searchTerm.length == 0 || [ContactsManager name:[contact fullName] matchesQuery:searchTerm];
|
||||
}];
|
||||
}
|
||||
|
||||
|
|
|
@ -210,14 +210,14 @@ static NSString *const FOOTER_TABLE_CELL_IDENTIFIER = @"InboxFeedFooterCell";
|
|||
|
||||
if (_isSearching) {
|
||||
if (section == SEARCH_TABLE_SECTION_FEED) {
|
||||
return (NSInteger)[_searchInboxFeed count];
|
||||
return (NSInteger)_searchInboxFeed.count;
|
||||
} else if (section == SEARCH_TABLE_SECTION_REGISTERED) {
|
||||
return (NSInteger)[_searchRegisteredContacts count];
|
||||
return (NSInteger)_searchRegisteredContacts.count;
|
||||
} else {
|
||||
return (NSInteger)[_searchUnregisteredContacts count];
|
||||
return (NSInteger)_searchUnregisteredContacts.count;
|
||||
}
|
||||
} else {
|
||||
NSInteger inboxFeedAndInfoCellCount = (NSInteger)[_inboxFeed count] + 1;
|
||||
NSInteger inboxFeedAndInfoCellCount = (NSInteger)_inboxFeed.count + 1;
|
||||
return inboxFeedAndInfoCellCount;
|
||||
}
|
||||
}
|
||||
|
@ -243,7 +243,7 @@ static NSString *const FOOTER_TABLE_CELL_IDENTIFIER = @"InboxFeedFooterCell";
|
|||
[self showContactViewControllerWithContact:_searchUnregisteredContacts[(NSUInteger)indexPath.row]];
|
||||
}
|
||||
} else {
|
||||
if (indexPath.row < (NSInteger)[_inboxFeed count]) {
|
||||
if (indexPath.row < (NSInteger)_inboxFeed.count) {
|
||||
[self showRecentCallViewControllerWithRecentCall:_inboxFeed[(NSUInteger)indexPath.row]];
|
||||
}
|
||||
}
|
||||
|
@ -251,7 +251,7 @@ static NSString *const FOOTER_TABLE_CELL_IDENTIFIER = @"InboxFeedFooterCell";
|
|||
|
||||
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
if (indexPath.section == SEARCH_TABLE_SECTION_FEED) {
|
||||
if ((NSUInteger)indexPath.row == [_inboxFeed count]) {
|
||||
if ((NSUInteger)indexPath.row == _inboxFeed.count) {
|
||||
return FOOTER_CELL_HEIGHT;
|
||||
} else {
|
||||
return INBOX_TABLE_VIEW_CELL_HEIGHT;
|
||||
|
@ -272,7 +272,7 @@ static NSString *const FOOTER_TABLE_CELL_IDENTIFIER = @"InboxFeedFooterCell";
|
|||
}
|
||||
|
||||
- (UITableViewCell *)inboxFeedCellForIndexPath:(NSIndexPath *)indexPath {
|
||||
if (!_isSearching && (NSUInteger)[indexPath row] == [_inboxFeed count]) {
|
||||
if (!_isSearching && (NSUInteger)[indexPath row] == _inboxFeed.count) {
|
||||
return [self inboxFeedFooterCell];
|
||||
} else {
|
||||
return [self inboxCellForIndexPath:indexPath andIsSearching:NO];
|
||||
|
@ -339,7 +339,7 @@ static NSString *const FOOTER_TABLE_CELL_IDENTIFIER = @"InboxFeedFooterCell";
|
|||
#pragma mark - SearchBarTitleViewDelegate
|
||||
|
||||
- (void)searchBarTitleView:(SearchBarTitleView *)view didSearchForTerm:(NSString *)term {
|
||||
BOOL searching = [term length] > 0;
|
||||
BOOL searching = term.length > 0;
|
||||
_isSearching = searching;
|
||||
|
||||
if (searching) {
|
||||
|
|
|
@ -118,7 +118,7 @@ static NSString *const INVITE_CONTACTS_TABLE_CELL_IDENTIFIER = @"ContactTableVie
|
|||
|
||||
NSMutableArray *indexPaths = [NSMutableArray array];
|
||||
|
||||
for (int i = 0; i < (NSInteger)[_newWhisperUsers count]; i++) {
|
||||
for (int i = 0; i < (NSInteger)_newWhisperUsers.count; i++) {
|
||||
[indexPaths addObject:[NSIndexPath indexPathForRow:i inSection:FIRST_TABLE_SECTION]];
|
||||
}
|
||||
[_contactTableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];
|
||||
|
@ -139,9 +139,9 @@ static NSString *const INVITE_CONTACTS_TABLE_CELL_IDENTIFIER = @"ContactTableVie
|
|||
|
||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
|
||||
if (section == FIRST_TABLE_SECTION) {
|
||||
return _isSearching ? 0 : (NSInteger)[_newWhisperUsers count];
|
||||
return _isSearching ? 0 : (NSInteger)_newWhisperUsers.count;
|
||||
} else {
|
||||
return (NSInteger)[_displayedContacts count];
|
||||
return (NSInteger)_displayedContacts.count;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -187,7 +187,7 @@ static NSString *const INVITE_CONTACTS_TABLE_CELL_IDENTIFIER = @"ContactTableVie
|
|||
}
|
||||
|
||||
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
|
||||
if (section == FIRST_TABLE_SECTION && !_isSearching && [_newWhisperUsers count] > 0) {
|
||||
if (section == FIRST_TABLE_SECTION && !_isSearching && _newWhisperUsers.count > 0) {
|
||||
return _unseenWhisperUsersHeaderView;
|
||||
} else if (section == SECOND_TABLE_SECTION) {
|
||||
return _regularContactsHeaderView;
|
||||
|
@ -197,7 +197,7 @@ static NSString *const INVITE_CONTACTS_TABLE_CELL_IDENTIFIER = @"ContactTableVie
|
|||
}
|
||||
|
||||
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
|
||||
if (_isSearching || ([_newWhisperUsers count] == 0 && section == FIRST_TABLE_SECTION)) {
|
||||
if (_isSearching || (_newWhisperUsers.count == 0 && section == FIRST_TABLE_SECTION)) {
|
||||
return 0.0f;
|
||||
} else {
|
||||
|
||||
|
|
|
@ -159,9 +159,9 @@ static NSString *WHISPER_SYSTEMS_BUGREPORT_URL = @"http://support.whispersystems
|
|||
|
||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
|
||||
if (section == FIRST_SECTION_INDEX) {
|
||||
return (NSInteger)[_firstSectionOptions count];
|
||||
return (NSInteger)_firstSectionOptions.count;
|
||||
} else {
|
||||
return (NSInteger)[_secondSectionOptions count];
|
||||
return (NSInteger)_secondSectionOptions.count;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -69,7 +69,7 @@
|
|||
|
||||
- (void)setPlaceholderTextColor:(UIColor *)color {
|
||||
NSAttributedString *placeholder = _phoneNumberTextField.attributedPlaceholder;
|
||||
if ([placeholder length]) {
|
||||
if (placeholder.length) {
|
||||
NSDictionary * attributes = [placeholder attributesAtIndex:0
|
||||
effectiveRange:NULL];
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@ static NSString *const CHECKBOX_EMPTY_IMAGE_NAME = @"checkbox_empty";
|
|||
- (void)viewWillDisappear:(BOOL)animated {
|
||||
[self saveExpandedSectionPreferences];
|
||||
|
||||
if ([self.navigationController.viewControllers count] > 1) {
|
||||
if (self.navigationController.viewControllers.count > 1) {
|
||||
[self.navigationController setNavigationBarHidden:NO animated:YES];
|
||||
}
|
||||
|
||||
|
@ -85,11 +85,11 @@ static NSString *const CHECKBOX_EMPTY_IMAGE_NAME = @"checkbox_empty";
|
|||
|
||||
[attributedString addAttribute:NSFontAttributeName
|
||||
value:prefixFont
|
||||
range:NSMakeRange(0, [numberPrefixString length])];
|
||||
range:NSMakeRange(0, numberPrefixString.length)];
|
||||
|
||||
[attributedString addAttribute:NSFontAttributeName
|
||||
value:numberFont
|
||||
range:NSMakeRange([numberPrefixString length] + 1, [localNumberString length])];
|
||||
range:NSMakeRange(numberPrefixString.length + 1, localNumberString.length)];
|
||||
return attributedString;
|
||||
}
|
||||
|
||||
|
@ -155,7 +155,7 @@ static NSString *const CHECKBOX_EMPTY_IMAGE_NAME = @"checkbox_empty";
|
|||
|
||||
- (NSArray *)indexPathsForCells:(NSArray *)cells forRow:(NSInteger)row {
|
||||
NSMutableArray *indexPaths = [NSMutableArray array];
|
||||
for (NSUInteger i = 0; i < [cells count]; i++) {
|
||||
for (NSUInteger i = 0; i < cells.count; i++) {
|
||||
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:(NSInteger)i inSection:row];
|
||||
[indexPaths addObject:indexPath];
|
||||
}
|
||||
|
@ -255,7 +255,7 @@ static NSString *const CHECKBOX_EMPTY_IMAGE_NAME = @"checkbox_empty";
|
|||
#pragma mark - UITableViewDelegate
|
||||
|
||||
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
|
||||
return (NSInteger)[_sectionHeaderViews count];
|
||||
return (NSInteger)_sectionHeaderViews.count;
|
||||
}
|
||||
|
||||
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
|
||||
|
@ -269,9 +269,9 @@ static NSString *const CHECKBOX_EMPTY_IMAGE_NAME = @"checkbox_empty";
|
|||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
|
||||
UIView *headerView = _sectionHeaderViews[(NSUInteger)section];
|
||||
if (headerView == _privacyAndSecurityHeaderView) {
|
||||
return (NSInteger)[_privacyTableViewCells count];
|
||||
return (NSInteger)_privacyTableViewCells.count;
|
||||
} else if (headerView == _debuggingHeaderView){
|
||||
return (NSInteger)[_debuggingTableViewCells count];
|
||||
return (NSInteger)_debuggingTableViewCells.count;
|
||||
}else {
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -80,19 +80,19 @@
|
|||
|
||||
[attributedString addAttribute:NSForegroundColorAttributeName
|
||||
value:[UIColor darkGrayColor]
|
||||
range:NSMakeRange(0, [timeString length])];
|
||||
range:NSMakeRange(0, timeString.length)];
|
||||
|
||||
[attributedString addAttribute:NSForegroundColorAttributeName
|
||||
value:[UIUtil darkBackgroundColor]
|
||||
range:NSMakeRange([timeString length],[dateString length])];
|
||||
range:NSMakeRange(timeString.length,dateString.length)];
|
||||
|
||||
[attributedString addAttribute:NSFontAttributeName
|
||||
value:[UIUtil helveticaLightWithSize:TIME_LABEL_SIZE]
|
||||
range:NSMakeRange(0, [timeString length])];
|
||||
range:NSMakeRange(0, timeString.length)];
|
||||
|
||||
[attributedString addAttribute:NSFontAttributeName
|
||||
value:[UIUtil helveticaRegularWithSize:DATE_LABEL_SIZE]
|
||||
range:NSMakeRange([timeString length],[dateString length])];
|
||||
range:NSMakeRange(timeString.length,dateString.length)];
|
||||
|
||||
return attributedString;
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
NSData* inputData = sineWave(freq, 8000, 8000);
|
||||
NSData* outputData = [a stretchAudioData:inputData stretchFactor:stretch];
|
||||
NSUInteger outputSampleCount = [outputData length]/sizeof(int16_t);
|
||||
NSUInteger outputSampleCount = outputData.length/sizeof(int16_t);
|
||||
if ([s doubleValue] == 1) {
|
||||
test([inputData isEqualToData:outputData]);
|
||||
}
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
#import "DiscardingLog.h"
|
||||
#import "Queue.h"
|
||||
|
||||
#define testLoggedNothing(q) test([q->messageQueue count] == 0)
|
||||
#define testLogged(q, s) test([q->messageQueue count] > 0 && [s isEqualToString:[q->messageQueue dequeue]])
|
||||
#define testLoggedNothing(q) test(q->messageQueue.count == 0)
|
||||
#define testLogged(q, s) test(q->messageQueue.count > 0 && [s isEqualToString:[q->messageQueue dequeue]])
|
||||
#define testLoggedArrival(q, n) testLogged(q, ([NSString stringWithFormat:@"%d", n]))
|
||||
#define testLoggedBadArrival(q, sequenceNumber, arrivalType) testLogged(q, ([NSString stringWithFormat:@"bad +%d: %d", sequenceNumber, arrivalType]))
|
||||
#define testLoggedBadDequeueOfType(q, type) testLogged(q, ([NSString stringWithFormat:@"-%d", type]))
|
||||
|
@ -26,18 +26,18 @@
|
|||
JitterQueue* r2 = [JitterQueue jitterQueue];
|
||||
|
||||
EncodedAudioPacket* q1 = [EncodedAudioPacket encodedAudioPacketWithAudioData:[NSData dataWithLength:1] andSequenceNumber:100];
|
||||
test([r1 count] == 0);
|
||||
test(r1.count == 0);
|
||||
test([r1 tryEnqueue:q1]);
|
||||
test([r1 count] == 1);
|
||||
test(r1.count == 1);
|
||||
test([r1 tryDequeue] == q1);
|
||||
test([r1 count] == 0);
|
||||
test(r1.count == 0);
|
||||
|
||||
EncodedAudioPacket* q2 = [EncodedAudioPacket encodedAudioPacketWithAudioData:[NSData dataWithLength:1] andSequenceNumber:0xFF00];
|
||||
test([r2 count] == 0);
|
||||
test(r2.count == 0);
|
||||
test([r2 tryEnqueue:q2]);
|
||||
test([r2 count] == 1);
|
||||
test(r2.count == 1);
|
||||
test([r2 tryDequeue] == q2);
|
||||
test([r2 count] == 0);
|
||||
test(r2.count == 0);
|
||||
}
|
||||
-(void) testJitterAdvances {
|
||||
JitterQueue* r = [JitterQueue jitterQueue];
|
||||
|
@ -45,12 +45,12 @@
|
|||
for (uint16_t i = 0; i < 10; i++) {
|
||||
EncodedAudioPacket* q = [EncodedAudioPacket encodedAudioPacketWithAudioData:[NSData dataWithLength:1] andSequenceNumber:i];
|
||||
test([r tryEnqueue:q]);
|
||||
test([r count] == i+1);
|
||||
test(r.count == i+1);
|
||||
}
|
||||
|
||||
for (uint16_t i = 0; i < 10; i++) {
|
||||
test([[r tryDequeue] sequenceNumber] == i);
|
||||
test([r count] == 9-i);
|
||||
test(r.count == 9-i);
|
||||
}
|
||||
test([r tryDequeue] == nil);
|
||||
}
|
||||
|
|
|
@ -11,20 +11,20 @@
|
|||
-(void) testSpeexConstantBitRate {
|
||||
NSMutableData* x1 = [NSMutableData dataWithLength:320];
|
||||
NSMutableData* x2 = [NSMutableData dataWithLength:320];
|
||||
for (NSUInteger i = 0; i < [x2 length]; i++) {
|
||||
for (NSUInteger i = 0; i < x2.length; i++) {
|
||||
[x2 setUint8At:i to:(uint8_t)(i & 255)];
|
||||
}
|
||||
|
||||
SpeexCodec* c = [SpeexCodec speexCodec];
|
||||
NSData* e100 = [c encode:x1];
|
||||
NSData* e200 = [c encode:x2];
|
||||
test([e200 length] == [e100 length]);
|
||||
test(e200.length == e100.length);
|
||||
}
|
||||
|
||||
-(void) testSpeexRoundTripMaintainsLength {
|
||||
NSMutableData* x1 = [NSMutableData dataWithLength:320];
|
||||
NSMutableData* x2 = [NSMutableData dataWithLength:320];
|
||||
for (NSUInteger i = 0; i < [x2 length]; i++) {
|
||||
for (NSUInteger i = 0; i < x2.length; i++) {
|
||||
[x2 setUint8At:i to:(uint8_t)(i & 255)];
|
||||
}
|
||||
|
||||
|
@ -33,7 +33,7 @@
|
|||
NSData* e200 = [c encode:x2];
|
||||
NSData* d100 = [c decode:e100];
|
||||
NSData* d200 = [c decode:e200];
|
||||
test([d100 length] == [x1 length]);
|
||||
test([d200 length] == [x2 length]);
|
||||
test(d100.length == x1.length);
|
||||
test(d200.length == x2.length);
|
||||
}
|
||||
@end
|
||||
|
|
|
@ -78,7 +78,7 @@
|
|||
-(void) testSockaddrDataIpv4 {
|
||||
NSData* d = [[IpAddress ipAddressFromString:@"4.5.6.7"] sockaddrDataWithPort:5];
|
||||
struct sockaddr_in s;
|
||||
test([d length] >= sizeof(struct sockaddr_in));
|
||||
test(d.length >= sizeof(struct sockaddr_in));
|
||||
memcpy(&s, [d bytes], sizeof(struct sockaddr_in));
|
||||
test(s.sin_port == ntohs(5));
|
||||
test(s.sin_family == AF_INET);
|
||||
|
@ -87,7 +87,7 @@
|
|||
-(void) testSockaddrDataIpv6 {
|
||||
NSData* d = [[IpAddress ipAddressFromString:@"2001:0db8:85a3:0000:0000:8a2e:0370:7334"] sockaddrDataWithPort:5];
|
||||
struct sockaddr_in6 s;
|
||||
test([d length] >= sizeof(struct sockaddr_in6));
|
||||
test(d.length >= sizeof(struct sockaddr_in6));
|
||||
memcpy(&s, [d bytes], sizeof(struct sockaddr_in6));
|
||||
test(s.sin6_port == ntohs(5));
|
||||
test(s.sin6_family == AF_INET6);
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
__block bool failed = false;
|
||||
[sender startWithHandler:[PacketHandler packetHandler:^(NSData* packet) {
|
||||
// there's a length check here because when the destination is unreachable the sender sometimes gets a superfluous empty data callback... no idea why.
|
||||
senderReceivedData |= [packet length] > 0;
|
||||
senderReceivedData |= packet.length > 0;
|
||||
} withErrorHandler:^(id error, id relatedInfo, bool causedTermination) {
|
||||
failed = true;
|
||||
}] untilCancelled:[senderLife getToken]];
|
||||
|
@ -91,7 +91,7 @@
|
|||
onPort:[receiver localPort]]];
|
||||
[sender startWithHandler:[PacketHandler packetHandler:^(NSData* packet) {
|
||||
// there's a length check here because when the destination is unreachable the sender sometimes gets a superfluous empty data callback... no idea why.
|
||||
senderReceivedData |= [packet length] > 0;
|
||||
senderReceivedData |= packet.length > 0;
|
||||
} withErrorHandler:^(id error, id relatedInfo, bool causedTermination) {
|
||||
failed = true;
|
||||
}] untilCancelled:[senderLife getToken]];
|
||||
|
@ -130,7 +130,7 @@
|
|||
UdpSocket* listener = [UdpSocket udpSocketToFirstSenderOnLocalPort:port];
|
||||
[listener startWithHandler:[PacketHandler packetHandler:^(NSData* packet) {
|
||||
listenerReceiveCount += 1;
|
||||
listenerReceiveLength += [packet length];
|
||||
listenerReceiveLength += packet.length;
|
||||
listenerReceivedLast = packet;
|
||||
} withErrorHandler:^(id error, id relatedInfo, bool causedTermination) {
|
||||
test(false);
|
||||
|
@ -140,7 +140,7 @@
|
|||
UdpSocket* client = [UdpSocket udpSocketTo:e];
|
||||
[client startWithHandler:[PacketHandler packetHandler:^(NSData* packet) {
|
||||
clientReceiveCount += 1;
|
||||
clientReceiveLength += [packet length];
|
||||
clientReceiveLength += packet.length;
|
||||
clientReceivedLast = packet;
|
||||
} withErrorHandler:^(id error, id relatedInfo, bool causedTermination) {
|
||||
test(false);
|
||||
|
|
|
@ -42,9 +42,9 @@
|
|||
NSData* key =[@"2b7e151628aed2a6abf7158809cf4f3c" decodedAsHexString];
|
||||
|
||||
NSData* cipher = [plain encryptWithAesInCipherBlockChainingModeWithPkcs7PaddingWithKey:key andIv:iv];
|
||||
test([cipher length] % 16 == 0);
|
||||
test(cipher.length % 16 == 0);
|
||||
NSData* replain = [cipher decryptWithAesInCipherBlockChainingModeWithPkcs7PaddingWithKey:key andIv:iv];
|
||||
test([plain length] == [replain length]);
|
||||
test(plain.length == replain.length);
|
||||
}
|
||||
-(void) testKnownSha256 {
|
||||
char* valText = "The quick brown fox jumps over the lazy dog";
|
||||
|
@ -58,7 +58,7 @@
|
|||
NSData* d2 = [CryptoTools generateSecureRandomData:8];
|
||||
|
||||
test(5 == [[CryptoTools generateSecureRandomData:5] length]);
|
||||
test(8 == [d length]);
|
||||
test(8 == d.length);
|
||||
|
||||
// extremely unlikely to fail if any reasonable amount of entropy is going into d and d2
|
||||
test(![d isEqualToData:d2]);
|
||||
|
|
|
@ -50,14 +50,14 @@ NSArray* Permutations(NSUInteger count) {
|
|||
return (NSComparisonResult)NSOrderedSame;
|
||||
}
|
||||
}];
|
||||
test([q count] == 0);
|
||||
test(q.count == 0);
|
||||
testThrows([q peek]);
|
||||
testThrows([q dequeue]);
|
||||
|
||||
[q enqueue:@1];
|
||||
[q enqueue:@2];
|
||||
[q enqueue:@3];
|
||||
test([q count] == 3);
|
||||
test(q.count == 3);
|
||||
test([[q peek] intValue] == 1);
|
||||
test([[q dequeue] intValue] == 1);
|
||||
test([[q peek] intValue] == 2);
|
||||
|
@ -105,10 +105,10 @@ NSArray* Permutations(NSUInteger count) {
|
|||
|
||||
// dequeues in order
|
||||
for (NSUInteger i = 0; i < N; i++) {
|
||||
test([q count] == N - i);
|
||||
test(q.count == N - i);
|
||||
test([[q dequeue] unsignedIntegerValue] == i);
|
||||
}
|
||||
test([q count] == 0);
|
||||
test(q.count == 0);
|
||||
}
|
||||
}
|
||||
-(void) testSortsRandomLargePermutations {
|
||||
|
@ -132,10 +132,10 @@ NSArray* Permutations(NSUInteger count) {
|
|||
|
||||
// dequeues in order
|
||||
for (NSUInteger i = 0; i < Size; i++) {
|
||||
test([q count] == Size - i);
|
||||
test(q.count == Size - i);
|
||||
test([[q dequeue] unsignedIntegerValue] == i);
|
||||
}
|
||||
test([q count] == 0);
|
||||
test(q.count == 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,24 +6,24 @@
|
|||
|
||||
-(void) queueTest {
|
||||
Queue* q = [Queue new];
|
||||
test([q count] == 0);
|
||||
test(q.count == 0);
|
||||
testThrows([q peek]);
|
||||
testThrows([q dequeue]);
|
||||
|
||||
[q enqueue:@5];
|
||||
test([q count] == 1);
|
||||
test(q.count == 1);
|
||||
test([[q peek] isEqualToNumber:@5]);
|
||||
|
||||
[q enqueue:@23];
|
||||
test([q count] == 2);
|
||||
test(q.count == 2);
|
||||
test([[q peek] isEqualToNumber:@5]);
|
||||
|
||||
test([[q dequeue] isEqualToNumber:@5]);
|
||||
test([q count] == 1);
|
||||
test(q.count == 1);
|
||||
test([[q peek] isEqualToNumber:@23]);
|
||||
|
||||
test([[q dequeue] isEqualToNumber:@23]);
|
||||
test([q count] == 0);
|
||||
test(q.count == 0);
|
||||
testThrows([q peek]);
|
||||
testThrows([q dequeue]);
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
test([[(@[]) toUint8Data] length] == 0);
|
||||
|
||||
NSData* d = [@[@0, @1] toUint8Data];
|
||||
test([d length] == 2);
|
||||
test(d.length == 2);
|
||||
test(((uint8_t*)[d bytes])[0] == 0);
|
||||
test(((uint8_t*)[d bytes])[1] == 1);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue