From f6da3068e9e854d6913ba45cf2b7d9deafd87a91 Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Wed, 25 Jun 2008 14:55:54 +0200 Subject: Environment handling: Add MLKEnvironment methods for direct access to bindings. --- MLKEnvironment.m | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'MLKEnvironment.m') diff --git a/MLKEnvironment.m b/MLKEnvironment.m index 29f7740..7119bac 100644 --- a/MLKEnvironment.m +++ b/MLKEnvironment.m @@ -137,10 +137,24 @@ -(void) addBindingForSymbol:(MLKSymbol *)symbol { - [_bindings setObject:[MLKBinding binding] + [self addBinding:[MLKBinding binding] forSymbol:symbol]; +} + +-(void) addBinding:(MLKBinding *)binding forSymbol:(MLKSymbol *)symbol +{ + [_bindings setObject:binding forKey:(symbol ? (id)symbol : (id)[NSNull null])]; } +-(void) setBinding:(MLKBinding *)binding forSymbol:(MLKSymbol *)symbol +{ + if (![self bindingForSymbol:symbol]) + [NSException raise:@"MLKUnboundVariableError" + format:@"The variable %@ is unbound.", + [symbol descriptionForLisp]]; + [self addBinding:binding forSymbol:symbol]; +} + -(MLKEnvironment *) environmentForSymbol:(MLKSymbol *)symbol { if ([_bindings objectForKey:symbol]) -- cgit v1.2.3