diff options
author | Matthias Andreas Benkard <matthias@benkard.de> | 2008-06-14 20:30:55 +0200 |
---|---|---|
committer | Matthias Andreas Benkard <matthias@benkard.de> | 2008-06-14 20:30:55 +0200 |
commit | 51e2909e615867293d949217073093404a2c1139 (patch) | |
tree | ca40bc1c7f2a3ab4ed2d621d75762364a6ec31b1 /MLKEnvironment.m | |
parent | cfc17a412d17cac2aa8ad31e434c803a4a7d21b3 (diff) |
MLKDynamicContext: Implement -findHandler:.
Diffstat (limited to 'MLKEnvironment.m')
-rw-r--r-- | MLKEnvironment.m | 17 |
1 files changed, 16 insertions, 1 deletions
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); |