Package gnu.mapping
Class Location<T>
- java.lang.Object
-
- gnu.mapping.Location<T>
-
- Direct Known Subclasses:
ClassMemberLocation
,ConstrainedLocation
,IndirectableLocation
,ProcLocation
,PropertyLocation
public abstract class Location<T> extends Object
A Location is an abstract cell/location/variable with a value of type T.
-
-
Constructor Summary
Constructors Constructor Description Location()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static Location
define(Symbol name)
Implement top-level 'define' for Scheme in interactive mode.boolean
entered()
True if directly entered in an Environment.abstract T
get()
Get the current value of this location.T
get(T defaultValue)
Location
getBase()
Object
getKeyProperty()
Symbol
getKeySymbol()
T
getValue()
abstract boolean
isBound()
boolean
isConstant()
static IndirectableLocation
make(Symbol name)
static Location
make(Object init, String name)
static IndirectableLocation
make(String name)
void
print(PrintWriter ps)
abstract void
set(T value)
void
setRestore(Object oldValue)
Restore an old value.T
setValue(T newValue)
Object
setWithSave(T newValue)
Set a value, but return cookie so old value can be restored.String
toString()
void
undefine()
-
-
-
Field Detail
-
UNBOUND
public static final String UNBOUND
Magic value used to indicate there is no property binding.
-
-
Method Detail
-
getKeySymbol
public Symbol getKeySymbol()
-
getKeyProperty
public Object getKeyProperty()
-
get
public abstract T get()
Get the current value of this location.- Throws:
UnboundLocationException
- the location does not have a value.
-
set
public abstract void set(T value)
-
undefine
public void undefine()
-
setWithSave
public Object setWithSave(T newValue)
Set a value, but return cookie so old value can be restored. This is intended for fluid-let where (in the case of multiple threads) a simple save-restore isn't always the right thing.
-
setRestore
public void setRestore(Object oldValue)
Restore an old value.- Parameters:
oldValue
- the return value from a prior setWithSave.
-
isBound
public abstract boolean isBound()
-
isConstant
public boolean isConstant()
-
getBase
public Location getBase()
-
getValue
public final T getValue()
-
entered
public boolean entered()
True if directly entered in an Environment. (Only if NamedLocation.)
-
print
public void print(PrintWriter ps)
-
make
public static IndirectableLocation make(String name)
-
make
public static IndirectableLocation make(Symbol name)
-
define
public static Location define(Symbol name)
Implement top-level 'define' for Scheme in interactive mode. I.e. if there is no binding, create it; if the existing binding is non-constant, set its value; if it is constant, create a new binding initialized to the old value (though we actually change the binding to non-constant).
-
-