/* BSTOrderedList.java
 *  stubs to be filled in for pa06 (and change this comment!!!!!) 
 */
import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.AbstractCollection;

public class BSTOrderedList<T extends Comparable<? super T>>
				      extends AbstractCollection<T>
				      implements OrderedList<T>
{
    private BinarySearchTreeWithRank<T> bst = new BinarySearchTreeWithRank<T>();

    public BSTOrderedList()
    {
    }

    // add javadoc
    public int size() { return 0; }

    // add javadoc
    // We can do better than the default implementation
    // so we want to override that
    // Note: you will need to cast to T, causing a warning
    public boolean contains(Object x) { return false; }

   /**
    *  Add obj to the list at appropriate position to maintain the ordering. 
    *
    *  @param x   the object to add
    *  @return true if the object was added
    */
   public boolean add( T x ){ return false; }

    // add javadoc
    // We can do better than the default implementation
    // so we want to override that
    // Note: you will need to cast to T, causing a warning
    public boolean remove(Object x) { return false; }

   /**
    *  Retrieve (a ref to) the object at position i, like List.get().
    *
    *  @param i            the position from which to retrieve
    *  @throw NoSuchElementException   when i is out of bounds
    *  @return the object
    */
   public T get( int i ) throws NoSuchElementException{ return null; }
   
   /**
    *  Look for listobj on list such that obj.compareTo(listobj)
    *  is true., like List.indexOf()
    *
    *  @param obj   the object to look for
    *  @return position of a match, -1 if no match
    *
    */
    public int indexOf( Object obj ){ return -1; }

   /**
    *  Allow the customer to look at the objects on the list
    *  one at a time - in proper order, of course.
    *
    *  @return an Iteration for the list
    */
   public Iterator<T> iterator(){ return null; }

}
