Package gnu.expr
Class NameLookup
- java.lang.Object
-
- java.util.AbstractMap<K,V>
-
- gnu.kawa.util.AbstractHashTable<HashNode<K,V>,K,V>
-
- gnu.kawa.util.GeneralHashTable<Object,Declaration>
-
- gnu.expr.NameLookup
-
- All Implemented Interfaces:
Map<Object,Declaration>
public class NameLookup extends GeneralHashTable<Object,Declaration>
Manages the set of declarations "currently" in scope.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class java.util.AbstractMap
AbstractMap.SimpleEntry<K extends Object,V extends Object>, AbstractMap.SimpleImmutableEntry<K extends Object,V extends Object>
-
-
Field Summary
-
Fields inherited from class gnu.kawa.util.AbstractHashTable
DEFAULT_INITIAL_SIZE, mask, num_bindings, table
-
-
Constructor Summary
Constructors Constructor Description NameLookup(Language language)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description booleandoSaveTopLevelRedefs()When true, top-level defs should push rather then replace old ones.voidgetCompletingSymbols(String initialPart, int namespace, List<? super String> candidates)static NameLookupgetInstance(Environment env, Language language)Get or create a NameLookup instance for a given Environment.LanguagegetLanguage()Declarationlookup(Object symbol, boolean function)Declarationlookup(Object symbol, int namespace)booleanpop(Declaration decl)voidpop(ScopeExp exp)voidpopSaveTopLevelRedefs()voidpush(Declaration decl)voidpush(ScopeExp exp)voidpushSaveTopLevelRedefs()voidremoveSubsumed(Declaration decl)Remove visible declarations subsumed (hidden) by a given declaration.static voidsetInstance(Environment env, NameLookup instance)voidsetLanguage(Language language)protected booleansubsumedBy(Declaration decl, Declaration other)True if decl subsumes (hides) other.-
Methods inherited from class gnu.kawa.util.GeneralHashTable
allocEntries, getEntryHashCode, getEntryNext, getNode, makeEntry, setEntryNext
-
Methods inherited from class gnu.kawa.util.AbstractHashTable
clear, entrySet, get, get, getOrDefault, hash, hashToIndex, matches, matches, put, put, rehash, remove, size
-
Methods inherited from class java.util.AbstractMap
clone, containsKey, containsValue, equals, hashCode, isEmpty, keySet, putAll, toString, values
-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, forEach, merge, putIfAbsent, remove, replace, replace, replaceAll
-
-
-
-
Constructor Detail
-
NameLookup
public NameLookup(Language language)
-
-
Method Detail
-
getLanguage
public Language getLanguage()
-
setLanguage
public void setLanguage(Language language)
-
getInstance
public static NameLookup getInstance(Environment env, Language language)
Get or create a NameLookup instance for a given Environment. We want the same NameLookup instance to be used for multiple interactive commands in the same "session", to preserve top-level declarations. We do that by registering it in the Environment.
-
setInstance
public static void setInstance(Environment env, NameLookup instance)
-
doSaveTopLevelRedefs
public boolean doSaveTopLevelRedefs()
When true, top-level defs should push rather then replace old ones. Otherwise, a module-level declaration should replace a matching previous declaration, to avoid leaks. However, sometimes we temporarily push new declarations that should not permanently replace old declarations - for example when a hygienic macro changes the current scope.
-
pushSaveTopLevelRedefs
public void pushSaveTopLevelRedefs()
-
popSaveTopLevelRedefs
public void popSaveTopLevelRedefs()
-
push
public void push(Declaration decl)
-
pop
public boolean pop(Declaration decl)
-
push
public void push(ScopeExp exp)
-
pop
public void pop(ScopeExp exp)
-
removeSubsumed
public void removeSubsumed(Declaration decl)
Remove visible declarations subsumed (hidden) by a given declaration. This is primarily used to avoid memory leaks.
-
subsumedBy
protected boolean subsumedBy(Declaration decl, Declaration other)
True if decl subsumes (hides) other.
-
lookup
public Declaration lookup(Object symbol, int namespace)
-
lookup
public Declaration lookup(Object symbol, boolean function)
-
-