From 169eb7e71a9b1e1c365a8f0a4bba99a62f8e3136 Mon Sep 17 00:00:00 2001 From: Said Achmiz Date: Mon, 13 Dec 2021 18:15:47 -0500 Subject: [PATCH] Add range-related utility properties/methods --- NSData+SA_NSDataExtensions.h | 11 +++++++++++ NSData+SA_NSDataExtensions.m | 24 ++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/NSData+SA_NSDataExtensions.h b/NSData+SA_NSDataExtensions.h index 3a6d898..26b5b23 100644 --- a/NSData+SA_NSDataExtensions.h +++ b/NSData+SA_NSDataExtensions.h @@ -42,6 +42,17 @@ */ @property (readonly) NSData *dataWithTerminatedCString; +/* Range manipulation. + */ + +@property (readonly) NSRange startRange; +@property (readonly) NSRange fullRange; +@property (readonly) NSRange endRange; + +-(NSRange) rangeAfterRange:(NSRange)aRange; +-(NSRange) rangeFromEndOfRange:(NSRange)aRange; +-(NSRange) rangeToEndFrom:(NSRange)aRange; + /** Returns an NSData object containing a blank C string (i.e. a byte sequence of length 1, containing the null character '\0'). */ diff --git a/NSData+SA_NSDataExtensions.m b/NSData+SA_NSDataExtensions.m index 8cfa859..4f0a2d0 100644 --- a/NSData+SA_NSDataExtensions.m +++ b/NSData+SA_NSDataExtensions.m @@ -37,6 +37,30 @@ } } +-(NSRange) startRange { + return NSMakeRange(0, 0); +} + +-(NSRange) fullRange { + return NSMakeRange(0, self.length); +} + +-(NSRange) endRange { + return NSMakeRange(self.length, 0); +} + +-(NSRange) rangeAfterRange:(NSRange)aRange { + return NSMakeRange(NSMaxRange(aRange), self.length - NSMaxRange(aRange)); +} + +-(NSRange) rangeFromEndOfRange:(NSRange)aRange { + return NSMakeRange(NSMaxRange(aRange) - 1, self.length - NSMaxRange(aRange) + 1); +} + +-(NSRange) rangeToEndFrom:(NSRange)aRange { + return NSMakeRange(aRange.location, self.length - aRange.location); +} + +(NSData *) dataWithBlankCString { return [NSData dataWithBytes:"\0" length:1];