/**
 * @(#)Grammar.java	17.03.2004
 * 
 * @author kst
 */
package commons.chartparser;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
/**
 * Eine Convenience Class fuer die Lex Klasse: Der Hashvector erweitert den Hashtable aus dem JDK
 * und speichert Keys, denen Listen von Objekten zugeordnet werden. Auf diese Weise k�nnen z.B.
 * Synonyme effizienter verwaltet werden.
 */
@SuppressWarnings("unchecked")
public class HashVector extends Hashtable
{

private static final long serialVersionUID = 1L;

/**
 * F�ge Schl�ssel und Wort hinzu, erzeuge notfalls eine neue Liste.
 */
public void add (String key, Object object)
{
   if (this.containsKey(key))
   {
      ((List) this.get(key)).add(object);
   }
   else
   {
      List a = new ArrayList();
      a.add(object);
      this.put(key, a);
   }
}

/**
 * Z�hlt, wieviel Objekte(W�rter/Regeln) zu einem Schl�ssel existieren.
 */
public int count (String key)
{
   if (this.containsKey(key))
   {
      return ((List) this.get(key)).size();
   }
   else
   {
      return 0;
   }
}

/**
 * Iterator. L�uft �ber die zu einem Schl�ssel passenden Objekte(W�rter/Regeln).
 */
public Iterator iterator (String key)
{
   try
   {
      return ((List) this.get(key)).iterator();
   }
   catch (Exception e)
   {
      return null;
   }
}
}