summaryrefslogtreecommitdiff
path: root/MLKDynamicContext.m
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <matthias@benkard.de>2008-06-30 21:43:35 +0200
committerMatthias Andreas Benkard <matthias@benkard.de>2008-06-30 21:43:35 +0200
commit786ddbd4cea2fa9808463a5b2ff23dd40b994846 (patch)
tree9db79c4a8906661d48a5fff9ac24ea4a12a54050 /MLKDynamicContext.m
parenteb968f738101d87b2d0e170d757ea10a27bbb867 (diff)
Simplify environment inheritance.
Diffstat (limited to 'MLKDynamicContext.m')
-rw-r--r--MLKDynamicContext.m28
1 files changed, 5 insertions, 23 deletions
diff --git a/MLKDynamicContext.m b/MLKDynamicContext.m
index d4e1ab6..a2bc151 100644
--- a/MLKDynamicContext.m
+++ b/MLKDynamicContext.m
@@ -37,15 +37,11 @@
#define MAKE_ENVIRONMENT(variable, parent, parent_member) \
- (variable \
- ? (id) [[MLKEnvironment alloc] \
- initWithParent:(parent \
- ? (id) parent_member \
- : nil) \
- values:variable] \
- : (id) (parent \
- ? (id) RETAIN (parent_member) \
- : [[MLKEnvironment alloc] init]));
+ [[MLKEnvironment alloc] \
+ initWithParent:(parent \
+ ? (id) parent_member \
+ : nil) \
+ values:variable]
static MLKDynamicContext *global_context;
@@ -373,25 +369,11 @@ static MLKDynamicContext *global_context;
-(void) addValue:(id)value forSymbol:(MLKSymbol *)symbol
{
- if (_parent && _environment == _parent->_environment)
- _environment = [[MLKEnvironment alloc] initWithParent:_parent->_environment
- values:nil];
- else if (!_environment)
- _environment = [[MLKEnvironment alloc] initWithParent:nil
- values:nil];
-
[[self environment] addValue:value forSymbol:symbol];
}
-(void) addBindingForSymbol:(MLKSymbol *)symbol
{
- if (_parent && _environment == _parent->_environment)
- _environment = [[MLKEnvironment alloc] initWithParent:_parent->_environment
- values:nil];
- else if (!_environment)
- _environment = [[MLKEnvironment alloc] initWithParent:nil
- values:nil];
-
[[self environment] addBindingForSymbol:symbol];
}