gnu.mapping

Class PropertyLocation


public class PropertyLocation
extends Location

Used to implement Lisp-style "property lists". A PropertyLocation is a location whose value is the car of a property list. This class also contaisn a number of static methods useful for working with property lists.

Field Summary

Fields inherited from class gnu.mapping.Location

UNBOUND

Method Summary

Object
get(Object defaultValue)
static Object
getProperty(Object symbol, Object property, Object defaultValue)
Gets a property value associated with an object.
static Object
getProperty(Object symbol, Object property, Object defaultValue, Environment env)
Gets a property value associated with an object.
static Object
getPropertyList(Object symbol)
Get the property list associated with object in the current Environment.
static Object
getPropertyList(Object symbol, Environment env)
Get the property list assocated with an object in a given Environment.
boolean
isBound()
static Object
plistGet(Object plist, Object prop, Object dfault)
Given a property list and a key, find the corresponding property value.
static Object
plistPut(Object plist, Object prop, Object value)
Modify and add a property binding to a property list.
static Object
plistRemove(Object plist, Object prop)
Remove a property binding from a property list.
static void
putProperty(Object symbol, Object property, Object newValue)
Sets a property value associated with an object.
static void
putProperty(Object symbol, Object property, Object newValue, Environment env)
static boolean
removeProperty(Object symbol, Object property)
Remove a properaty assocatied with an object.
static boolean
removeProperty(Object symbol, Object property, Environment env)
Remove a properaty assocatied with an object.
void
set(Object newValue)
static void
setPropertyList(Object symbol, Object plist)
Set the property list assocated with an object in a given Environment.
static void
setPropertyList(Object symbol, Object plist, Environment env)
Set the property list assocated with an object in a given Environment.

Methods inherited from class gnu.mapping.Location

entered, get, get, getBase, getKeyProperty, getKeySymbol, getValue, isBound, isConstant, make, make, make, print, set, setRestore, setValue, setWithSave, toString, undefine

Method Details

get

public final Object get(Object defaultValue)
Overrides:
get in interface Location

getProperty

public static Object getProperty(Object symbol,
                                 Object property,
                                 Object defaultValue)
Gets a property value associated with an object. Corresponds to Common Lisp's get function.

getProperty

public static Object getProperty(Object symbol,
                                 Object property,
                                 Object defaultValue,
                                 Environment env)
Gets a property value associated with an object.
Parameters:
symbol - Usually a Symbol, but can be any Object>/code>. A String is converted to a Symbol using env.getSymbol(). Symbols require a constant-type hash lookup; other object are serached linearly.

getPropertyList

public static Object getPropertyList(Object symbol)
Get the property list associated with object in the current Environment. Corresponds to Common Lisp's symbol-plist function.
Parameters:
symbol - Usually but not necessarily a Symbol. (A String is not converted a Symbol by this method.)

getPropertyList

public static Object getPropertyList(Object symbol,
                                     Environment env)
Get the property list assocated with an object in a given Environment.
Parameters:
symbol - Usually but not necessarily a Symbol. (A String is not converted a Symbol by this method.)

isBound

public boolean isBound()
Overrides:
isBound in interface Location

plistGet

public static Object plistGet(Object plist,
                              Object prop,
                              Object dfault)
Given a property list and a key, find the corresponding property value.

plistPut

public static Object plistPut(Object plist,
                              Object prop,
                              Object value)
Modify and add a property binding to a property list.
Returns:
The updated property list.

plistRemove

public static Object plistRemove(Object plist,
                                 Object prop)
Remove a property binding from a property list.
Returns:
The updated property list.

putProperty

public static void putProperty(Object symbol,
                               Object property,
                               Object newValue)
Sets a property value associated with an object. Corresponds to Common Lisp's (setf get) function.

putProperty

public static void putProperty(Object symbol,
                               Object property,
                               Object newValue,
                               Environment env)

removeProperty

public static boolean removeProperty(Object symbol,
                                     Object property)
Remove a properaty assocatied with an object. Corresponds to Common Lisp's remprop function.

removeProperty

public static boolean removeProperty(Object symbol,
                                     Object property,
                                     Environment env)
Remove a properaty assocatied with an object.

set

public final void set(Object newValue)
Overrides:
set in interface Location

setPropertyList

public static void setPropertyList(Object symbol,
                                   Object plist)
Set the property list assocated with an object in a given Environment. Corresponds to Common Lisp's (setf symbol-plist) function.

setPropertyList

public static void setPropertyList(Object symbol,
                                   Object plist,
                                   Environment env)
Set the property list assocated with an object in a given Environment. This function should be avoided, since a Symbol's property list may be used by unknown classes. It also can be slow.
Parameters:
symbol - Usually but not necessarily a Symbol. (A String is not converted a Symbol by this method.)