Package gnu.mapping
Class Namespace
- java.lang.Object
-
- java.util.AbstractMap<K,V>
-
- gnu.kawa.util.AbstractHashTable<gnu.mapping.SymbolRef,java.lang.String,Symbol>
-
- gnu.mapping.Namespace
-
- All Implemented Interfaces:
HasNamedParts,java.io.Externalizable,java.io.Serializable,java.util.Map<java.lang.String,Symbol>
- Direct Known Subclasses:
ClassNamespace,LispPackage,XmlNamespace
public class Namespace extends AbstractHashTable<gnu.mapping.SymbolRef,java.lang.String,Symbol> implements java.io.Externalizable, HasNamedParts
A mapping from strings ("print names") toSymbols. Namespaces are normally named and can be accessed from a global table. They correspond to Common Lisp "packages" (which are implemented usinggnu.kawa.lispexpr.LispPackage, which extendsNamespace). ANamespaceis a "weak" mapping in the sense that aSymbolcan be garbage collected even though it is referenced from aNamespace.- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static NamespaceEmptyNamespaceThe Namespace with the empty name.protected static java.util.HashtablensTableMap namepsace names (and nick-names) to Namespaces.protected java.lang.Stringprefixstatic java.lang.StringUNKNOWN_NAMESPACE-
Fields inherited from class gnu.kawa.util.AbstractHashTable
DEFAULT_INITIAL_SIZE, mask, num_bindings, table
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Symboladd(Symbol sym, int hash)protected gnu.mapping.SymbolRef[]allocEntries(int n)Allocate Entry[n].static Namespacecreate()static Namespacecreate(int capacity)Symbolget(java.lang.Object key, Symbol defaultValue)Find value for given key.java.lang.Objectget(java.lang.String key)static NamespacegetDefault()static SymbolgetDefaultSymbol(java.lang.String name)protected intgetEntryHashCode(gnu.mapping.SymbolRef entry)Extract hash-code from Entry.protected gnu.mapping.SymbolRefgetEntryNext(gnu.mapping.SymbolRef entry)Extract next Entry in same hash-bucket.java.lang.StringgetName()Get the name of this Namespace.java.lang.StringgetPrefix()SymbolgetSymbol(java.lang.String key)Get a Symbol matching the given name.booleanisConstant(java.lang.String key)booleanisUnknownNamespace()A namespace with known prefix but unknown uri.Symbollookup(java.lang.String key)Get a Symbol matching the given name.Symbollookup(java.lang.String key, int hash, boolean create)protected SymbollookupInternal(java.lang.String key, int hash)Search for an existing Symbol with the give name.protected gnu.mapping.SymbolRefmakeEntry(java.lang.String key, int hash, Symbol value)Allocate a new node in the hash table.static NamespacemakeUnknownNamespace(java.lang.String prefix)Create a "placeholder" for a namespace with a known prefix but unknown uri.voidreadExternal(java.io.ObjectInput in)java.lang.ObjectreadResolve()booleanremove(Symbol symbol)protected voidsetEntryNext(gnu.mapping.SymbolRef entry, gnu.mapping.SymbolRef next)Set next Entry in same hash-bucket.voidsetName(java.lang.String name)Set the name of this Namespace.java.lang.StringtoString()static NamespacevalueOf()static NamespacevalueOf(java.lang.String name)Return Namespace with the given name (namespace-URI).static NamespacevalueOf(java.lang.String uri, SimpleSymbol prefix)static NamespacevalueOf(java.lang.String uri, java.lang.String prefix)static NamespacevalueOfNoCreate(java.lang.String name)Return Namespace with the given name (namespace-URI), if it exists.voidwriteExternal(java.io.ObjectOutput out)-
Methods inherited from class gnu.kawa.util.AbstractHashTable
clear, entrySet, get, getNode, 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, values
-
-
-
-
Field Detail
-
nsTable
protected static final java.util.Hashtable nsTable
Map namepsace names (and nick-names) to Namespaces.
-
EmptyNamespace
public static final Namespace EmptyNamespace
The Namespace with the empty name.
-
prefix
protected java.lang.String prefix
-
UNKNOWN_NAMESPACE
public static final java.lang.String UNKNOWN_NAMESPACE
-
-
Method Detail
-
getName
public final java.lang.String getName()
Get the name of this Namespace.
-
setName
public final void setName(java.lang.String name)
Set the name of this Namespace.
-
getPrefix
public final java.lang.String getPrefix()
-
create
public static Namespace create(int capacity)
-
create
public static Namespace create()
-
getDefault
public static Namespace getDefault()
-
getDefaultSymbol
public static Symbol getDefaultSymbol(java.lang.String name)
-
valueOf
public static Namespace valueOf()
-
valueOf
public static Namespace valueOf(java.lang.String name)
Return Namespace with the given name (namespace-URI). Create it if needed.
-
valueOfNoCreate
public static Namespace valueOfNoCreate(java.lang.String name)
Return Namespace with the given name (namespace-URI), if it exists. Return null if no such namespace exists.
-
valueOf
public static Namespace valueOf(java.lang.String uri, java.lang.String prefix)
-
valueOf
public static Namespace valueOf(java.lang.String uri, SimpleSymbol prefix)
-
isUnknownNamespace
public boolean isUnknownNamespace()
A namespace with known prefix but unknown uri.
-
makeUnknownNamespace
public static Namespace makeUnknownNamespace(java.lang.String prefix)
Create a "placeholder" for a namespace with a known prefix but unknown uri.
-
get
public java.lang.Object get(java.lang.String key)
- Specified by:
getin interfaceHasNamedParts
-
isConstant
public boolean isConstant(java.lang.String key)
- Specified by:
isConstantin interfaceHasNamedParts
-
getSymbol
public Symbol getSymbol(java.lang.String key)
Get a Symbol matching the given name. Creates a new Symbol if one is not found. Equivalent to Common Lisp's "intern" function.
-
lookup
public Symbol lookup(java.lang.String key)
Get a Symbol matching the given name. Returns null if one is not found.
-
lookupInternal
protected final Symbol lookupInternal(java.lang.String key, int hash)
Search for an existing Symbol with the give name.- Parameters:
key- String - does not need to be interned.
-
get
public Symbol get(java.lang.Object key, Symbol defaultValue)
Description copied from class:AbstractHashTableFind value for given key. Return defaultValue if not found.- Overrides:
getin classAbstractHashTable<gnu.mapping.SymbolRef,java.lang.String,Symbol>
-
lookup
public Symbol lookup(java.lang.String key, int hash, boolean create)
-
remove
public boolean remove(Symbol symbol)
-
getEntryHashCode
protected int getEntryHashCode(gnu.mapping.SymbolRef entry)
Description copied from class:AbstractHashTableExtract hash-code from Entry.- Specified by:
getEntryHashCodein classAbstractHashTable<gnu.mapping.SymbolRef,java.lang.String,Symbol>
-
getEntryNext
protected gnu.mapping.SymbolRef getEntryNext(gnu.mapping.SymbolRef entry)
Extract next Entry in same hash-bucket.- Specified by:
getEntryNextin classAbstractHashTable<gnu.mapping.SymbolRef,java.lang.String,Symbol>
-
setEntryNext
protected void setEntryNext(gnu.mapping.SymbolRef entry, gnu.mapping.SymbolRef next)Set next Entry in same hash-bucket.- Specified by:
setEntryNextin classAbstractHashTable<gnu.mapping.SymbolRef,java.lang.String,Symbol>
-
allocEntries
protected gnu.mapping.SymbolRef[] allocEntries(int n)
Allocate Entry[n].- Specified by:
allocEntriesin classAbstractHashTable<gnu.mapping.SymbolRef,java.lang.String,Symbol>
-
makeEntry
protected gnu.mapping.SymbolRef makeEntry(java.lang.String key, int hash, Symbol value)Description copied from class:AbstractHashTableAllocate a new node in the hash table.- Specified by:
makeEntryin classAbstractHashTable<gnu.mapping.SymbolRef,java.lang.String,Symbol>
-
writeExternal
public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException- Specified by:
writeExternalin interfacejava.io.Externalizable- Throws:
java.io.IOException
-
readExternal
public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException- Specified by:
readExternalin interfacejava.io.Externalizable- Throws:
java.io.IOExceptionjava.lang.ClassNotFoundException
-
readResolve
public java.lang.Object readResolve() throws java.io.ObjectStreamException- Throws:
java.io.ObjectStreamException
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.util.AbstractMap<java.lang.String,Symbol>
-
-