diff options
author | Matthias Andreas Benkard <matthias@benkard.de> | 2008-07-08 15:43:06 +0200 |
---|---|---|
committer | Matthias Andreas Benkard <matthias@benkard.de> | 2008-07-08 15:43:06 +0200 |
commit | 0654d8d1017b202c5aa250c77626c54bf571a354 (patch) | |
tree | f1522576c8577de45d15482f788ebfccbdc195a9 /MLKRoot.m | |
parent | 13715775d26700ba8d0b3ccb2e29be7c2a60e869 (diff) |
Implement IMPORT, INTERN, and MAKE-SYMBOL.
Diffstat (limited to 'MLKRoot.m')
-rw-r--r-- | MLKRoot.m | 35 |
1 files changed, 35 insertions, 0 deletions
@@ -372,4 +372,39 @@ static id truify (BOOL value) package:nil])); } ++(NSArray *) make_symbol:(NSArray *)args +{ + NSString *name = [args objectAtIndex:0]; + + RETURN_VALUE ([MLKSymbol symbolWithName:name package:nil]); +} + ++(NSArray *) intern:(NSArray *)args +{ + NSString *name = [args objectAtIndex:0]; + id package = denullify (([args count] > 1 + ? [args objectAtIndex:1] + : [[MLKDynamicContext currentContext] + valueForSymbol: + [[MLKPackage findPackage:@"COMMON-LISP"] + intern:@"*PACKAGE*"]])); + MLKSymbol *symbol = [package intern:name]; + + return [NSArray arrayWithObjects:symbol, nil]; +} + ++(NSArray *) import:(NSArray *)args +{ + MLKSymbol *symbol = [args objectAtIndex:0]; + id package = denullify (([args count] > 1 + ? [args objectAtIndex:1] + : [[MLKDynamicContext currentContext] + valueForSymbol: + [[MLKPackage findPackage:@"COMMON-LISP"] + intern:@"*PACKAGE*"]])); + + [package import:symbol]; + + RETURN_VALUE ([cl intern:@"T"]); +} @end |