gnu.mapping

Class IndirectableLocation

public abstract class IndirectableLocation extends Location

Field Summary
protected Locationbase
If non-null, operations are forwarded to the base location.
protected static ObjectDIRECT_ON_SET
If value==DIRECT_ON_SET, break indirection on a set.
protected static ObjectINDIRECT_FLUIDS
If value has this value, force indirection even for the setWithSave operation.
protected Objectvalue
If base is null, the current value stored in this Location.
Method Summary
LocationgetBase()
LocationgetBaseForce()
EnvironmentgetEnvironment()
ObjectgetKeyProperty()
SymbolgetKeySymbol()
booleanisConstant()
voidsetAlias(Location base)
Define this Location as an alias for some other Location.
voidsetBase(Location base)
voidundefine()

Field Detail

base

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

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.

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 Detail

getBase

public Location getBase()

getBaseForce

public Location getBaseForce()

getEnvironment

public Environment getEnvironment()

getKeyProperty

public Object getKeyProperty()

getKeySymbol

public Symbol getKeySymbol()

isConstant

public boolean isConstant()

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()