mirror of
https://github.com/gnustep/libs-performance.git
synced 2025-02-16 00:21:29 +00:00
allow programmatic setting of config where defaults don't exist
This commit is contained in:
parent
42e7c87f0b
commit
94eb232b96
1 changed files with 78 additions and 54 deletions
36
GSCache.m
36
GSCache.m
|
@ -617,33 +617,58 @@ static void removeItem(GSCacheItem *item, GSCacheItem **first)
|
|||
- (void) setLifetime: (unsigned)max
|
||||
{
|
||||
[my->lock lock];
|
||||
if (NO == my->useDefaults)
|
||||
if (YES == my->useDefaults)
|
||||
{
|
||||
my->lifetime = max;
|
||||
NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];
|
||||
NSString *n = (nil == my->name) ? @"" : my->name;
|
||||
NSString *k = [@"GSCacheLifetime" stringByAppendingString: n];
|
||||
|
||||
if (nil != [defs objectForKey: k])
|
||||
{
|
||||
max = (unsigned) [defs integerForKey: k];
|
||||
}
|
||||
}
|
||||
my->lifetime = max;
|
||||
[my->lock unlock];
|
||||
}
|
||||
|
||||
- (void) setMaxObjects: (unsigned)max
|
||||
{
|
||||
[my->lock lock];
|
||||
if (NO == my->useDefaults)
|
||||
if (YES == my->useDefaults)
|
||||
{
|
||||
NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];
|
||||
NSString *n = (nil == my->name) ? @"" : my->name;
|
||||
NSString *k = [@"GSCacheMaxObjects" stringByAppendingString: n];
|
||||
|
||||
if (nil != [defs objectForKey: k])
|
||||
{
|
||||
max = (unsigned) [defs integerForKey: k];
|
||||
}
|
||||
}
|
||||
my->maxObjects = max;
|
||||
if (my->currentObjects > my->maxObjects)
|
||||
{
|
||||
[self shrinkObjects: my->maxObjects
|
||||
andSize: my->maxSize];
|
||||
}
|
||||
}
|
||||
[my->lock unlock];
|
||||
}
|
||||
|
||||
- (void) setMaxSize: (NSUInteger)max
|
||||
{
|
||||
[my->lock lock];
|
||||
if (NO == my->useDefaults)
|
||||
if (YES == my->useDefaults)
|
||||
{
|
||||
NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];
|
||||
NSString *n = (nil == my->name) ? @"" : my->name;
|
||||
NSString *k = [@"GSCacheMaxSize" stringByAppendingString: n];
|
||||
|
||||
if (nil != [defs objectForKey: k])
|
||||
{
|
||||
max = (NSUInteger) [defs integerForKey: k];
|
||||
}
|
||||
}
|
||||
if (max > 0 && my->maxSize == 0)
|
||||
{
|
||||
NSMapEnumerator e = NSEnumerateMapTable(my->contents);
|
||||
|
@ -689,7 +714,6 @@ static void removeItem(GSCacheItem *item, GSCacheItem **first)
|
|||
[self shrinkObjects: my->maxObjects
|
||||
andSize: my->maxSize];
|
||||
}
|
||||
}
|
||||
[my->lock unlock];
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue