Index: src/OFDataArray.h ================================================================== --- src/OFDataArray.h +++ src/OFDataArray.h @@ -35,10 +35,17 @@ #ifdef OF_HAVE_PROPERTIES @property (readonly) size_t count; @property (readonly) size_t itemSize; #endif +/** + * Creates a new OFDataArray with an item size of 1. + * + * \return A new autoreleased OFDataArray + */ ++ dataArray; + /** * Creates a new OFDataArray whose items all have the same size. * * \param itemSize The size of each element in the OFDataArray * \return A new autoreleased OFDataArray @@ -70,10 +77,17 @@ * \param string The string with the Base64-encoded data * \return A new autoreleased OFDataArray */ + dataArrayWithBase64EncodedString: (OFString*)string; +/** + * Initializes an already allocated OFDataArray with an item size of 1. + * + * \return A initialized OFDataArray + */ +- init; + /** * Initializes an already allocated OFDataArray whose items all have the same * size. * * \param itemSize The size of each element in the OFDataArray Index: src/OFDataArray.m ================================================================== --- src/OFDataArray.m +++ src/OFDataArray.m @@ -42,10 +42,15 @@ { _OFDataArray_Hashing_reference = 1; }; @implementation OFDataArray ++ dataArray +{ + return [[[self alloc] init] autorelease]; +} + + dataArrayWithItemSize: (size_t)itemSize { return [[[self alloc] initWithItemSize: itemSize] autorelease]; } @@ -64,31 +69,29 @@ return [[[self alloc] initWithBase64EncodedString: string] autorelease]; } - init { - Class c = isa; - [self release]; - @throw [OFNotImplementedException newWithClass: c - selector: _cmd]; + self = [super init]; + + itemSize = 1; + + return self; } - initWithItemSize: (size_t)itemSize_ { self = [super init]; - @try { - if (itemSize_ == 0) - @throw [OFInvalidArgumentException newWithClass: isa - selector: _cmd]; - - itemSize = itemSize_; - data = NULL; - } @catch (id e) { + if (itemSize_ == 0) { + Class c = isa; [self release]; - @throw e; + @throw [OFInvalidArgumentException newWithClass: c + selector: _cmd]; } + + itemSize = itemSize_; return self; } - initWithContentsOfFile: (OFString*)path Index: src/OFHTTPRequest.m ================================================================== --- src/OFHTTPRequest.m +++ src/OFHTTPRequest.m @@ -361,11 +361,11 @@ [delegate request: self didReceiveHeaders: serverHeaders withStatusCode: status]; if (storesData) - data = [OFDataArray dataArrayWithItemSize: 1]; + data = [OFDataArray dataArray]; else data = nil; buffer = [self allocMemoryWithSize: of_pagesize]; bytesReceived = 0; Index: src/OFStream.m ================================================================== --- src/OFStream.m +++ src/OFStream.m @@ -231,11 +231,11 @@ - (OFDataArray*)readDataArrayTillEndOfStream { OFDataArray *dataArray; char *buffer; - dataArray = [OFDataArray dataArrayWithItemSize: 1]; + dataArray = [OFDataArray dataArray]; buffer = [self allocMemoryWithSize: of_pagesize]; @try { while (![self isAtEndOfStream]) { size_t length; Index: tests/OFDataArrayTests.m ================================================================== --- tests/OFDataArrayTests.m +++ tests/OFDataArrayTests.m @@ -65,12 +65,12 @@ R([array[1] removeNItems: 1]) && ![array[0] isEqual: array[1]]) TEST(@"-[copy]", (array[1] = [[array[0] copy] autorelease]) && [array[0] isEqual: array[1]]) - array[2] = [OFDataArray dataArrayWithItemSize: 1]; - array[3] = [OFDataArray dataArrayWithItemSize: 1]; + array[2] = [OFDataArray dataArray]; + array[3] = [OFDataArray dataArray]; [array[2] addItem: "a"]; [array[2] addItem: "a"]; [array[3] addItem: "z"]; TEST(@"-[compare]", [array[0] compare: array[1]] == 0 && R([array[1] removeNItems: 1]) && @@ -78,11 +78,11 @@ [array[1] compare: array[0]] == OF_ORDERED_ASCENDING && [array[2] compare: array[3]] == OF_ORDERED_ASCENDING) TEST(@"-[hash]", [array[0] hash] == 0x634A529F) - array[0] = [class dataArrayWithItemSize: 1]; + array[0] = [class dataArray]; [array[0] addNItems: 6 fromCArray: "abcdef"]; TEST(@"-[removeNItems:]", R([array[0] removeNItems: 1]) && [array[0] count] == 5 && @@ -109,11 +109,11 @@ TEST(@"+[dataArrayWithBase64EncodedString:]", !memcmp([[class dataArrayWithBase64EncodedString: @"YWJjZGU="] cArray], "abcde", 5)) TEST(@"Building strings", - (array[0] = [class dataArrayWithItemSize: 1]) && + (array[0] = [class dataArray]) && R([array[0] addNItems: 6 fromCArray: (void*)str]) && R([array[0] addItem: ""]) && !strcmp([array[0] cArray], str)) EXPECT_EXCEPTION(@"Detect out of range in -[itemAtIndex:]",