/** 
  * 
  * See the end of the file for the log of changes.
  * 
  * $Author: mtsezgin $
  * $Date: 2000/06/03 01:52:33 $   
  * $Revision: 1.4 $
  * $Headers$
  * $Id: NonTerminal.java,v 1.4 2000/06/03 01:52:33 mtsezgin Exp $     
  * $Name:  $   
  * $Locker:  $
  * $Source: /mit/mtsezgin/CVS/Repository/REC/NonTerminal.java,v $
  *  
  **/


import java.awt.Graphics; 

import java.util.Vector;

/**
  *
  * All the objects who want to be NonTerminal must implement this
  * interface.
  *
  **/

public interface NonTerminal
extends          Paintable
{
    /**
    *
    * This method should return the Rectangular bounds of this 
    * non-terminal object.
    *
    **/
    public abstract Rectangle
    getRectangularBounds();
    
    
    /**
    *
    * This method should return the polygonal array bounds of this 
    * non-terminal object. This is a rough approximation of the
    * constituents of the object. 
    *
    **/
    public abstract Polygon[]
    getPolygonalBoundsArray();
    
    
    /**
    *
    * This method should return a vector containing the children of 
    * this object. Children are the Terminal or NonTerminal 
    * constituents of this object.
    *
    **/
    public abstract Vector
    getChildren();
}

/**
  *
  * $Log: NonTerminal.java,v $
  * Revision 1.4  2000/06/03 01:52:33  mtsezgin
  * *** empty log message ***
  *
  * Revision 1.3  2000/05/04 01:36:27  mtsezgin
  *
  * Fixed minor bugs.
  * The current version successfuly parses Motor, Cross, Nail and Ground.
  * In addition the ParseSupervisor is introduced here.
  *
  * Revision 1.2  2000/05/03 23:26:46  mtsezgin
  * *** empty log message ***
  *
  * Revision 1.1  2000/04/11 00:41:47  mtsezgin
  *
  * Now the whole package succesfully parses a motor.
  *
  *
  **/
