Overview
| Comment: | Make +[resolve{Class,Instance}Method:] return BOOL
Other runtimes expect it to be BOOL, not bool. |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
012c6b57864a78e68459d211e6fb3005 |
| User & Date: | js on 2017-05-28 11:24:35 |
| Other Links: | manifest | tags |
Context
|
2017-05-28
| ||
| 12:54 | Only use AmigaDOS directly when not using ixemul (check-in: 4258b6f227 user: js tags: trunk) | |
| 11:24 | Make +[resolve{Class,Instance}Method:] return BOOL (check-in: 012c6b5786 user: js tags: trunk) | |
| 10:29 | ofzip: Fix typo in help (check-in: f9c3b3d45f user: js tags: trunk) | |
Changes
Modified src/OFObject.h from [6e202ea9b1] to [9973173cd1].
| ︙ | ︙ | |||
585 586 587 588 589 590 591 | * @brief Try to resolve the specified class method. * * This method is called if a class method was not found, so that an * implementation can be provided at runtime. * * @return Whether the method has been added to the class */ | | | | 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 | * @brief Try to resolve the specified class method. * * This method is called if a class method was not found, so that an * implementation can be provided at runtime. * * @return Whether the method has been added to the class */ + (BOOL)resolveClassMethod: (SEL)selector; /*! * @brief Try to resolve the specified instance method. * * This method is called if an instance method was not found, so that an * implementation can be provided at runtime. * * @return Whether the method has been added to the class */ + (BOOL)resolveInstanceMethod: (SEL)selector; /*! * @brief Returns the class. * * This method exists so that classes can be used in collections requiring * conformance to the OFCopying protocol. * |
| ︙ | ︙ |
Modified src/OFObject.m from [a28a9b391e] to [a3ec40e380].
| ︙ | ︙ | |||
471 472 473 474 475 476 477 | free(methodList); } #endif [self inheritMethodsFromClass: [class superclass]]; } | | | | | | 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 |
free(methodList);
}
#endif
[self inheritMethodsFromClass: [class superclass]];
}
+ (BOOL)resolveClassMethod: (SEL)selector
{
return NO;
}
+ (BOOL)resolveInstanceMethod: (SEL)selector
{
return NO;
}
- init
{
return self;
}
|
| ︙ | ︙ |
Modified tests/ForwardingTests.m from [cf2379237f] to [505a6ff075].
| ︙ | ︙ | |||
64 65 66 67 68 69 70 |
static void
test(id self, SEL _cmd)
{
success = true;
}
@implementation ForwardingTest
| | | | | | | | 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
static void
test(id self, SEL _cmd)
{
success = true;
}
@implementation ForwardingTest
+ (BOOL)resolveClassMethod: (SEL)selector
{
forwardings++;
if (sel_isEqual(selector, @selector(test))) {
[self replaceClassMethod: @selector(test)
withImplementation: (IMP)test
typeEncoding: "v#:"];
return YES;
}
return NO;
}
+ (BOOL)resolveInstanceMethod: (SEL)selector
{
forwardings++;
if (sel_isEqual(selector, @selector(test))) {
[self replaceInstanceMethod: @selector(test)
withImplementation: (IMP)test
typeEncoding: "v@:"];
return YES;
}
return NO;
}
- (id)forwardingTargetForSelector: (SEL)selector
{
/*
* Do some useless calculations in as many registers as possible to
* check if the arguments are properly saved and restored.
|
| ︙ | ︙ |