Update to build on snow leopard

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/performance/trunk@29028 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
rfm 2009-11-17 20:04:11 +00:00
parent 172dc5463d
commit 3763313448
11 changed files with 1930 additions and 104 deletions

View file

@ -50,21 +50,6 @@ Performance_AGSDOC_FILES += \
# Optional Java wrappers for the library # Optional Java wrappers for the library
JAVA_WRAPPER_NAME = Performance JAVA_WRAPPER_NAME = Performance
#
# Assume that the use of the gnu runtime means we have the gnustep
# base library and can use its extensions to build Performance stuff.
#
ifeq ($(OBJC_RUNTIME_LIB),gnu)
APPLE=0
else
APPLE=1
endif
ifeq ($(APPLE),1)
ADDITIONAL_OBJC_LIBS += -lgnustep-baseadd
Performance_LIBRARIES_DEPEND_UPON = -lgnustep-baseadd
endif
Performance_HEADER_FILES_INSTALL_DIR = Performance Performance_HEADER_FILES_INSTALL_DIR = Performance
-include GNUmakefile.preamble -include GNUmakefile.preamble

View file

@ -43,12 +43,10 @@
#import <Foundation/NSThread.h> #import <Foundation/NSThread.h>
#import <Foundation/NSValue.h> #import <Foundation/NSValue.h>
#import <GNUstepBase/GNUstep.h>
#import "GSCache.h" #import "GSCache.h"
#import "GSTicker.h" #import "GSTicker.h"
#if NeXT_RUNTIME #if !defined(GNUSTEP)
#include <objc/objc-class.h> #include <objc/objc-class.h>
#endif #endif
@ -77,14 +75,14 @@
GSCacheItem *i; GSCacheItem *i;
i = (GSCacheItem*)NSAllocateObject(self, 0, NSDefaultMallocZone()); i = (GSCacheItem*)NSAllocateObject(self, 0, NSDefaultMallocZone());
i->object = RETAIN(anObject); i->object = [anObject retain];
i->key = [aKey copy]; i->key = [aKey copy];
return i; return i;
} }
- (void) dealloc - (void) dealloc
{ {
RELEASE(key); [key release];
RELEASE(object); [object release];
[super dealloc]; [super dealloc];
} }
@end @end
@ -240,9 +238,9 @@ static void removeItem(GSCacheItem *item, GSCacheItem **first)
[self shrinkObjects: 0 andSize: 0]; [self shrinkObjects: 0 andSize: 0];
NSFreeMapTable(my->contents); NSFreeMapTable(my->contents);
} }
RELEASE(my->exclude); [my->exclude release];
RELEASE(my->name); [my->name release];
RELEASE(my->lock); [my->lock release];
[super dealloc]; [super dealloc];
} }
@ -530,7 +528,9 @@ static void removeItem(GSCacheItem *item, GSCacheItem **first)
- (void) setName: (NSString*)name - (void) setName: (NSString*)name
{ {
[my->lock lock]; [my->lock lock];
ASSIGN(my->name, name); [name retain];
[my->name release];
my->name = name;
[my->lock unlock]; [my->lock unlock];
} }
@ -599,7 +599,7 @@ static void removeItem(GSCacheItem *item, GSCacheItem **first)
appendItem(item, &my->first); appendItem(item, &my->first);
my->currentObjects += addObjects; my->currentObjects += addObjects;
my->currentSize += addSize; my->currentSize += addSize;
RELEASE(item); [item release];
} }
[my->lock unlock]; [my->lock unlock];
} }
@ -732,9 +732,9 @@ static void removeItem(GSCacheItem *item, GSCacheItem **first)
size += 3 * sizeof(void*) * count; size += 3 * sizeof(void*) * count;
if (count > 0) if (count > 0)
{ {
CREATE_AUTORELEASE_POOL(pool); NSAutoreleasePool *pool = [NSAutoreleasePool new];
NSEnumerator *enumerator = [self keyEnumerator]; NSEnumerator *enumerator = [self keyEnumerator];
NSObject *k; NSObject *k;
while ((k = [enumerator nextObject]) != nil) while ((k = [enumerator nextObject]) != nil)
{ {
@ -742,7 +742,7 @@ static void removeItem(GSCacheItem *item, GSCacheItem **first)
size += [k sizeInBytes: exclude] + [o sizeInBytes: exclude]; size += [k sizeInBytes: exclude] + [o sizeInBytes: exclude];
} }
RELEASE(pool); [pool release];
} }
} }
return size; return size;
@ -757,7 +757,11 @@ static void removeItem(GSCacheItem *item, GSCacheItem **first)
return 0; return 0;
} }
[exclude addObject: self]; [exclude addObject: self];
#if !defined(GNUSTEP)
return class_getInstanceSize(isa);
#else
return isa->instance_size; return isa->instance_size;
#endif
} }
@end @end
@ -773,15 +777,15 @@ static void removeItem(GSCacheItem *item, GSCacheItem **first)
size += 3 * sizeof(void*) * count; size += 3 * sizeof(void*) * count;
if (count > 0) if (count > 0)
{ {
CREATE_AUTORELEASE_POOL(pool); NSAutoreleasePool *pool = [NSAutoreleasePool new];
NSEnumerator *enumerator = [self objectEnumerator]; NSEnumerator *enumerator = [self objectEnumerator];
NSObject *o; NSObject *o;
while ((o = [enumerator nextObject]) != nil) while ((o = [enumerator nextObject]) != nil)
{ {
size += [o sizeInBytes: exclude]; size += [o sizeInBytes: exclude];
} }
RELEASE(pool); [pool release];
} }
} }
return size; return size;

View file

@ -27,8 +27,6 @@
#import <Foundation/NSEnumerator.h> #import <Foundation/NSEnumerator.h>
#import <Foundation/NSString.h> #import <Foundation/NSString.h>
#import <GNUstepBase/GNUstep.h>
#import "GSSkipMutableArray.h" #import "GSSkipMutableArray.h"
#import "GSIndexedSkipList.h" #import "GSIndexedSkipList.h"
@ -112,7 +110,7 @@ static Class concreteClass = 0;
return l; return l;
} }
- (void) _raiseRangeExceptionWithIndex: (unsigned)index from: (SEL)sel - (void) _raiseRangeExceptionWithIndex: (NSUInteger)index from: (SEL)sel
{ {
NSDictionary *info; NSDictionary *info;
NSException *exception; NSException *exception;
@ -136,7 +134,7 @@ static Class concreteClass = 0;
GSISLInitialize(); GSISLInitialize();
} }
- (id) initWithObjects: (id *)objects count: (unsigned) count - (id) initWithObjects: (id *)objects count: (NSUInteger) count
{ {
int i; int i;
self = [super init]; self = [super init];
@ -147,7 +145,7 @@ static Class concreteClass = 0;
for (i = 0; i < count; i++) for (i = 0; i < count; i++)
{ {
GSISLInsertItemAtIndex(l, RETAIN(objects[i]), i); GSISLInsertItemAtIndex(l, [objects[i] retain], i);
} }
return self; return self;
@ -171,7 +169,7 @@ static Class concreteClass = 0;
while (p != GSISLNil) while (p != GSISLNil)
{ {
q = p->forward[0].next; q = p->forward[0].next;
RELEASE(p->value); [p->value release];
NSZoneFree(l->zone,p); NSZoneFree(l->zone,p);
p = q; p = q;
} }
@ -181,17 +179,17 @@ static Class concreteClass = 0;
[super dealloc]; [super dealloc];
} }
- (void) insertObject: (id)object atIndex: (unsigned)index - (void) insertObject: (id)object atIndex: (NSUInteger)index
{ {
if (index > l->count) if (index > l->count)
{ {
[self _raiseRangeExceptionWithIndex: index from: _cmd]; [self _raiseRangeExceptionWithIndex: index from: _cmd];
} }
GSISLInsertItemAtIndex(l, RETAIN(object), index); GSISLInsertItemAtIndex(l, [object retain], index);
} }
- (id) objectAtIndex: (unsigned)index - (id) objectAtIndex: (NSUInteger)index
{ {
if (index >= l->count) if (index >= l->count)
{ {
@ -201,29 +199,29 @@ static Class concreteClass = 0;
return GSISLItemAtIndex(l, index); return GSISLItemAtIndex(l, index);
} }
- (void) removeObjectAtIndex: (unsigned) index - (void) removeObjectAtIndex: (NSUInteger)index
{ {
if (index >= l->count) if (index >= l->count)
{ {
[self _raiseRangeExceptionWithIndex: index from: _cmd]; [self _raiseRangeExceptionWithIndex: index from: _cmd];
} }
RELEASE(GSISLRemoveItemAtIndex(l, index)); [GSISLRemoveItemAtIndex(l, index) release];
} }
- (void) addObject: (id)obj - (void) addObject: (id)obj
{ {
GSISLInsertItemAtIndex(l, RETAIN(obj), l->count); GSISLInsertItemAtIndex(l, [obj retain], l->count);
} }
- (unsigned) count - (NSUInteger) count
{ {
return l->count; return l->count;
} }
- (void) replaceObjectAtIndex: (unsigned)index withObject: (id)obj - (void) replaceObjectAtIndex: (NSUInteger)index withObject: (id)obj
{ {
RELEASE(GSISLReplaceItemAtIndex(l, RETAIN(obj), index)); [GSISLReplaceItemAtIndex(l, [obj retain], index) release];
} }
- (NSEnumerator*) objectEnumerator - (NSEnumerator*) objectEnumerator
@ -233,7 +231,7 @@ static Class concreteClass = 0;
e = [GSConcreteSkipArrayEnumerator e = [GSConcreteSkipArrayEnumerator
allocWithZone: NSDefaultMallocZone()]; allocWithZone: NSDefaultMallocZone()];
e = [e initWithArray: self]; e = [e initWithArray: self];
return AUTORELEASE(e); return [e autorelease];
} }
/* returns an in an NSString suitable for running through graphviz, /* returns an in an NSString suitable for running through graphviz,
@ -242,7 +240,7 @@ static Class concreteClass = 0;
- (NSString *) _makeGraphOfInternalLayoutNamed: (NSString *)graphName - (NSString *) _makeGraphOfInternalLayoutNamed: (NSString *)graphName
{ {
GSISLNode p; GSISLNode p;
unsigned k, i; NSUInteger k, i;
NSMutableDictionary *values; NSMutableDictionary *values;
NSMutableArray *edges; NSMutableArray *edges;
NSMutableString *graph; NSMutableString *graph;
@ -287,7 +285,7 @@ static Class concreteClass = 0;
p, k, p->forward[k].next, p, k, p->forward[k].next,
p->forward[k].next == GSISLNil ? 0 : k]]; p->forward[k].next == GSISLNil ? 0 : k]];
[values setObject: foo forKey: value]; [values setObject: foo forKey: value];
RELEASE(foo); [foo release];
} }
else else
{ {
@ -317,9 +315,9 @@ static Class concreteClass = 0;
[graph appendString: [edges objectAtIndex: i]]; [graph appendString: [edges objectAtIndex: i]];
} }
[graph appendString: @"}\n"]; [graph appendString: @"}\n"];
RELEASE(values); [values release];
RELEASE(edges); [edges release];
return AUTORELEASE(graph); return [graph autorelease];
} }
@end @end

View file

@ -41,8 +41,6 @@
#import <Foundation/NSThread.h> #import <Foundation/NSThread.h>
#import <Foundation/NSValue.h> #import <Foundation/NSValue.h>
#import <GNUstepBase/GNUstep.h>
#import "GSThroughput.h" #import "GSThroughput.h"
#import "GSTicker.h" #import "GSTicker.h"
@ -64,7 +62,7 @@ static NSTimeInterval (*tiImp)(Class,SEL) = 0;
typedef struct { typedef struct {
unsigned cnt; // Number of events. unsigned cnt; // Number of events.
unsigned tick; // Start time unsigned tick; // Start time
} CInfo; } CountInfo;
typedef struct { typedef struct {
unsigned cnt; // Number of events. unsigned cnt; // Number of events.
@ -72,7 +70,7 @@ typedef struct {
NSTimeInterval min; // Shortest duration NSTimeInterval min; // Shortest duration
NSTimeInterval sum; // Total (sum of durations for event) NSTimeInterval sum; // Total (sum of durations for event)
unsigned tick; // Start time unsigned tick; // Start time
} DInfo; } DurationInfo;
typedef struct { typedef struct {
void *seconds; void *seconds;
@ -94,12 +92,12 @@ typedef struct {
} Item; } Item;
#define my ((Item*)_data) #define my ((Item*)_data)
#define cseconds ((CInfo*)my->seconds) #define cseconds ((CountInfo*)my->seconds)
#define cminutes ((CInfo*)my->minutes) #define cminutes ((CountInfo*)my->minutes)
#define cperiods ((CInfo*)my->periods) #define cperiods ((CountInfo*)my->periods)
#define dseconds ((DInfo*)my->seconds) #define dseconds ((DurationInfo*)my->seconds)
#define dminutes ((DInfo*)my->minutes) #define dminutes ((DurationInfo*)my->minutes)
#define dperiods ((DInfo*)my->periods) #define dperiods ((DurationInfo*)my->periods)
@ -163,7 +161,7 @@ typedef struct {
t = [GSThroughputThread new]; t = [GSThroughputThread new];
[[[NSThread currentThread] threadDictionary] setObject: t [[[NSThread currentThread] threadDictionary] setObject: t
forKey: @"GSThroughput"]; forKey: @"GSThroughput"];
RELEASE(t); [t release];
} }
return t; return t;
} }
@ -206,14 +204,14 @@ typedef struct {
{ {
while (my->last < tick) while (my->last < tick)
{ {
DInfo *info; DurationInfo *info;
if (my->second++ == 59) if (my->second++ == 59)
{ {
info = &dminutes[my->minute]; info = &dminutes[my->minute];
for (i = 0; i < 60; i++) for (i = 0; i < 60; i++)
{ {
DInfo *from = &dseconds[i]; DurationInfo *from = &dseconds[i];
info->cnt += from->cnt; info->cnt += from->cnt;
if (from->min < info->min) if (from->min < info->min)
@ -258,7 +256,7 @@ typedef struct {
info = &dperiods[my->period]; info = &dperiods[my->period];
for (i = 0; i < my->minutesPerPeriod; i++) for (i = 0; i < my->minutesPerPeriod; i++)
{ {
DInfo *from = &dminutes[i]; DurationInfo *from = &dminutes[i];
info->cnt += from->cnt; info->cnt += from->cnt;
if (from->min > 0.0 && from->min < info->min) if (from->min > 0.0 && from->min < info->min)
@ -305,7 +303,7 @@ typedef struct {
{ {
while (my->last < tick) while (my->last < tick)
{ {
CInfo *info; CountInfo *info;
if (my->second++ == 59) if (my->second++ == 59)
{ {
@ -365,7 +363,7 @@ typedef struct {
my->second = 0; my->second = 0;
if (my->supportDurations == YES) if (my->supportDurations == YES)
{ {
DInfo *info = &dseconds[1]; DurationInfo *info = &dseconds[1];
if (my->notify == YES && my->last > 59) if (my->notify == YES && my->last > 59)
{ {
@ -397,7 +395,7 @@ typedef struct {
} }
else else
{ {
CInfo *info = &cseconds[1]; CountInfo *info = &cseconds[1];
if (my->notify == YES && my->last > 59) if (my->notify == YES && my->last > 59)
{ {
@ -537,7 +535,7 @@ typedef struct {
while (from <= to) while (from <= to)
{ {
DInfo *info = &dseconds[from++]; DurationInfo *info = &dseconds[from++];
if (info->cnt == 0) if (info->cnt == 0)
{ {
@ -581,7 +579,7 @@ typedef struct {
} }
while (from <= to) while (from <= to)
{ {
DInfo *info = &dseconds[from++]; DurationInfo *info = &dseconds[from++];
if (info->cnt++ == 0) if (info->cnt++ == 0)
{ {
@ -632,7 +630,7 @@ typedef struct {
{ {
NSZoneFree(NSDefaultMallocZone(), my->seconds); NSZoneFree(NSDefaultMallocZone(), my->seconds);
} }
RELEASE(my->name); [my->name release];
if (my->thread != nil) if (my->thread != nil)
{ {
NSHashRemove(my->thread->instances, (void*)self); NSHashRemove(my->thread->instances, (void*)self);
@ -646,7 +644,7 @@ typedef struct {
- (NSString*) description - (NSString*) description
{ {
CREATE_AUTORELEASE_POOL(pool); NSAutoreleasePool *pool = [NSAutoreleasePool new];
NSString *n = my->name; NSString *n = my->name;
NSMutableString *m; NSMutableString *m;
unsigned i; unsigned i;
@ -666,7 +664,7 @@ typedef struct {
{ {
if (my->supportDurations == YES) if (my->supportDurations == YES)
{ {
DInfo *info = &dseconds[0]; DurationInfo *info = &dseconds[0];
[m appendFormat: @": cnt %u, max %g, min %g, avg %g", [m appendFormat: @": cnt %u, max %g, min %g, avg %g",
info->cnt, info->max, info->cnt, info->max,
@ -675,7 +673,7 @@ typedef struct {
} }
else else
{ {
CInfo *info = &cseconds[0]; CountInfo *info = &cseconds[0];
[m appendFormat: @": cnt %u", info->cnt]; [m appendFormat: @": cnt %u", info->cnt];
} }
@ -690,7 +688,7 @@ typedef struct {
tick = 0; tick = 0;
for (i = 0; i < my->second; i++) for (i = 0; i < my->second; i++)
{ {
DInfo *info = &dseconds[i]; DurationInfo *info = &dseconds[i];
NSTimeInterval ti = info->tick + baseTime; NSTimeInterval ti = info->tick + baseTime;
if (info->tick != tick) if (info->tick != tick)
@ -710,7 +708,7 @@ typedef struct {
tick = 0; tick = 0;
for (i = 0; i < my->minute; i++) for (i = 0; i < my->minute; i++)
{ {
DInfo *info = &dminutes[i]; DurationInfo *info = &dminutes[i];
NSTimeInterval ti = info->tick + baseTime; NSTimeInterval ti = info->tick + baseTime;
if (info->tick != tick) if (info->tick != tick)
@ -732,7 +730,7 @@ typedef struct {
*/ */
for (i = my->period; i < my->numberOfPeriods; i++) for (i = my->period; i < my->numberOfPeriods; i++)
{ {
DInfo *info = &dperiods[i]; DurationInfo *info = &dperiods[i];
NSTimeInterval ti = info->tick + baseTime; NSTimeInterval ti = info->tick + baseTime;
if (info->tick != tick) if (info->tick != tick)
@ -748,7 +746,7 @@ typedef struct {
*/ */
for (i = 0; i < my->period; i++) for (i = 0; i < my->period; i++)
{ {
DInfo *info = &dperiods[i]; DurationInfo *info = &dperiods[i];
NSTimeInterval ti = info->tick + baseTime; NSTimeInterval ti = info->tick + baseTime;
if (info->tick != tick) if (info->tick != tick)
@ -770,7 +768,7 @@ typedef struct {
tick = 0; tick = 0;
for (i = 0; i < my->second; i++) for (i = 0; i < my->second; i++)
{ {
CInfo *info = &cseconds[i]; CountInfo *info = &cseconds[i];
NSTimeInterval ti = info->tick + baseTime; NSTimeInterval ti = info->tick + baseTime;
if (info->tick != tick) if (info->tick != tick)
@ -789,7 +787,7 @@ typedef struct {
tick = 0; tick = 0;
for (i = 0; i < my->minute; i++) for (i = 0; i < my->minute; i++)
{ {
CInfo *info = &cminutes[i]; CountInfo *info = &cminutes[i];
NSTimeInterval ti = info->tick + baseTime; NSTimeInterval ti = info->tick + baseTime;
if (info->tick != tick) if (info->tick != tick)
@ -810,7 +808,7 @@ typedef struct {
*/ */
for (i = my->period; i < my->numberOfPeriods; i++) for (i = my->period; i < my->numberOfPeriods; i++)
{ {
CInfo *info = &cperiods[i]; CountInfo *info = &cperiods[i];
NSTimeInterval ti = info->tick + baseTime; NSTimeInterval ti = info->tick + baseTime;
if (info->tick != tick) if (info->tick != tick)
@ -825,7 +823,7 @@ typedef struct {
*/ */
for (i = 0; i < my->period; i++) for (i = 0; i < my->period; i++)
{ {
CInfo *info = &cperiods[i]; CountInfo *info = &cperiods[i];
NSTimeInterval ti = info->tick + baseTime; NSTimeInterval ti = info->tick + baseTime;
if (info->tick != tick) if (info->tick != tick)
@ -841,8 +839,8 @@ typedef struct {
} }
} }
DESTROY(pool); [pool release];
return AUTORELEASE(m); return [m autorelease];
} }
- (void) endDuration - (void) endDuration
@ -916,9 +914,10 @@ typedef struct {
my->period = 0; my->period = 0;
if (my->supportDurations == YES) if (my->supportDurations == YES)
{ {
DInfo *ptr; DurationInfo *ptr;
ptr = (DInfo*)NSZoneCalloc(NSDefaultMallocZone(), 2, sizeof(DInfo)); ptr = (DurationInfo*)NSZoneCalloc
(NSDefaultMallocZone(), 2, sizeof(DurationInfo));
my->seconds = ptr; my->seconds = ptr;
my->minutes = 0; my->minutes = 0;
my->periods = 0; my->periods = 0;
@ -936,9 +935,10 @@ typedef struct {
} }
else else
{ {
CInfo *ptr; CountInfo *ptr;
ptr = (CInfo*)NSZoneCalloc(NSDefaultMallocZone(), 2, sizeof(CInfo)); ptr = (CountInfo*)NSZoneCalloc
(NSDefaultMallocZone(), 2, sizeof(CountInfo));
my->seconds = ptr; my->seconds = ptr;
my->minutes = 0; my->minutes = 0;
my->periods = 0; my->periods = 0;
@ -959,9 +959,10 @@ typedef struct {
i = 60 + minutesPerPeriod + numberOfPeriods; i = 60 + minutesPerPeriod + numberOfPeriods;
if (my->supportDurations == YES) if (my->supportDurations == YES)
{ {
DInfo *ptr; DurationInfo *ptr;
ptr = (DInfo*)NSZoneCalloc(NSDefaultMallocZone(), i, sizeof(DInfo)); ptr = (DurationInfo*)NSZoneCalloc
(NSDefaultMallocZone(), i, sizeof(DurationInfo));
my->seconds = ptr; my->seconds = ptr;
my->minutes = ptr + 60; my->minutes = ptr + 60;
my->periods = ptr + 60 + minutesPerPeriod; my->periods = ptr + 60 + minutesPerPeriod;
@ -984,9 +985,10 @@ typedef struct {
} }
else else
{ {
CInfo *ptr; CountInfo *ptr;
ptr = (CInfo*)NSZoneCalloc(NSDefaultMallocZone(), i, sizeof(CInfo)); ptr = (CountInfo*)NSZoneCalloc
(NSDefaultMallocZone(), i, sizeof(CountInfo));
my->seconds = ptr; my->seconds = ptr;
my->minutes = ptr + 60; my->minutes = ptr + 60;
my->periods = ptr + 60 + minutesPerPeriod; my->periods = ptr + 60 + minutesPerPeriod;
@ -995,7 +997,7 @@ typedef struct {
cperiods[my->period].tick = my->last; cperiods[my->period].tick = my->last;
} }
} }
RELEASE(c); [c release];
return self; return self;
} }
@ -1006,7 +1008,9 @@ typedef struct {
- (void) setName: (NSString*)name - (void) setName: (NSString*)name
{ {
ASSIGN(my->name, name); [name retain];
[my->name release];
my->name = name;
} }
- (void) startDuration: (NSString*)name - (void) startDuration: (NSString*)name

View file

@ -28,12 +28,11 @@
#import <Foundation/NSArray.h> #import <Foundation/NSArray.h>
#import <Foundation/NSDate.h> #import <Foundation/NSDate.h>
#import <Foundation/NSDictionary.h> #import <Foundation/NSDictionary.h>
#import <Foundation/NSException.h>
#import <Foundation/NSThread.h> #import <Foundation/NSThread.h>
#import <Foundation/NSString.h> #import <Foundation/NSString.h>
#import <Foundation/NSTimer.h> #import <Foundation/NSTimer.h>
#import <GNUstepBase/GNUstep.h>
#import "GSTicker.h" #import "GSTicker.h"
static Class NSDateClass = 0; static Class NSDateClass = 0;
@ -78,7 +77,8 @@ static NSDate *startDate = nil;
{ {
[theTimer invalidate]; [theTimer invalidate];
theTimer = nil; theTimer = nil;
DESTROY(observers); [observers release];
observers = nil;
[super dealloc]; [super dealloc];
} }
- (id) init - (id) init
@ -182,7 +182,7 @@ NSTimeInterval GSTickerTimeNow()
tt = [GSTickerThread new]; tt = [GSTickerThread new];
[[[NSThread currentThread] threadDictionary] [[[NSThread currentThread] threadDictionary]
setObject: tt forKey: @"GSTickerThread"]; setObject: tt forKey: @"GSTickerThread"];
RELEASE(tt); [tt release];
} }
count = [tt->observers count]; count = [tt->observers count];
while (count-- > 0) while (count-- > 0)
@ -198,7 +198,7 @@ NSTimeInterval GSTickerTimeNow()
to->observer = anObject; to->observer = anObject;
to->userInfo = userInfo; to->userInfo = userInfo;
[tt->observers addObject: to]; [tt->observers addObject: to];
RELEASE(to); [to release];
} }
+ (NSDate*) start + (NSDate*) start
@ -326,7 +326,7 @@ NSTimeInterval GSTickerTimeNow()
NSLog(@"Problem firing ticker observers: %@", localException); NSLog(@"Problem firing ticker observers: %@", localException);
} }
NS_ENDHANDLER NS_ENDHANDLER
RELEASE(a); [a release];
} }
} }

Binary file not shown.

26
Performance/Info.plist Normal file
View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>com.yourcompany.yourcocoaframework</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>

View file

@ -0,0 +1,317 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 44;
objects = {
/* Begin PBXBuildFile section */
795003CF10B333D000DB5EFC /* GSCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 795003C510B333D000DB5EFC /* GSCache.h */; };
795003D010B333D000DB5EFC /* GSCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 795003C610B333D000DB5EFC /* GSCache.m */; };
795003D110B333D000DB5EFC /* GSIndexedSkipList.h in Headers */ = {isa = PBXBuildFile; fileRef = 795003C710B333D000DB5EFC /* GSIndexedSkipList.h */; };
795003D210B333D000DB5EFC /* GSIndexedSkipList.m in Sources */ = {isa = PBXBuildFile; fileRef = 795003C810B333D000DB5EFC /* GSIndexedSkipList.m */; };
795003D310B333D000DB5EFC /* GSSkipMutableArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 795003C910B333D000DB5EFC /* GSSkipMutableArray.h */; };
795003D410B333D000DB5EFC /* GSSkipMutableArray.m in Sources */ = {isa = PBXBuildFile; fileRef = 795003CA10B333D000DB5EFC /* GSSkipMutableArray.m */; };
795003D510B333D000DB5EFC /* GSThroughput.h in Headers */ = {isa = PBXBuildFile; fileRef = 795003CB10B333D000DB5EFC /* GSThroughput.h */; };
795003D610B333D000DB5EFC /* GSThroughput.m in Sources */ = {isa = PBXBuildFile; fileRef = 795003CC10B333D000DB5EFC /* GSThroughput.m */; };
795003D710B333D000DB5EFC /* GSTicker.h in Headers */ = {isa = PBXBuildFile; fileRef = 795003CD10B333D000DB5EFC /* GSTicker.h */; };
795003D810B333D000DB5EFC /* GSTicker.m in Sources */ = {isa = PBXBuildFile; fileRef = 795003CE10B333D000DB5EFC /* GSTicker.m */; };
8DC2EF530486A6940098B216 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C1666FE841158C02AAC07 /* InfoPlist.strings */; };
8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
0867D69BFE84028FC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
0867D6A5FE840307C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = "<absolute>"; };
089C1667FE841158C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
32DBCF5E0370ADEE00C91783 /* Performance_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Performance_Prefix.pch; sourceTree = "<group>"; };
795003C510B333D000DB5EFC /* GSCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GSCache.h; path = ../GSCache.h; sourceTree = SOURCE_ROOT; };
795003C610B333D000DB5EFC /* GSCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GSCache.m; path = ../GSCache.m; sourceTree = SOURCE_ROOT; };
795003C710B333D000DB5EFC /* GSIndexedSkipList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GSIndexedSkipList.h; path = ../GSIndexedSkipList.h; sourceTree = SOURCE_ROOT; };
795003C810B333D000DB5EFC /* GSIndexedSkipList.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GSIndexedSkipList.m; path = ../GSIndexedSkipList.m; sourceTree = SOURCE_ROOT; };
795003C910B333D000DB5EFC /* GSSkipMutableArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GSSkipMutableArray.h; path = ../GSSkipMutableArray.h; sourceTree = SOURCE_ROOT; };
795003CA10B333D000DB5EFC /* GSSkipMutableArray.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GSSkipMutableArray.m; path = ../GSSkipMutableArray.m; sourceTree = SOURCE_ROOT; };
795003CB10B333D000DB5EFC /* GSThroughput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GSThroughput.h; path = ../GSThroughput.h; sourceTree = SOURCE_ROOT; };
795003CC10B333D000DB5EFC /* GSThroughput.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GSThroughput.m; path = ../GSThroughput.m; sourceTree = SOURCE_ROOT; };
795003CD10B333D000DB5EFC /* GSTicker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GSTicker.h; path = ../GSTicker.h; sourceTree = SOURCE_ROOT; };
795003CE10B333D000DB5EFC /* GSTicker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GSTicker.m; path = ../GSTicker.m; sourceTree = SOURCE_ROOT; };
8DC2EF5A0486A6940098B216 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
8DC2EF5B0486A6940098B216 /* Performance.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Performance.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D2F7E79907B2D74100F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = "<absolute>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
8DC2EF560486A6940098B216 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
034768DFFF38A50411DB9C8B /* Products */ = {
isa = PBXGroup;
children = (
8DC2EF5B0486A6940098B216 /* Performance.framework */,
);
name = Products;
sourceTree = "<group>";
};
0867D691FE84028FC02AAC07 /* Performance */ = {
isa = PBXGroup;
children = (
08FB77AEFE84172EC02AAC07 /* Classes */,
32C88DFF0371C24200C91783 /* Other Sources */,
089C1665FE841158C02AAC07 /* Resources */,
0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */,
034768DFFF38A50411DB9C8B /* Products */,
);
name = Performance;
sourceTree = "<group>";
};
0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = {
isa = PBXGroup;
children = (
1058C7B0FEA5585E11CA2CBB /* Linked Frameworks */,
1058C7B2FEA5585E11CA2CBB /* Other Frameworks */,
);
name = "External Frameworks and Libraries";
sourceTree = "<group>";
};
089C1665FE841158C02AAC07 /* Resources */ = {
isa = PBXGroup;
children = (
8DC2EF5A0486A6940098B216 /* Info.plist */,
089C1666FE841158C02AAC07 /* InfoPlist.strings */,
);
name = Resources;
sourceTree = "<group>";
};
08FB77AEFE84172EC02AAC07 /* Classes */ = {
isa = PBXGroup;
children = (
795003C510B333D000DB5EFC /* GSCache.h */,
795003C610B333D000DB5EFC /* GSCache.m */,
795003C710B333D000DB5EFC /* GSIndexedSkipList.h */,
795003C810B333D000DB5EFC /* GSIndexedSkipList.m */,
795003C910B333D000DB5EFC /* GSSkipMutableArray.h */,
795003CA10B333D000DB5EFC /* GSSkipMutableArray.m */,
795003CB10B333D000DB5EFC /* GSThroughput.h */,
795003CC10B333D000DB5EFC /* GSThroughput.m */,
795003CD10B333D000DB5EFC /* GSTicker.h */,
795003CE10B333D000DB5EFC /* GSTicker.m */,
);
name = Classes;
sourceTree = "<group>";
};
1058C7B0FEA5585E11CA2CBB /* Linked Frameworks */ = {
isa = PBXGroup;
children = (
1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */,
);
name = "Linked Frameworks";
sourceTree = "<group>";
};
1058C7B2FEA5585E11CA2CBB /* Other Frameworks */ = {
isa = PBXGroup;
children = (
0867D6A5FE840307C02AAC07 /* AppKit.framework */,
D2F7E79907B2D74100F64583 /* CoreData.framework */,
0867D69BFE84028FC02AAC07 /* Foundation.framework */,
);
name = "Other Frameworks";
sourceTree = "<group>";
};
32C88DFF0371C24200C91783 /* Other Sources */ = {
isa = PBXGroup;
children = (
32DBCF5E0370ADEE00C91783 /* Performance_Prefix.pch */,
);
name = "Other Sources";
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
8DC2EF500486A6940098B216 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
795003CF10B333D000DB5EFC /* GSCache.h in Headers */,
795003D110B333D000DB5EFC /* GSIndexedSkipList.h in Headers */,
795003D310B333D000DB5EFC /* GSSkipMutableArray.h in Headers */,
795003D510B333D000DB5EFC /* GSThroughput.h in Headers */,
795003D710B333D000DB5EFC /* GSTicker.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
8DC2EF4F0486A6940098B216 /* Performance */ = {
isa = PBXNativeTarget;
buildConfigurationList = 1DEB91AD08733DA50010E9CD /* Build configuration list for PBXNativeTarget "Performance" */;
buildPhases = (
8DC2EF500486A6940098B216 /* Headers */,
8DC2EF520486A6940098B216 /* Resources */,
8DC2EF540486A6940098B216 /* Sources */,
8DC2EF560486A6940098B216 /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = Performance;
productInstallPath = "$(HOME)/Library/Frameworks";
productName = Performance;
productReference = 8DC2EF5B0486A6940098B216 /* Performance.framework */;
productType = "com.apple.product-type.framework";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
0867D690FE84028FC02AAC07 /* Project object */ = {
isa = PBXProject;
buildConfigurationList = 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "Performance" */;
compatibilityVersion = "Xcode 3.0";
hasScannedForEncodings = 1;
mainGroup = 0867D691FE84028FC02AAC07 /* Performance */;
productRefGroup = 034768DFFF38A50411DB9C8B /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
8DC2EF4F0486A6940098B216 /* Performance */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
8DC2EF520486A6940098B216 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8DC2EF530486A6940098B216 /* InfoPlist.strings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
8DC2EF540486A6940098B216 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
795003D010B333D000DB5EFC /* GSCache.m in Sources */,
795003D210B333D000DB5EFC /* GSIndexedSkipList.m in Sources */,
795003D410B333D000DB5EFC /* GSSkipMutableArray.m in Sources */,
795003D610B333D000DB5EFC /* GSThroughput.m in Sources */,
795003D810B333D000DB5EFC /* GSTicker.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
089C1666FE841158C02AAC07 /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
089C1667FE841158C02AAC07 /* English */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
1DEB91AE08733DA50010E9CD /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
COPY_PHASE_STRIP = NO;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
FRAMEWORK_VERSION = A;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_MODEL_TUNING = G5;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = Performance_Prefix.pch;
INFOPLIST_FILE = Info.plist;
INSTALL_PATH = "$(HOME)/Library/Frameworks";
PRODUCT_NAME = Performance;
WRAPPER_EXTENSION = framework;
ZERO_LINK = YES;
};
name = Debug;
};
1DEB91AF08733DA50010E9CD /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
FRAMEWORK_VERSION = A;
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = Performance_Prefix.pch;
INFOPLIST_FILE = Info.plist;
INSTALL_PATH = "$(HOME)/Library/Frameworks";
PRODUCT_NAME = Performance;
WRAPPER_EXTENSION = framework;
};
name = Release;
};
1DEB91B208733DA50010E9CD /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
};
name = Debug;
};
1DEB91B308733DA50010E9CD /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = (
ppc,
i386,
);
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
1DEB91AD08733DA50010E9CD /* Build configuration list for PBXNativeTarget "Performance" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1DEB91AE08733DA50010E9CD /* Debug */,
1DEB91AF08733DA50010E9CD /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "Performance" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1DEB91B208733DA50010E9CD /* Debug */,
1DEB91B308733DA50010E9CD /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 0867D690FE84028FC02AAC07 /* Project object */;
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,117 @@
// !$*UTF8*$!
{
0867D690FE84028FC02AAC07 /* Project object */ = {
activeBuildConfigurationName = Debug;
activeTarget = 8DC2EF4F0486A6940098B216 /* Performance */;
addToTargets = (
8DC2EF4F0486A6940098B216 /* Performance */,
);
codeSenseManager = 795003C410B333B200DB5EFC /* Code sense */;
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
341,
20,
48.16259765625,
43,
43,
20,
);
PBXFileTableDataSourceColumnsKey = (
PBXFileDataSource_FiletypeID,
PBXFileDataSource_Filename_ColumnID,
PBXFileDataSource_Built_ColumnID,
PBXFileDataSource_ObjectSize_ColumnID,
PBXFileDataSource_Errors_ColumnID,
PBXFileDataSource_Warnings_ColumnID,
PBXFileDataSource_Target_ColumnID,
);
};
PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
301,
60,
20,
48.16259765625,
43,
43,
);
PBXFileTableDataSourceColumnsKey = (
PBXFileDataSource_FiletypeID,
PBXFileDataSource_Filename_ColumnID,
PBXTargetDataSource_PrimaryAttribute,
PBXFileDataSource_Built_ColumnID,
PBXFileDataSource_ObjectSize_ColumnID,
PBXFileDataSource_Errors_ColumnID,
PBXFileDataSource_Warnings_ColumnID,
);
};
PBXPerProjectTemplateStateSaveDate = 280179604;
PBXWorkspaceStateSaveDate = 280179604;
};
perUserProjectItems = {
795003EC10B338F200DB5EFC /* XCBuildMessageTextBookmark */ = 795003EC10B338F200DB5EFC /* XCBuildMessageTextBookmark */;
795003ED10B338F200DB5EFC /* PBXTextBookmark */ = 795003ED10B338F200DB5EFC /* PBXTextBookmark */;
};
sourceControlManager = 795003C310B333B200DB5EFC /* Source Control */;
userBuildSettings = {
};
};
795003C310B333B200DB5EFC /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
795003C410B333B200DB5EFC /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
795003C610B333D000DB5EFC /* GSCache.m */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {565, 10569}}";
sepNavSelRange = "{17631, 0}";
sepNavVisRange = "{374, 820}";
sepNavWindowFrame = "{{391, -230}, {1167, 887}}";
};
};
795003CC10B333D000DB5EFC /* GSThroughput.m */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {516, 13338}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 515}";
};
};
795003EC10B338F200DB5EFC /* XCBuildMessageTextBookmark */ = {
isa = PBXTextBookmark;
comments = "GNUstepBase/GNUstep.h: No such file or directory";
fRef = 795003C610B333D000DB5EFC /* GSCache.m */;
fallbackIsa = XCBuildMessageTextBookmark;
rLen = 1;
rLoc = 45;
rType = 1;
};
795003ED10B338F200DB5EFC /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 795003C610B333D000DB5EFC /* GSCache.m */;
name = "GSCache.m: 844";
rLen = 0;
rLoc = 17631;
rType = 0;
vrLen = 820;
vrLoc = 374;
};
8DC2EF4F0486A6940098B216 /* Performance */ = {
activeExec = 0;
};
}

View file

@ -0,0 +1,7 @@
//
// Prefix header for all source files of the 'Performance' target in the 'Performance' project.
//
#ifdef __OBJC__
#import <Cocoa/Cocoa.h>
#endif