@@ -29,13 +29,13 @@ #endif #import "OFInvalidArgumentException.h" @implementation OFTimer -@synthesize timeInterval = _interval, repeating = _repeats, valid = _valid; +@synthesize timeInterval = _interval, repeats = _repeats, valid = _valid; -+ (instancetype)scheduledTimerWithTimeInterval: (of_time_interval_t)timeInterval ++ (instancetype)scheduledTimerWithTimeInterval: (OFTimeInterval)timeInterval target: (id)target selector: (SEL)selector repeats: (bool)repeats { void *pool = objc_autoreleasePoolPush(); @@ -52,11 +52,11 @@ objc_autoreleasePoolPop(pool); return [timer autorelease]; } -+ (instancetype)scheduledTimerWithTimeInterval: (of_time_interval_t)timeInterval ++ (instancetype)scheduledTimerWithTimeInterval: (OFTimeInterval)timeInterval target: (id)target selector: (SEL)selector object: (id)object repeats: (bool)repeats { @@ -75,11 +75,11 @@ objc_autoreleasePoolPop(pool); return [timer autorelease]; } -+ (instancetype)scheduledTimerWithTimeInterval: (of_time_interval_t)timeInterval ++ (instancetype)scheduledTimerWithTimeInterval: (OFTimeInterval)timeInterval target: (id)target selector: (SEL)selector object: (id)object1 object: (id)object2 repeats: (bool)repeats @@ -100,11 +100,11 @@ objc_autoreleasePoolPop(pool); return [timer autorelease]; } -+ (instancetype)scheduledTimerWithTimeInterval: (of_time_interval_t)timeInterval ++ (instancetype)scheduledTimerWithTimeInterval: (OFTimeInterval)timeInterval target: (id)target selector: (SEL)selector object: (id)object1 object: (id)object2 object: (id)object3 @@ -127,11 +127,11 @@ objc_autoreleasePoolPop(pool); return [timer autorelease]; } -+ (instancetype)scheduledTimerWithTimeInterval: (of_time_interval_t)timeInterval ++ (instancetype)scheduledTimerWithTimeInterval: (OFTimeInterval)timeInterval target: (id)target selector: (SEL)selector object: (id)object1 object: (id)object2 object: (id)object3 @@ -157,13 +157,13 @@ return [timer autorelease]; } #ifdef OF_HAVE_BLOCKS -+ (instancetype)scheduledTimerWithTimeInterval: (of_time_interval_t)timeInterval ++ (instancetype)scheduledTimerWithTimeInterval: (OFTimeInterval)timeInterval repeats: (bool)repeats - block: (of_timer_block_t)block + block: (OFTimerBlock)block { void *pool = objc_autoreleasePoolPush(); OFDate *fireDate = [OFDate dateWithTimeIntervalSinceNow: timeInterval]; id timer = [[[self alloc] initWithFireDate: fireDate interval: timeInterval @@ -177,11 +177,11 @@ return [timer autorelease]; } #endif -+ (instancetype)timerWithTimeInterval: (of_time_interval_t)timeInterval ++ (instancetype)timerWithTimeInterval: (OFTimeInterval)timeInterval target: (id)target selector: (SEL)selector repeats: (bool)repeats { void *pool = objc_autoreleasePoolPush(); @@ -196,11 +196,11 @@ objc_autoreleasePoolPop(pool); return [timer autorelease]; } -+ (instancetype)timerWithTimeInterval: (of_time_interval_t)timeInterval ++ (instancetype)timerWithTimeInterval: (OFTimeInterval)timeInterval target: (id)target selector: (SEL)selector object: (id)object repeats: (bool)repeats { @@ -217,11 +217,11 @@ objc_autoreleasePoolPop(pool); return [timer autorelease]; } -+ (instancetype)timerWithTimeInterval: (of_time_interval_t)timeInterval ++ (instancetype)timerWithTimeInterval: (OFTimeInterval)timeInterval target: (id)target selector: (SEL)selector object: (id)object1 object: (id)object2 repeats: (bool)repeats @@ -240,11 +240,11 @@ objc_autoreleasePoolPop(pool); return [timer autorelease]; } -+ (instancetype)timerWithTimeInterval: (of_time_interval_t)timeInterval ++ (instancetype)timerWithTimeInterval: (OFTimeInterval)timeInterval target: (id)target selector: (SEL)selector object: (id)object1 object: (id)object2 object: (id)object3 @@ -265,11 +265,11 @@ objc_autoreleasePoolPop(pool); return [timer autorelease]; } -+ (instancetype)timerWithTimeInterval: (of_time_interval_t)timeInterval ++ (instancetype)timerWithTimeInterval: (OFTimeInterval)timeInterval target: (id)target selector: (SEL)selector object: (id)object1 object: (id)object2 object: (id)object3 @@ -293,13 +293,13 @@ return [timer autorelease]; } #ifdef OF_HAVE_BLOCKS -+ (instancetype)timerWithTimeInterval: (of_time_interval_t)timeInterval ++ (instancetype)timerWithTimeInterval: (OFTimeInterval)timeInterval repeats: (bool)repeats - block: (of_timer_block_t)block + block: (OFTimerBlock)block { void *pool = objc_autoreleasePoolPush(); OFDate *fireDate = [OFDate dateWithTimeIntervalSinceNow: timeInterval]; id timer = [[[self alloc] initWithFireDate: fireDate interval: timeInterval @@ -317,11 +317,11 @@ { OF_INVALID_INIT_METHOD } - (instancetype)of_initWithFireDate: (OFDate *)fireDate - interval: (of_time_interval_t)interval + interval: (OFTimeInterval)interval target: (id)target selector: (SEL)selector object: (id)object1 object: (id)object2 object: (id)object3 @@ -354,11 +354,11 @@ return self; } - (instancetype)initWithFireDate: (OFDate *)fireDate - interval: (of_time_interval_t)interval + interval: (OFTimeInterval)interval target: (id)target selector: (SEL)selector repeats: (bool)repeats { return [self of_initWithFireDate: fireDate @@ -372,11 +372,11 @@ arguments: 0 repeats: repeats]; } - (instancetype)initWithFireDate: (OFDate *)fireDate - interval: (of_time_interval_t)interval + interval: (OFTimeInterval)interval target: (id)target selector: (SEL)selector object: (id)object repeats: (bool)repeats { @@ -391,11 +391,11 @@ arguments: 1 repeats: repeats]; } - (instancetype)initWithFireDate: (OFDate *)fireDate - interval: (of_time_interval_t)interval + interval: (OFTimeInterval)interval target: (id)target selector: (SEL)selector object: (id)object1 object: (id)object2 repeats: (bool)repeats @@ -411,11 +411,11 @@ arguments: 2 repeats: repeats]; } - (instancetype)initWithFireDate: (OFDate *)fireDate - interval: (of_time_interval_t)interval + interval: (OFTimeInterval)interval target: (id)target selector: (SEL)selector object: (id)object1 object: (id)object2 object: (id)object3 @@ -432,11 +432,11 @@ arguments: 3 repeats: repeats]; } - (instancetype)initWithFireDate: (OFDate *)fireDate - interval: (of_time_interval_t)interval + interval: (OFTimeInterval)interval target: (id)target selector: (SEL)selector object: (id)object1 object: (id)object2 object: (id)object3 @@ -455,13 +455,13 @@ repeats: repeats]; } #ifdef OF_HAVE_BLOCKS - (instancetype)initWithFireDate: (OFDate *)fireDate - interval: (of_time_interval_t)interval + interval: (OFTimeInterval)interval repeats: (bool)repeats - block: (of_timer_block_t)block + block: (OFTimerBlock)block { self = [super init]; @try { _fireDate = [fireDate retain]; @@ -504,27 +504,22 @@ #endif [super dealloc]; } -- (of_comparison_result_t)compare: (id )object -{ - OFTimer *timer; - - if (![(id)object isKindOfClass: [OFTimer class]]) - @throw [OFInvalidArgumentException exception]; - - timer = (OFTimer *)object; +- (OFComparisonResult)compare: (OFTimer *)timer +{ + if (![timer isKindOfClass: [OFTimer class]]) + @throw [OFInvalidArgumentException exception]; return [_fireDate compare: timer->_fireDate]; } -- (void)of_setInRunLoop: (OFRunLoop *)runLoop - mode: (of_run_loop_mode_t)mode +- (void)of_setInRunLoop: (OFRunLoop *)runLoop mode: (OFRunLoopMode)mode { OFRunLoop *oldInRunLoop = _inRunLoop; - of_run_loop_mode_t oldInRunLoopMode = _inRunLoopMode; + OFRunLoopMode oldInRunLoopMode = _inRunLoopMode; _inRunLoop = [runLoop retain]; [oldInRunLoop release]; _inRunLoopMode = [mode copy]; @@ -538,16 +533,16 @@ id object1 = [[_object1 retain] autorelease]; id object2 = [[_object2 retain] autorelease]; id object3 = [[_object3 retain] autorelease]; id object4 = [[_object4 retain] autorelease]; - OF_ENSURE(_arguments <= 4); + OFEnsure(_arguments <= 4); if (_repeats && _valid) { int64_t missedIntervals = -_fireDate.timeIntervalSinceNow / _interval; - of_time_interval_t newFireDate; + OFTimeInterval newFireDate; OFRunLoop *runLoop; /* In case the clock was changed backwards */ if (missedIntervals < 0) missedIntervals = 0; @@ -558,12 +553,11 @@ [_fireDate release]; _fireDate = [[OFDate alloc] initWithTimeIntervalSince1970: newFireDate]; runLoop = [OFRunLoop currentRunLoop]; - [runLoop addTimer: self - forMode: runLoop.currentMode]; + [runLoop addTimer: self forMode: runLoop.currentMode]; } else [self invalidate]; #ifdef OF_HAVE_BLOCKS if (_block != NULL) @@ -573,12 +567,11 @@ switch (_arguments) { case 0: [target performSelector: _selector]; break; case 1: - [target performSelector: _selector - withObject: object1]; + [target performSelector: _selector withObject: object1]; break; case 2: [target performSelector: _selector withObject: object1 withObject: object2]; @@ -631,12 +624,11 @@ old = _fireDate; _fireDate = [fireDate copy]; [old release]; - [_inRunLoop addTimer: self - forMode: _inRunLoopMode]; + [_inRunLoop addTimer: self forMode: _inRunLoopMode]; } } @finally { [self release]; } } @@ -672,6 +664,35 @@ } @finally { [_condition unlock]; } } #endif + +- (OFString *)description +{ +#ifdef OF_HAVE_BLOCKS + if (_block != NULL) + return [OFString stringWithFormat: + @"<%@:\n" + @"\tFire date: %@\n" + @"\tInterval: %lf\n" + @"\tRepeats: %s\n" + @"\tBlock: %@\n" + @"\tValid: %s\n" + @">", + self.class, _fireDate, _interval, (_repeats ? "yes" : "no"), + _block, (_valid ? "yes" : "no")]; + else +#endif + return [OFString stringWithFormat: + @"<%@:\n" + @"\tFire date: %@\n" + @"\tInterval: %lf\n" + @"\tRepeats: %s\n" + @"\tTarget: %@\n" + @"\tSelector: %s\n" + @"\tValid: %s\n" + @">", + self.class, _fireDate, _interval, (_repeats ? "yes" : "no"), + _target, sel_getName(_selector), (_valid ? "yes" : "no")]; +} @end