gnu.mapping
Class PropertyLocation

java.lang.Object
  extended by gnu.mapping.Location
      extended by gnu.mapping.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 contains a number of static methods useful for working with property lists.


Field Summary
 
Fields inherited from class gnu.mapping.Location
UNBOUND
 
Constructor Summary
PropertyLocation()
           
 
Method Summary
 java.lang.Object get(java.lang.Object defaultValue)
           
static java.lang.Object getProperty(java.lang.Object symbol, java.lang.Object property, java.lang.Object defaultValue)
          Gets a property value associated with an object.
static java.lang.Object getProperty(java.lang.Object symbol, java.lang.Object property, java.lang.Object defaultValue, Environment env)
          Gets a property value associated with an object.
static java.lang.Object getPropertyList(java.lang.Object symbol)
          Get the property list associated with object in the current Environment.
static java.lang.Object getPropertyList(java.lang.Object symbol, Environment env)
          Get the property list assocated with an object in a given Environment.
 boolean isBound()
           
static java.lang.Object plistGet(java.lang.Object plist, java.lang.Object prop, java.lang.Object dfault)
          Given a property list and a key, find the corresponding property value.
static java.lang.Object plistPut(java.lang.Object plist, java.lang.Object prop, java.lang.Object value)
          Modify and add a property binding to a property list.
static java.lang.Object plistRemove(java.lang.Object plist, java.lang.Object prop)
          Remove a property binding from a property list.
static void putProperty(java.lang.Object symbol, java.lang.Object property, java.lang.Object newValue)
          Sets a property value associated with an object.
static void putProperty(java.lang.Object symbol, java.lang.Object property, java.lang.Object newValue, Environment env)
           
static boolean removeProperty(java.lang.Object symbol, java.lang.Object property)
          Remove a properaty assocatied with an object.
static boolean removeProperty(java.lang.Object symbol, java.lang.Object property, Environment env)
          Remove a properaty assocatied with an object.
 void set(java.lang.Object newValue)
           
static void setPropertyList(java.lang.Object symbol, java.lang.Object plist)
          Set the property list assocated with an object in a given Environment.
static void setPropertyList(java.lang.Object symbol, java.lang.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, getBase, getKeyProperty, getKeySymbol, getValue, isConstant, make, make, make, print, setRestore, setValue, setWithSave, toString, undefine
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

PropertyLocation

public PropertyLocation()
Method Detail

get

public final java.lang.Object get(java.lang.Object defaultValue)
Specified by:
get in class Location

isBound

public boolean isBound()
Overrides:
isBound in class Location

set

public final void set(java.lang.Object newValue)
Specified by:
set in class Location

getPropertyList

public static java.lang.Object getPropertyList(java.lang.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.)

getPropertyList

public static java.lang.Object getPropertyList(java.lang.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.)

setPropertyList

public static void setPropertyList(java.lang.Object symbol,
                                   java.lang.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.)

setPropertyList

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

See Also:
setPropertyList(Object, Object, Environment).

getProperty

public static java.lang.Object getProperty(java.lang.Object symbol,
                                           java.lang.Object property,
                                           java.lang.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.

getProperty

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

See Also:
getProperty(Object, Object, Object, Environment).

putProperty

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

putProperty

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


removeProperty

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


removeProperty

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


plistGet

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


plistPut

public static java.lang.Object plistPut(java.lang.Object plist,
                                        java.lang.Object prop,
                                        java.lang.Object value)
Modify and add a property binding to a property list.

Returns:
The updated property list.

plistRemove

public static java.lang.Object plistRemove(java.lang.Object plist,
                                           java.lang.Object prop)
Remove a property binding from a property list.

Returns:
The updated property list.