diff options
author | Jay Freeman (saurik) <saurik@saurik.com> | 2011-02-24 19:03:10 -0800 |
---|---|---|
committer | Jay Freeman (saurik) <saurik@saurik.com> | 2011-03-07 02:41:17 -0800 |
commit | 7683e54de6b0c837b043edbc1bcfb3f69cd4aeeb (patch) | |
tree | 28ec5387e08a7fad38ff2a1467c3374b547dba7f /UICaboodle | |
parent | 82aa2434adc147c30430af1b376a27de10215bf2 (diff) |
Remove obsolete UCYield.h.
Diffstat (limited to 'UICaboodle')
-rw-r--r-- | UICaboodle/UCYield.h | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/UICaboodle/UCYield.h b/UICaboodle/UCYield.h deleted file mode 100644 index dc75f8f..0000000 --- a/UICaboodle/UCYield.h +++ /dev/null @@ -1,64 +0,0 @@ -@interface NSObject (UICaboodle) -- (id) yieldToSelector:(SEL)selector withObject:(id)object; -- (id) yieldToSelector:(SEL)selector; -@end - -@implementation NSObject (UICaboodle) - -- (void) doNothing { -} - -- (void) _yieldToContext:(NSMutableArray *)context { _pooled - SEL selector(reinterpret_cast<SEL>([[context objectAtIndex:0] pointerValue])); - id object([[context objectAtIndex:1] nonretainedObjectValue]); - volatile bool &stopped(*reinterpret_cast<bool *>([[context objectAtIndex:2] pointerValue])); - - /* XXX: deal with exceptions */ - id value([self performSelector:selector withObject:object]); - - NSMethodSignature *signature([self methodSignatureForSelector:selector]); - [context removeAllObjects]; - if ([signature methodReturnLength] != 0 && value != nil) - [context addObject:value]; - - stopped = true; - - [self - performSelectorOnMainThread:@selector(doNothing) - withObject:nil - waitUntilDone:NO - ]; -} - -- (id) yieldToSelector:(SEL)selector withObject:(id)object { - /*return [self performSelector:selector withObject:object];*/ - - volatile bool stopped(false); - - NSMutableArray *context([NSMutableArray arrayWithObjects: - [NSValue valueWithPointer:selector], - [NSValue valueWithNonretainedObject:object], - [NSValue valueWithPointer:const_cast<bool *>(&stopped)], - nil]); - - NSThread *thread([[[NSThread alloc] - initWithTarget:self - selector:@selector(_yieldToContext:) - object:context - ] autorelease]); - - [thread start]; - - NSRunLoop *loop([NSRunLoop currentRunLoop]); - NSDate *future([NSDate distantFuture]); - - while (!stopped && [loop runMode:NSDefaultRunLoopMode beforeDate:future]); - - return [context count] == 0 ? nil : [context objectAtIndex:0]; -} - -- (id) yieldToSelector:(SEL)selector { - return [self yieldToSelector:selector withObject:nil]; -} - -@end |