// AID-GENERATED
// =========================================================================
// This class was generated by AID - Abstract Interface Definition          
// DO NOT MODIFY, but use the org.freehep.aid.Aid utility to regenerate it. 
// =========================================================================

// Copyright 2000-2004, FreeHEP.
package hep.graphics.heprep;

import java.util.Iterator;

/**
 * HepRepIterator interface.
 *
 * @author Mark Donszelmann
 */
public interface HepRepIterator extends Iterator {

    /**
     * Signals if there is a next instance to iterate to.
     *
     * @return true if next() can be called.
     */
    public boolean hasNext();

    /**
     * Returns next instance.
     *
     * @return next HepRepInstance.
     */
    public HepRepInstance nextInstance();

    /**
     * Adds a listener to be informed about attribute changes while iterating.
     *
     * @param listener to be added.
     */
    public void addHepRepAttributeListener(String name, HepRepAttributeListener listener);

    /**
     * Removes a listener.
     *
     * @param listener to be removed.
     */
    public void removeHepRepAttributeListener(String name, HepRepAttributeListener listener);

    /**
     * Adds a listener to be informed about attribute changes while iterating.
     *
     * @param listener to be added.
     */
    public void addHepRepFrameListener(HepRepFrameListener listener);

    /**
     * Removes a listener.
     *
     * @param listener to be removed.
     */
    public void removeHepRepFrameListener(HepRepFrameListener listener);

    /**
     * Returns true if the current instance, just delivered by nextInstance(), is to be drawn as a frame.
     */
    public boolean drawAsFrame();

    /**
     * Returns the attValue for key at the current point of iteration.
     *
     * @param key name of the attribute to be looked up.
     * @return value associated to name at this point in the iteration.
     */
//    HepRepAttValue* getAttValue(String key);
} // class or interface

