session-ios/Signal/src/util/DataUtil.h

78 lines
2.5 KiB
Objective-C

#import <Foundation/Foundation.h>
@interface NSData (Util)
-(NSString*) encodedAsHexString;
-(const void*) bytesNotNull;
+(NSData*) dataWithLength:(NSUInteger)length;
+(NSData*) dataWithSingleByte:(uint8_t)value;
/// Decodes the data as a utf-8 string.
-(NSString*) decodedAsUtf8;
/// Decodes the data as an ascii string.
/// Throws when the data contains non-ascii character data (bytes larger than 127).
-(NSString*) decodedAsAscii;
/// Decodes the data as an ascii string.
/// Replaces any bad or non-printable characters with dots.
-(NSString*) decodedAsAsciiReplacingErrorsWithDots;
/// Finds the first index where the given sub data is present.
/// Returns nil if there is no such index.
-(NSNumber*) tryFindIndexOf:(NSData*)subData;
-(NSData*) skip:(NSUInteger)offset;
-(NSData*) take:(NSUInteger)takeCount;
-(NSData*) skipLast:(NSUInteger)skipLastCount;
-(NSData*) takeLast:(NSUInteger)takeLastCount;
/// Returns an NSData referencing a subrange of another NSData.
/// Modifying the original NSData will modify the result.
/// If the original is dealloced before the result, bad things happen to you.
-(NSData*) subdataVolatileWithRange:(NSRange)range;
/// Returns an NSData referencing the end of another NSData.
/// Modifying the original NSData will modify the result.
/// If the original is dealloced before the result, bad things happen to you.
-(NSData*) skipVolatile:(NSUInteger)offset;
/// Returns an NSData referencing the start of another NSData.
/// Modifying the original NSData will modify the result.
/// If the original is dealloced before the result, bad things happen to you.
-(NSData*) takeVolatile:(NSUInteger)takeCount;
/// Returns an NSData referencing the start of another NSData.
/// Modifying the original NSData will modify the result.
/// If the original is dealloced before the result, bad things happen to you.
-(NSData*) skipLastVolatile:(NSUInteger)skipLastCount;
/// Returns an NSData referencing the end of another NSData.
/// Modifying the original NSData will modify the result.
/// If the original is dealloced before the result, bad things happen to you.
-(NSData*) takeLastVolatile:(NSUInteger)takeLastCount;
-(uint8_t) uint8At:(NSUInteger)offset;
-(uint8_t) highUint4AtByteOffset:(NSUInteger)offset;
-(uint8_t) lowUint4AtByteOffset:(NSUInteger)offset;
-(NSString*) encodedAsBase64;
@end
@interface NSMutableData (Util)
-(void) replaceBytesStartingAt:(NSUInteger)offset withData:(NSData*)data;
-(void) setUint8At:(NSUInteger)offset to:(uint8_t)newValue;
@end