Differences From Artifact [ff677666a5]:
- File
src/OFArray.m
— part of check-in
[4e59d2692f]
at
2014-04-26 00:40:17
on branch trunk
— Fix a few issues on LLP64 and Win64
LLP64 was mostly fast enumeration using an unsigned long for the state,
which can't store a pointer or a size_t on LLP64. This is now solved by
either throwing an OFOutOfRangeException if the value of the size_t is
bigger than ULONG_MAX or storing the pointer in the extra field (copied
using memcpy, as it's an array of unsigned long, which again would be
too small to store a pointer).Win64 was mostly Microsoft not being able to decide whether a length is
a size_t, a DWORD, an int or an unsigned int (thus the different types
in places that seem to be almost the same). But since that would not be
confusing enough, a file descriptor is an int if it's for a file, but a
long long if it is for a socket. But of course, for ReadFile and friends
it's a DWORD instead of an int then. (user: js, size: 17849) [annotate] [blame] [check-ins using]
To Artifact [1814e666e5]:
- File
src/OFArray.m
— part of check-in
[68d32a92c1]
at
2014-06-16 15:06:26
on branch trunk
— Make return type of -[OFArray objects] const
After all, this might (and does for OFArray_adjacent!) return an
internal representation that must not be changed, so changes should be
prevented at compile-time. (user: js, size: 17885) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
239 240 241 242 243 244 245 | { size_t i; for (i = 0; i < range.length; i++) buffer[i] = [self objectAtIndex: range.location + i]; } | | | 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 | { size_t i; for (i = 0; i < range.length; i++) buffer[i] = [self objectAtIndex: range.location + i]; } - (id const*)objects { OFObject *container; size_t count; id *buffer; container = [[[OFObject alloc] init] autorelease]; count = [self count]; |
︙ | ︙ | |||
394 395 396 397 398 399 400 | - (OFString*)componentsJoinedByString: (OFString*)separator usingSelector: (SEL)selector options: (int)options { void *pool; OFMutableString *ret; | | | 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 | - (OFString*)componentsJoinedByString: (OFString*)separator usingSelector: (SEL)selector options: (int)options { void *pool; OFMutableString *ret; id const *objects; size_t i, count; if (separator == nil) @throw [OFInvalidArgumentException exception]; count = [self count]; |
︙ | ︙ | |||
472 473 474 475 476 477 478 | return false; return true; } - (uint32_t)hash { | | | 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 | return false; return true; } - (uint32_t)hash { id const *objects = [self objects]; size_t i, count = [self count]; uint32_t hash; OF_HASH_INIT(hash); for (i = 0; i < count; i++) OF_HASH_ADD_HASH(hash, [objects[i] hash]); |
︙ | ︙ | |||
518 519 520 521 522 523 524 | return [ret autorelease]; } - (OFXMLElement*)XMLElementBySerializing { void *pool = objc_autoreleasePoolPush(); OFXMLElement *element; | | | 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 | return [ret autorelease]; } - (OFXMLElement*)XMLElementBySerializing { void *pool = objc_autoreleasePoolPush(); OFXMLElement *element; id <OFSerialization> const *objects = [self objects]; size_t i, count = [self count]; if ([self isKindOfClass: [OFMutableArray class]]) element = [OFXMLElement elementWithName: @"OFMutableArray" namespace: OF_SERIALIZATION_NS]; else element = [OFXMLElement elementWithName: @"OFArray" |
︙ | ︙ | |||
672 673 674 675 676 677 678 | objc_autoreleasePoolPop(pool); return data; } - (void)makeObjectsPerformSelector: (SEL)selector { | | | | 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 | objc_autoreleasePoolPop(pool); return data; } - (void)makeObjectsPerformSelector: (SEL)selector { id const *objects = [self objects]; size_t i, count = [self count]; for (i = 0; i < count; i++) [objects[i] performSelector: selector]; } - (void)makeObjectsPerformSelector: (SEL)selector withObject: (id)object { id const *objects = [self objects]; size_t i, count = [self count]; for (i = 0; i < count; i++) [objects[i] performSelector: selector withObject: object]; } |
︙ | ︙ |