From ee2d7b7d9bb5ab87dc7986407ee44acd6bcad429 Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Sat, 28 Jun 2008 22:22:04 +0200 Subject: Add support for compiler macros to lexical contexts. --- MLKLexicalContext.m | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'MLKLexicalContext.m') diff --git a/MLKLexicalContext.m b/MLKLexicalContext.m index 7f7e395..f41b05c 100644 --- a/MLKLexicalContext.m +++ b/MLKLexicalContext.m @@ -70,6 +70,7 @@ static MLKSymbol *LEXICAL; functions:[globalenv functions] goTags:nil macros:nil + compilerMacros:nil symbolMacros:nil declarations:nil]; @@ -82,6 +83,7 @@ static MLKSymbol *LEXICAL; functions:(NSSet *)functions goTags:(NSDictionary *)goTags macros:(NSDictionary *)macros + compilerMacros:(NSDictionary *)compilerMacros symbolMacros:(NSDictionary *)symbolMacros declarations:(id)declarations { @@ -94,6 +96,7 @@ static MLKSymbol *LEXICAL; _goTags = MAKE_ENVIRONMENT (goTags, _parent, _parent->_goTags); _macros = MAKE_ENVIRONMENT (macros, _parent, _parent->_macros); + _compilerMacros = MAKE_ENVIRONMENT (compilerMacros, _parent, _parent->_compilerMacros); _symbolMacros = MAKE_ENVIRONMENT (symbolMacros, _parent, _parent->_symbolMacros); ASSIGN (_knownMacros, [NSMutableSet setWithArray:[macros allKeys]]); @@ -108,6 +111,7 @@ static MLKSymbol *LEXICAL; functions:(NSSet *)functions goTags:(NSDictionary *)goTags macros:(NSDictionary *)macros + compilerMacros:(NSDictionary *)compilerMacros symbolMacros:(NSDictionary *)symbolMacros declarations:(id)declarations { @@ -117,6 +121,7 @@ static MLKSymbol *LEXICAL; functions:functions goTags:goTags macros:macros + compilerMacros:compilerMacros symbolMacros:symbolMacros declarations:declarations]); } @@ -142,6 +147,22 @@ static MLKSymbol *LEXICAL; [_macros setValue:value forSymbol:symbol]; } +-(id ) compilerMacroForSymbol:(MLKSymbol *)symbol +{ + return [_compilerMacros valueForSymbol:symbol]; +} + +-(void) addCompilerMacro:(id )value forSymbol:(MLKSymbol *)symbol +{ + [_knownCompilerMacros addObject:symbol]; + [_compilerMacros addValue:value forSymbol:symbol]; +} + +-(void) setCompilerMacro:(id )value forSymbol:(MLKSymbol *)symbol +{ + [_compilerMacros setValue:value forSymbol:symbol]; +} + -(id ) symbolMacroForSymbol:(MLKSymbol *)symbol { return [_symbolMacros valueForSymbol:symbol]; @@ -247,9 +268,11 @@ static MLKSymbol *LEXICAL; -(void) dealloc { RELEASE (_macros); + RELEASE (_compilerMacros); + RELEASE (_symbolMacros); RELEASE (_knownMacros); + RELEASE (_knownCompilerMacros); RELEASE (_knownSymbolMacros); - RELEASE (_symbolMacros); RELEASE (_goTags); RELEASE (_functions); RELEASE (_variables); -- cgit v1.2.3