gnu.mapping

Class IndirectableLocation

Known Direct Subclasses:
BufferLocal, NamedLocation

public abstract class IndirectableLocation
extends Location

Field Summary

protected static Object
DIRECT_ON_SET
If value==DIRECT_ON_SET, break indirection on a set.
protected static Object
INDIRECT_FLUIDS
If value has this value, force indirection even for the setWithSave operation.
protected Location
base
If non-null, operations are forwarded to the base location.
protected Object
value
If base is null, the current value stored in this Location.

Fields inherited from class gnu.mapping.Location

UNBOUND

Method Summary

Location
getBase()
Location
getBaseForce()
Environment
getEnvironment()
Object
getKeyProperty()
Symbol
getKeySymbol()
boolean
isConstant()
void
setAlias(Location base)
Define this Location as an alias for some other Location.
void
setBase(Location base)
void
undefine()

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

Field Details

DIRECT_ON_SET

protected static final Object DIRECT_ON_SET
If value==DIRECT_ON_SET, break indirection on a set.

INDIRECT_FLUIDS

protected static final Object INDIRECT_FLUIDS
If value has this value, force indirection even for the setWithSave operation. Ignoring the restore aspect of a fluid-let, it is normally treated as closer to a define than to a set, in that we break the sharing with another Environment. Setting value to INDIRECT_FLUIDS means we do not want to break the indirection in this case.

base

protected Location base
If non-null, operations are forwarded to the base location.

value

protected Object value
If base is null, the current value stored in this Location. If base is non-null, then value is generally ignored. However, the special value DIRECT_ON_SET means that writes change change value directly, instead of setting the value of base.

Method Details

getBase

public Location getBase()
Overrides:
getBase in interface Location

getBaseForce

public Location getBaseForce()

getEnvironment

public Environment getEnvironment()

getKeyProperty

public Object getKeyProperty()
Overrides:
getKeyProperty in interface Location

getKeySymbol

public Symbol getKeySymbol()
Overrides:
getKeySymbol in interface Location

isConstant

public boolean isConstant()
Overrides:
isConstant in interface Location

setAlias

public void setAlias(Location base)
Define this Location as an alias for some other Location.

setBase

public void setBase(Location base)

undefine

public void undefine()
Overrides:
undefine in interface Location