diff options
author | Matthias Andreas Benkard <matthias@benkard.de> | 2008-06-17 20:13:16 +0200 |
---|---|---|
committer | Matthias Andreas Benkard <matthias@benkard.de> | 2008-06-17 20:13:16 +0200 |
commit | e10c42925058f0fbaa1a3398ddfa9441b33a4e72 (patch) | |
tree | a867abe6cb822e158b33cafd9dbd0980bf24e89f /MLKDynamicContext.m | |
parent | d216a7cbc174a35b93c1e5af66b7bc2e1b0284db (diff) |
MLKDynamicContext: Introduce a global fallback context.
Diffstat (limited to 'MLKDynamicContext.m')
-rw-r--r-- | MLKDynamicContext.m | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/MLKDynamicContext.m b/MLKDynamicContext.m index 5b44db7..f5042aa 100644 --- a/MLKDynamicContext.m +++ b/MLKDynamicContext.m @@ -35,7 +35,24 @@ : (id) (parent ? (id) RETAIN (parent_member) : nil)); +static MLKDynamicContext *global_context; + + @implementation MLKDynamicContext ++(void) initialize +{ + NSMutableDictionary *vars = [NSMutableDictionary dictionary]; + + // FIXME: Initialise stuff. + + global_context = [[self alloc] initWithParent:nil + variables:vars + handlers:nil + restarts:nil + catchTags:nil + activeHandlerEnvironment:nil]; +} + -(MLKDynamicContext *) initWithParent:(MLKDynamicContext *)aContext variables:(NSDictionary *)vars handlers:(NSDictionary *)handlers @@ -62,14 +79,19 @@ -(MLKDynamicContext *) pushContext { - return [[[NSThread currentThread] threadDictionary] - objectForKey:@"MLKDynamicContext"]; + [[[NSThread currentThread] threadDictionary] setObject:self + forKey:@"MLKDynamicContext"]; + return self; } +(MLKDynamicContext *) currentContext { - return [[[NSThread currentThread] threadDictionary] - objectForKey:@"MLKDynamicContext"]; + MLKDynamicContext *context = [[[NSThread currentThread] threadDictionary] + objectForKey:@"MLKDynamicContext"]; + if (context) + return context; + else + return global_context; } +(MLKDynamicContext *) popContext |