git @ Cat's Eye Technologies yoob / master src / Element.java
master

Tree @master (Download .tar.gz)

Element.java @masterraw · history · blame

/*
 * An Element is an interface that any value may implement to
 * declare that it may be stored in yoob data structures
 * (primarily Playfield and Tape.) and may be depicted by yoob
 * using a View.  (Distinct values should have distinct depictions.)
 *
 * Elements are generally expected to be immutable; i.e. the same
 * Element may be stored at multiple locations in a Playfield or Tape,
 * and will not be "updated" at a location, but rather replaced by
 * a different Element.  For this reason, objects that implement the
 * Element interface are encouraged to implement a Featherweight
 * design pattern, for efficiency.
 *
 * The source code in this file has been placed into the public domain.
 */
package tc.catseye.yoob;

public interface Element {
    String      getName();
    boolean     equals(Element e);
    /* virtual static: */
    Element     fromChar(char c);
}