OSX compatibility tweaks inspiered by testplant

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@35555 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-MacDonald 2012-09-10 05:18:09 +00:00
parent 3e6253d584
commit 4985cf3413
5 changed files with 50 additions and 13 deletions

View file

@ -1,3 +1,11 @@
2012-09-10 Richard Frith-Macdonald <rfm@gnu.org>
* Headers/Foundation/NSDate.h: Declare new OSX method to add time
interval to a date.
* Source/NSDate.m: Implement it
* Source/NSCalendarDate.m: Ditto
* Source/NSRunLoop.m: Add exception handling for run loop performer.
2012-09-10 Sergii Stoian <stoyan255@gmail.com>
* Source/NSFileManager.m:

View file

@ -106,6 +106,14 @@ GS_EXPORT const NSTimeInterval NSTimeIntervalSince1970;
- (BOOL) isEqualToDate: (NSDate*)other;
- (NSDate*) laterDate: (NSDate*)otherDate;
#if OS_API_VERSION(100600,GS_API_LATEST)
/**
* Returns an autoreleased NSDate instance whose value is offset from
* that of the receiver by the specified interval.
*/
- (id) dateByAddingTimeInterval: (NSTimeInterval)ti;
#endif
#if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST)
+ (id) dateWithNaturalLanguageString: (NSString*)string;
+ (id) dateWithNaturalLanguageString: (NSString*)string

View file

@ -445,6 +445,20 @@ GSPrivateTimeNow(void)
* value of the receiver and adding the interval in seconds specified.
*/
- (id) addTimeInterval: (NSTimeInterval)seconds
{
return [self dateByAddingTimeInterval: seconds];
}
- (Class) classForCoder
{
return [self class];
}
/**
* Creates and returns a new NSCalendarDate object by taking the
* value of the receiver and adding the interval specified.
*/
- (id) dateByAddingTimeInterval: (NSTimeInterval)seconds
{
id newObj = [[self class] dateWithTimeIntervalSinceReferenceDate:
[self timeIntervalSinceReferenceDate] + seconds];
@ -455,11 +469,6 @@ GSPrivateTimeNow(void)
return newObj;
}
- (Class) classForCoder
{
return [self class];
}
- (id) replacementObjectForPortCoder: (NSPortCoder*)aRmc
{
return self;

View file

@ -1132,6 +1132,12 @@ otherTime(NSDate* other)
return self;
}
- (id) dateByAddingTimeInterval: (NSTimeInterval)seconds
{
return [[self class] dateWithTimeIntervalSinceReferenceDate:
otherTime(self) + seconds];
}
/**
* Returns an autoreleased instance of the [NSCalendarDate] class whose
* date/time value is the same as that of the receiver, and which uses
@ -1203,15 +1209,9 @@ otherTime(NSDate* other)
return [s autorelease];
}
/**
* Returns an autoreleased NSDate instance whose value if offset from
* that of the receiver by seconds.
*/
- (id) addTimeInterval: (NSTimeInterval)seconds
{
/* xxx We need to check for overflow? */
return [[self class] dateWithTimeIntervalSinceReferenceDate:
otherTime(self) + seconds];
return [self dateByAddingTimeInterval: seconds];
}
/**

View file

@ -105,7 +105,19 @@ static NSDate *theFuture = nil;
- (void) fire
{
[target performSelector: selector withObject: argument];
NS_DURING
{
[target performSelector: selector withObject: argument];
}
NS_HANDLER
{
NSLog(@"*** NSRunLoop ignoring exception '%@' (reason '%@') "
@"raised during performSelector... with target %p "
@"and selector '%@'",
[localException name], [localException reason], target,
NSStringFromSelector([target selector]));
}
NS_ENDHANDLER
}
- (id) initWithSelector: (SEL)aSelector