00001
00002
00003
00004
00005
00006
00007
00008
00009 #import <Cocoa/Cocoa.h>
00010
00011 @class HFByteSlice, HFProgressTracker, HFFileReference;
00012
00029 enum
00030 {
00031 HFHexDataStringType,
00032 HFASCIIDataStringType
00033 };
00034 typedef NSUInteger HFByteArrayDataStringType;
00035
00036 @interface HFByteArray : NSObject <NSCopying, NSMutableCopying> {
00037 @private
00038 NSUInteger changeLockCounter;
00039 NSUInteger changeGenerationCount;
00040 }
00041
00045
00047 - (unsigned long long)length;
00048
00050 - (void)copyBytes:(unsigned char *)dst range:(HFRange)range;
00052
00058 - (NSArray *)byteSlices;
00059
00061 - (NSEnumerator *)byteSliceEnumerator;
00063
00069 - (void)insertByteSlice:(HFByteSlice *)slice inRange:(HFRange)lrange;
00070
00072 - (void)insertByteArray:(HFByteArray *)array inRange:(HFRange)lrange;
00073
00075 - (void)deleteBytesInRange:(HFRange)range;
00076
00078 - (HFByteArray *)subarrayWithRange:(HFRange)range;
00080
00085
00087 - (void)incrementChangeLockCounter;
00088
00090 - (void)decrementChangeLockCounter;
00091
00093 - (BOOL)changesAreLocked;
00095
00096
00097
00098
00101 - (void)incrementGenerationOrRaiseIfLockedForSelector:(SEL)sel;
00102
00104 - (NSUInteger)changeGenerationCount;
00105
00107
00108
00109
00120 - (unsigned long long)indexOfBytesEqualToBytes:(HFByteArray *)findBytes inRange:(HFRange)range searchingForwards:(BOOL)forwards trackingProgress:(HFProgressTracker *)progressTracker;
00122
00123 @end
00124
00125
00129 @interface HFByteArray (HFFileWriting)
00130
00131
00132
00133
00134
00135
00136 - (BOOL)writeToFile:(NSURL *)targetURL trackingProgress:(HFProgressTracker *)progressTracker error:(NSError **)error;
00137
00142 - (NSArray *)rangesOfFileModifiedIfSavedToFile:(HFFileReference *)reference;
00143
00149 - (BOOL)clearDependenciesOnRanges:(NSArray *)ranges inFile:(HFFileReference *)reference;
00150
00151 @end