From d6d73cfbcfd4eae88e53c4c30e221a66daade5e1 Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Tue, 17 Jun 2008 16:11:43 +0200 Subject: MLKCons, MLKSymbol: Override -descriptionForLisp. --- MLKCons.h | 5 +++++ MLKCons.m | 21 +++++++++++++++++++++ MLKSymbol.h | 2 ++ MLKSymbol.m | 8 ++++++++ 4 files changed, 36 insertions(+) diff --git a/MLKCons.h b/MLKCons.h index c727c39..d343e3f 100644 --- a/MLKCons.h +++ b/MLKCons.h @@ -34,5 +34,10 @@ -(void) setCar:(id)value; -(void) setCdr:(id)value; +-(NSString *)bareDescriptionForLisp; // description without + // parentheses, for internal use + // only +-(NSString *)descriptionForLisp; + -(void) dealloc; @end diff --git a/MLKCons.m b/MLKCons.m index fbfecb7..aee322a 100644 --- a/MLKCons.m +++ b/MLKCons.m @@ -18,6 +18,8 @@ #import "MLKCons.h" +#import + @implementation MLKCons +(MLKCons*) cons:(id)car with:(id)cdr @@ -54,6 +56,25 @@ ASSIGN (_cdr, value); } +-(NSString *)bareDescriptionForLisp +{ + if (!_cdr) + return [NSString stringWithFormat:@"%@", [_car descriptionForLisp]]; + else if (![_cdr isKindOfClass:[MLKCons class]]) + return [NSString stringWithFormat:@"%@ %@", + [_car descriptionForLisp], + [_cdr bareDescriptionForLisp]]; + else + return [NSString stringWithFormat:@"%@ . %@", + [_car descriptionForLisp], + [_cdr descriptionForLisp]]; +} + +-(NSString *)descriptionForLisp +{ + return [NSString stringWithFormat:@"(%@)", [self bareDescriptionForLisp]]; +} + -(void) dealloc { RELEASE (_car); diff --git a/MLKSymbol.h b/MLKSymbol.h index 6fe3eb6..82526d2 100644 --- a/MLKSymbol.h +++ b/MLKSymbol.h @@ -33,5 +33,7 @@ -(MLKPackage *) homePackage; -(void) setHomePackage:(MLKPackage *)aPackage; +-(NSString *)descriptionForLisp; + -(void) dealloc; @end diff --git a/MLKSymbol.m b/MLKSymbol.m index 3443e37..42a7141 100644 --- a/MLKSymbol.m +++ b/MLKSymbol.m @@ -18,6 +18,8 @@ #import "MLKSymbol.h" +#import + @implementation MLKSymbol -(MLKSymbol *) initWithName:(id)aName package:(id)aPackage @@ -43,6 +45,12 @@ ASSIGN (homePackage, aPackage); } +-(NSString *)descriptionForLisp +{ + // FIXME: This is wrong in more than one way. + return [NSString stringWithFormat:@"|%@|", name]; +} + -(void) dealloc { RELEASE (name); -- cgit v1.2.3