// Circular.java
// (c) 1997 Kim Bruce

/** Interface for collection of objects in a circular arrangement.	**/
public interface Circular 
{

  /** 
  	* pre:  this is non-empty
  	* post: moves current to successor position in arrangement
  	*  */
  public void next();

 /** 
  	* post: returns number of elts in object
	*  */
  public int size();

  /** 
  	* pre:  this is non-empty
  	* post: returns the current element
  	*  */
  public Object getCurrent();
  
  /**
  	pre: this is non-empty
  	post:  Current elt is deleted, if non-empty, successor of old current is new current elt
  **/
  public void removeCurrent();
  
  /**
  	post:  If this was empty, obj is inserted as only elt, owise added after current elt
  		Either way, obj is now current elt
  **/
  public void addAfterCurrent(Object obj);

  /**
  	post:  collection of objects is now empty
  **/
  public void clear();

}