gnu.mapping
Class Namespace

java.lang.Object
  extended by gnu.mapping.Namespace
All Implemented Interfaces:
HasNamedParts, java.io.Externalizable, java.io.Serializable
Direct Known Subclasses:
ClassNamespace, LispPackage, XmlNamespace

public class Namespace
extends java.lang.Object
implements java.io.Externalizable, HasNamedParts

A mapping from strings ("print names") to Symbols. Namespaces are normally named and can be accessed from a global table. They correspond to Common Lisp "packages" (which are implemented using gnu.kawa.lispexpr.LispPackage, which extends Namespace). A Namespace is a "weak" mapping in the sense that a Symbol can be garbage collected even though it is referenced from a Namespace.

See Also:
Serialized Form

Field Summary
static Namespace EmptyNamespace
          The Namespace with the empty name.
protected static java.util.Hashtable nsTable
          Map namepsace names (and nick-names) to Namespaces.
protected  java.lang.String prefix
           
protected  gnu.mapping.SymbolRef[] table
           
 
Constructor Summary
Namespace()
           
Namespace(int capacity)
           
 
Method Summary
 Symbol add(Symbol sym, int hash)
           
 java.lang.Object get(java.lang.String name)
           
static Namespace getDefault()
           
static Symbol getDefaultSymbol(java.lang.String name)
           
static Namespace getInstance(java.lang.String name)
           
 java.lang.String getName()
          Get the name of this Namespace.
 Symbol getSymbol(java.lang.String key)
          Get a Symbol matching the given name.
 boolean isConstant(java.lang.String key)
           
 Symbol lookup(java.lang.String key)
          Get a Symbol matching the given name.
 Symbol lookup(java.lang.String key, int hash, boolean create)
           
protected  Symbol lookupInternal(java.lang.String key, int hash)
           
static Namespace make(java.lang.String name)
           
static Namespace make(java.lang.String uri, java.lang.String prefix)
           
static Namespace makeUnknownNamespace(java.lang.String prefix)
          Create a "placeholder" for a namespace with a known prefix but unknown uri.
 void readExternal(java.io.ObjectInput in)
           
 java.lang.Object readResolve()
           
protected  void rehash()
           
 boolean remove(Symbol symbol)
           
 void setName(java.lang.String name)
          Set the name of this Namespace.
 java.lang.String toString()
           
 void writeExternal(java.io.ObjectOutput out)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

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

table

protected gnu.mapping.SymbolRef[] table
Constructor Detail

Namespace

public Namespace()

Namespace

public Namespace(int capacity)
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.


getDefault

public static Namespace getDefault()

getDefaultSymbol

public static Symbol getDefaultSymbol(java.lang.String name)

make

public static Namespace make(java.lang.String name)

getInstance

public static Namespace getInstance(java.lang.String name)

make

public static Namespace make(java.lang.String uri,
                             java.lang.String prefix)

makeUnknownNamespace

public static Namespace makeUnknownNamespace(java.lang.String prefix)
Create a "placeholder" for a namespace with a known prefix but unknown uri.

See Also:
Symbol.makeWithUnknownNamespace(java.lang.String, java.lang.String)

get

public java.lang.Object get(java.lang.String name)
Specified by:
get in interface HasNamedParts

isConstant

public boolean isConstant(java.lang.String key)
Specified by:
isConstant in interface HasNamedParts

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)

add

public Symbol add(Symbol sym,
                  int hash)

lookup

public Symbol lookup(java.lang.String key,
                     int hash,
                     boolean create)

remove

public boolean remove(Symbol symbol)

rehash

protected void rehash()

writeExternal

public void writeExternal(java.io.ObjectOutput out)
                   throws java.io.IOException
Specified by:
writeExternal in interface java.io.Externalizable
Throws:
java.io.IOException

readExternal

public void readExternal(java.io.ObjectInput in)
                  throws java.io.IOException,
                         java.lang.ClassNotFoundException
Specified by:
readExternal in interface java.io.Externalizable
Throws:
java.io.IOException
java.lang.ClassNotFoundException

readResolve

public java.lang.Object readResolve()
                             throws java.io.ObjectStreamException
Throws:
java.io.ObjectStreamException

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object