public abstract class IndirectableLocation<T> extends Location<T>
Modifier and Type | Field and Description |
---|---|
protected Location<T> |
base
If non-null, operations are forwarded to the base location.
|
protected static java.lang.Object |
DIRECT_ON_SET
If
value==DIRECT_ON_SET , break indirection on a set . |
protected static java.lang.Object |
INDIRECT_FLUIDS
If
value has this value, force indirection even
for the setWithSave operation. |
protected java.lang.Object |
value
If
base is null, the current value stored in
this Location . |
Constructor and Description |
---|
IndirectableLocation() |
Modifier and Type | Method and Description |
---|---|
Location |
getBase() |
Location |
getBaseForce() |
Environment |
getEnvironment() |
java.lang.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() |
protected static final java.lang.Object DIRECT_ON_SET
value==DIRECT_ON_SET
, break indirection on a set
.protected static final java.lang.Object INDIRECT_FLUIDS
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.protected java.lang.Object value
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 value
directly, instead of setting
the value of base
.public Symbol getKeySymbol()
getKeySymbol
in class Location<T>
public java.lang.Object getKeyProperty()
getKeyProperty
in class Location<T>
public boolean isConstant()
isConstant
in class Location<T>
public Location getBaseForce()
public void setBase(Location base)
public void setAlias(Location base)
public Environment getEnvironment()