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 boolean
doSaveTopLevelRedefs()
When true, top-level defs should push rather then replace old ones.void
getCompletingSymbols(String initialPart, int namespace, List<? super String> candidates)
static NameLookup
getInstance(Environment env, Language language)
Get or create a NameLookup instance for a given Environment.Language
getLanguage()
Declaration
lookup(Object symbol, boolean function)
Declaration
lookup(Object symbol, int namespace)
boolean
pop(Declaration decl)
void
pop(ScopeExp exp)
void
popSaveTopLevelRedefs()
void
push(Declaration decl)
void
push(ScopeExp exp)
void
pushSaveTopLevelRedefs()
void
removeSubsumed(Declaration decl)
Remove visible declarations subsumed (hidden) by a given declaration.static void
setInstance(Environment env, NameLookup instance)
void
setLanguage(Language language)
protected boolean
subsumedBy(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)
-
-