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
.