/* ** TimeStamp.m ** ** Copyright (c) 2004 ** ** Author: Yen-Ju Chen ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "TimeStamp.h" #include #include "GNUstep.h" static NSMutableArray *allTimeStamps = nil; @implementation TimeStamp + (TimeStamp *) timeStampWithIdentifier: (id) iden { if (allTimeStamps == nil) { allTimeStamps = [[NSMutableArray alloc] init]; } unsigned int i, count = [allTimeStamps count]; id object; for(i = 0; i < count; i++) { object = [allTimeStamps objectAtIndex: i]; if ([[object identifier] isEqualToString: iden]) return object; } /* Not found */ object = [[TimeStamp alloc] initWithIdentifier: iden]; [allTimeStamps addObject: object]; return AUTORELEASE(object); } - (id) initWithIdentifier: (id) iden { self = [super init]; ASSIGN(identifier, iden); ASSIGN(date, [NSDate date]); lock = [[NSLock alloc] init]; return self; } - (void) dealloc { RELEASE(identifier); RELEASE(date); RELEASE(lock); [super dealloc]; } - (id) identifier { return identifier; } - (void) setTime: (NSDate *) d { if ([lock tryLock] == NO) return; ASSIGN(date, d); [lock unlock]; } - (NSDate *) time { return date; } - (BOOL) isBeforeTime: (NSDate *) another { if ([date compare: another] == NSOrderedAscending) return YES; else return NO; } - (BOOL) isAfterTime: (NSDate *) another { if ([date compare: another] == NSOrderedDescending) return YES; else return NO; } @end