gnu.mapping

Class Symbol

Implemented Interfaces:
Comparable, EnvironmentKey, Externalizable
Known Direct Subclasses:
Keyword, XName

public class Symbol
extends java.lang.Object
implements EnvironmentKey, Comparable, Externalizable

A Symbol is a name, usually in a specific Namespace. A Symbol is stateless: Comon Lisp-style "value", "function" and "property list" bindings are not part of the Symbol itself, but looked up in the current Environment. A Symbol may be viewed as an EnvironmentKey with a null property component.

Field Summary

static Symbol
FUNCTION
Conventional value used as a property key for function bindings.
static Symbol
PLIST
Conventional value used as a Symbol name to access an Object's property list.
protected String
name

Fields inherited from interface gnu.mapping.EnvironmentKey

FUNCTION

Constructor Summary

Symbol()
Symbol(Namespace ns, String name)
Create new Symbol in a given namespace.

Method Summary

int
compareTo(Object o)
boolean
equals(Object o)
Just tests for identity.
static boolean
equals(Symbol sym1, Symbol sym2)
Object
getKeyProperty()
Symbol
getKeySymbol()
String
getLocalName()
Synonym for getName - the "print name" of the symbol without Namespace.
String
getLocalPart()
String
getName()
Namespace
getNamespace()
String
getNamespaceURI()
String
getPrefix()
boolean
hasEmptyNamespace()
int
hashCode()
static Symbol
make(Object namespace, String name)
Find or create a symbol in a specificed namespace.
static Symbol
make(String uri, String name, String prefix)
Find or create a symbol in a specificed namespace.
static Symbol
makeUninterned(String name)
static Symbol
makeWithUnknownNamespace(String local, String prefix)
Make a placeholder symbol with a known prefix and unknown namespace-uri.
boolean
matches(EnvironmentKey key)
boolean
matches(Symbol symbol, Object property)
static Symbol
parse(String symbol)
Parse a String as a Symbol.
void
readExternal(ObjectInput in)
Object
readResolve()
void
setNamespace(Namespace ns)
String
toString()
void
writeExternal(ObjectOutput out)

Field Details

FUNCTION

public static final Symbol FUNCTION
Conventional value used as a property key for function bindings.

PLIST

public static final Symbol PLIST
Conventional value used as a Symbol name to access an Object's property list. A property list is a list with a even number of Pairs, containing alternating keys and values. They are used in Common Lisp and Emacs Lisp. Kawa (following XEmacs) allows arbitrary objects to have property lists, thus the PLIST as used as the name and the object as the property. (In the future we'll do somethingg clever so that get(SYMBOL, KEY) as the same as getf(get(PLIST, SYMBOL), KEY) - but much faster.)

name

protected String name

Constructor Details

Symbol

public Symbol()

Symbol

public Symbol(Namespace ns,
              String name)
Create new Symbol in a given namespace. Does not enter the result in the namespace's symbol table.
Parameters:
name - an interned String

Method Details

compareTo

public int compareTo(Object o)

equals

public final boolean equals(Object o)
Just tests for identity. Otherwise hashTables that have Symbols as keys will break.

equals

public static boolean equals(Symbol sym1,
                             Symbol sym2)

getKeyProperty

public final Object getKeyProperty()
Specified by:
getKeyProperty in interface EnvironmentKey

getKeySymbol

public final Symbol getKeySymbol()
Specified by:
getKeySymbol in interface EnvironmentKey

getLocalName

public final String getLocalName()
Synonym for getName - the "print name" of the symbol without Namespace. Useful when thinking of a Symbol as an XML QName.

getLocalPart

public final String getLocalPart()

getName

public final String getName()

getNamespace

public final Namespace getNamespace()

getNamespaceURI

public final String getNamespaceURI()

getPrefix

public final String getPrefix()

hasEmptyNamespace

public final boolean hasEmptyNamespace()

hashCode

public int hashCode()

make

public static Symbol make(Object namespace,
                          String name)
Find or create a symbol in a specificed namespace.
Parameters:
namespace - can be an Namespace, or a namespace/environment name (resolved using Namespace.getInstance), or null (in which case an uninterned symbol is created).
name - The "local name" or "print name" of the desired symbol.

make

public static Symbol make(String uri,
                          String name,
                          String prefix)
Find or create a symbol in a specificed namespace.
Parameters:
uri - a namespace uri.
name - The "local name" or "print name" of the desired symbol.
prefix - namespace prefix, or ""

makeUninterned

public static Symbol makeUninterned(String name)

makeWithUnknownNamespace

public static Symbol makeWithUnknownNamespace(String local,
                                              String prefix)
Make a placeholder symbol with a known prefix and unknown namespace-uri. This is convenient for processing definition commands like "prefix:name=value" - such as on the Kawa command-line - where we don't yet know the namespace-uri. Code that later looks for a value should look both under the true namespace-uri and less LOG.JA * using this method (or Namespace.makeUnknownNamespace(String)).

matches

public boolean matches(EnvironmentKey key)
Specified by:
matches in interface EnvironmentKey

matches

public boolean matches(Symbol symbol,
                       Object property)
Specified by:
matches in interface EnvironmentKey

parse

public static Symbol parse(String symbol)
Parse a String as a Symbol. Recognizes:
  • "{namespace-urilocal-name"} - which creates a symbol with that namespace-uri and an empty prefix;
  • "prefix:local-name"- which creates a symbol with that prefix and an "unknown" namespace-uri, using makeWithUnknownNamespace(String,String);
  • and plain "local-name" - which creates a symbol in Namespace.EmptyNamespace.

readExternal

public void readExternal(ObjectInput in)
            throws IOException,
                   ClassNotFoundException

readResolve

public Object readResolve()
            throws ObjectStreamException

setNamespace

public final void setNamespace(Namespace ns)

toString

public String toString()

writeExternal

public void writeExternal(ObjectOutput out)
            throws IOException