gnu.mapping
public abstract class IndirectableLocation extends Location
| Field Summary | |
|---|---|
| protected Location | base If non-null, operations are forwarded to the base location. |
| 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 Object | value If base is null, the current value stored in
this Location.
|
| 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() |
value==DIRECT_ON_SET, break indirection on a set.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 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.