Package gnu.mapping
Class Symbol
java.lang.Object
gnu.mapping.Symbol
- All Implemented Interfaces:
EnvironmentKey,Externalizable,Serializable,Comparable
- Direct Known Subclasses:
Keyword,SimpleSymbol,XName
A Symbol is a name, usually in a specific Namespace.
A Symbol is stateless: Common 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.- See Also:
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionintstatic booleanfinal booleanJust tests for identity.final Objectfinal Symbolfinal StringSynonym for getName - the "print name" of the symbol without Namespace.final Stringfinal StringgetName()final Namespacefinal Stringfinal Stringfinal booleaninthashCode()final booleanstatic SymbolFind or create a symbol in a specificed namespace.static SymbolFind or create a symbol in a specificed namespace.static SymbolmakeUninterned(String name) static SymbolmakeUninterned(String name, Namespace namespace) static SymbolmakeWithUnknownNamespace(String local, String prefix) Make a placeholder symbol with a known prefix and unknown namespace-uri.booleanmatches(EnvironmentKey key) booleanstatic SymbolParse a String as a Symbol.voidfinal voidtoString()toString(char style) Convert a Symbol to a printable String.static SimpleSymbolstatic Symbolstatic Symbolvoid
-
Field Details
-
name
-
FUNCTION
Conventional value used as a property key for function bindings. -
PLIST
Conventional value used as aSymbolname to access anObject's property list. A property list is a list with a even number ofPairs, 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.)
-
-
Constructor Details
-
Symbol
public Symbol() -
Symbol
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
-
getKeySymbol
- Specified by:
getKeySymbolin interfaceEnvironmentKey
-
getKeyProperty
- Specified by:
getKeyPropertyin interfaceEnvironmentKey
-
matches
- Specified by:
matchesin interfaceEnvironmentKey
-
matches
- Specified by:
matchesin interfaceEnvironmentKey
-
getNamespaceURI
-
getLocalPart
-
getPrefix
-
hasEmptyNamespace
public final boolean hasEmptyNamespace() -
hasUnknownNamespace
public final boolean hasUnknownNamespace() -
getLocalName
Synonym for getName - the "print name" of the symbol without Namespace. Useful when thinking of a Symbol as an XML QName. -
getName
-
make
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""
-
make
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.
-
valueOf
-
valueOf
-
valueOf
-
parse
Parse a String as a Symbol. Recognizes:"{namespace-uri}:local-name"- which creates a symbol with that namespace-uri and an empty prefix;"{namespace-uri}local-name"- which is the same as above"prefix{namespace-uri}:local-name"- which creates a symbok with that prefix and namespace-uri"prefix:local-name"- which creates a symbol with that prefix and an "unknown" namespace-uri, usingmakeWithUnknownNamespace(java.lang.String, java.lang.String);- and plain
"local-name"- which creates a symbol inNamespace.EmptyNamespace.
-
makeWithUnknownNamespace
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 the prefix combined withNamespace.makeUnknownNamespace(String). -
makeUninterned
-
makeUninterned
-
compareTo
- Specified by:
compareToin interfaceComparable
-
equals
-
equals
Just tests for identity. Otherwise hashTables that have Symbols as keys will break. -
hashCode
public int hashCode() -
getNamespace
-
setNamespace
-
toString
-
toString
Convert a Symbol to a printable String.- Parameters:
style- if 'P' then print prefix if available (otherwise Uri), if 'U' then print Uri if available (otherwise prefix), if '+' then print both if available.
-
writeExternal
- Specified by:
writeExternalin interfaceExternalizable- Throws:
IOException
-
readExternal
- Specified by:
readExternalin interfaceExternalizable- Throws:
IOExceptionClassNotFoundException
-
readResolve
- Throws:
ObjectStreamException
-