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.
  • Field Details

    • UNBOUND

      public static final String UNBOUND
      Magic value used to indicate there is no property binding.
  • Constructor Details

    • Location

      public Location()
  • Method Details

    • getKeySymbol

      public Symbol getKeySymbol()
    • getKeyProperty

      public Object getKeyProperty()
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • get

      public T get(T defaultValue)
    • 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()
    • setValue

      public final T setValue(T newValue)
    • entered

      public boolean entered()
      True if directly entered in an Environment. (Only if NamedLocation.)
    • print

      public void print(PrintWriter ps)
    • make

      public static Location make(Object init, String name)
    • 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).