/*
 * Watcher.java
 *
 * Created on December 21, 2000, 11:53 AM
 */

package pharynx;
import java.util.*;

/**
 * Be informed of a change in the watched object's state
 *
 * @author  leon@eatworms.swmed.edu
 * @version 0.1
 */
public interface Watcher {

    /**
     * Called just before a change takes place
     *
     * @param s     The Object whose state is changing
     * @param t     Time at which change will occur
     */
    public void imminent(Object o, double t);

    /**
     * Called just after a change takes place
     *
     * The two-argument form of consummated is called when a change occurs
     * during simulation (i.e., when the Object receives a Kick), and will
     * always be preceded by a call to imminent.
     *
     * @param s     The Object whose state changed
     * @param t     Time at which change occurred
     */
    public void consummated(Object o, double t);
    
    /**
     * Called just after a change takes place
     *
     * The one-argument form of consummated is called when some external call
     * changes the Object's state.
     *
     * @param s     The Object whose state changed
     */
    public void consummated(Object o);
    
}