From 51e2909e615867293d949217073093404a2c1139 Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Sat, 14 Jun 2008 20:30:55 +0200 Subject: MLKDynamicContext: Implement -findHandler:. --- MLKEnvironment.m | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'MLKEnvironment.m') diff --git a/MLKEnvironment.m b/MLKEnvironment.m index 6011f90..8a7c270 100644 --- a/MLKEnvironment.m +++ b/MLKEnvironment.m @@ -48,6 +48,11 @@ return [self initWithParent:nil bindings:bindings]; } +-(MLKEnvironment *) parent +{ + return _parent; +} + -(void) setBinding:(MLKSymbol *)symbol to:(id)value { [self setBinding:symbol to:value inEnvironment:self]; @@ -81,7 +86,7 @@ else [[[MLKUndefinedVariableException alloc] initWithEnvironment:env variableName:symbol] - raise];; + raise]; return nil; // avoid a stupid compiler warning } @@ -96,6 +101,16 @@ [_bindings setObject:value forKey:symbol]; } +-(MLKEnvironment *) environmentForBinding:(MLKSymbol *)symbol +{ + if ([[_bindings allKeys] containsObject:symbol]) + return self; + else if (_parent) + return [_parent environmentForBinding:symbol]; + else + return nil; +} + -(void) dealloc { RELEASE (_bindings); -- cgit v1.2.3