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 TypeMethodDescriptionint
static boolean
final boolean
Just tests for identity.final Object
final Symbol
final String
Synonym for getName - the "print name" of the symbol without Namespace.final String
final String
getName()
final Namespace
final String
final String
final boolean
int
hashCode()
final boolean
static Symbol
Find or create a symbol in a specificed namespace.static Symbol
Find or create a symbol in a specificed namespace.static Symbol
makeUninterned
(String name) static Symbol
makeUninterned
(String name, Namespace namespace) static Symbol
makeWithUnknownNamespace
(String local, String prefix) Make a placeholder symbol with a known prefix and unknown namespace-uri.boolean
matches
(EnvironmentKey key) boolean
static Symbol
Parse a String as a Symbol.void
final void
toString()
toString
(char style) Convert a Symbol to a printable String.static SimpleSymbol
static Symbol
static Symbol
void
-
Field Details
-
name
-
FUNCTION
Conventional value used as a property key for function bindings. -
PLIST
Conventional value used as aSymbol
name to access anObject
's property list. A property list is a list with a even number ofPair
s, 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:
getKeySymbol
in interfaceEnvironmentKey
-
getKeyProperty
- Specified by:
getKeyProperty
in interfaceEnvironmentKey
-
matches
- Specified by:
matches
in interfaceEnvironmentKey
-
matches
- Specified by:
matches
in 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:
compareTo
in 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:
writeExternal
in interfaceExternalizable
- Throws:
IOException
-
readExternal
- Specified by:
readExternal
in interfaceExternalizable
- Throws:
IOException
ClassNotFoundException
-
readResolve
- Throws:
ObjectStreamException
-