package com.treelight.krnl;

/**
 * The abstract class for an object capable of returning a previous version.
 * Concrete classes may either keep a pointer to an old version of the
 * information, or store undo information.
 * <pr>
 *<b>Design Note:</b>
 * We <i>could</i> make concrete version-wrapper classes for each of the
 * node types on the theory that, like with the node types, doing so would
 * let the compiler help us with type checking. However, since there are
 * already two kinds of concrete wrapper types (old version and undo), as
 * well as 5 concrete node types and 4 list types, the system would need
 * 18 concrete version classes!
 *
 * In this case, though, the issue is as important as it was in the node
 * classes. 
 *
 * @version 0.1
 * @author Eric Armstrong
 * @see ../NodesAndLists.html
 */
abstract public class AbstractVersionWrapper implements EntityTypes {

  // Types are hard-coded into each class, so there is a getter but no setter.
  public String getType() { return type; }  

  /**
   * Returns the node or list entity contained by this wrapper.
   */
  abstract public AbstractEntity getVersion() {  }  
 
}//AbstractVersionWrapper
