47 lines
1.2 KiB
Objective-C
47 lines
1.2 KiB
Objective-C
//
|
|
// HFFullMemoryByteSlice.m
|
|
// HexFiend_2
|
|
//
|
|
// Copyright 2007 ridiculous_fish. All rights reserved.
|
|
//
|
|
|
|
#import "HFFullMemoryByteSlice.h"
|
|
|
|
|
|
@implementation HFFullMemoryByteSlice
|
|
|
|
- (instancetype)initWithData:(NSData *)val {
|
|
REQUIRE_NOT_NULL(val);
|
|
self = [super init];
|
|
data = [val copy];
|
|
return self;
|
|
}
|
|
|
|
- (void)dealloc {
|
|
[data release];
|
|
[super dealloc];
|
|
}
|
|
|
|
- (unsigned long long)length { return [data length]; }
|
|
|
|
- (void)copyBytes:(unsigned char *)dst range:(HFRange)lrange {
|
|
NSRange range;
|
|
HFASSERT(lrange.location <= NSUIntegerMax);
|
|
HFASSERT(lrange.length <= NSUIntegerMax);
|
|
HFASSERT(lrange.location + lrange.length >= lrange.location);
|
|
range.location = ll2l(lrange.location);
|
|
range.length = ll2l(lrange.length);
|
|
[data getBytes:dst range:range];
|
|
}
|
|
|
|
- (HFByteSlice *)subsliceWithRange:(HFRange)range {
|
|
HFASSERT(range.length > 0);
|
|
HFASSERT(range.location < [self length]);
|
|
HFASSERT([self length] - range.location >= range.length);
|
|
HFASSERT(range.location <= NSUIntegerMax);
|
|
HFASSERT(range.length <= NSUIntegerMax);
|
|
return [[[[self class] alloc] initWithData:[data subdataWithRange:NSMakeRange(ll2l(range.location), ll2l(range.length))]] autorelease];
|
|
}
|
|
|
|
@end
|