/*******************************************************************************
 * Copyright (c) 2005, 2007 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials 
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *     Bjorn Freeman-Benson - initial API and implementation
 *******************************************************************************/
package org.eclipse.debug.examples.core.pda.model;

/**
 * Listeners are notified of events occurring in a PDA program
 * being interpreted.
 * <p>
 * The events generated by the interpreter are:
 * <ul>
 * <li><code>started</code> - the interpreter has started (guaranteed to be the
 * 		first event sent)</li>
 * <li><code>terminated</code> - the interpreter has terminated (guaranteed to be
 * 		the last event sent)</li>
 * <li><code>suspended X</code> - the interpreter has suspended and entered debug mode;
 * 		<code>X</code> is the cause of the suspension:
 * 		<ul>
 * 		<li><code>breakpoint N</code> - a breakpoint at line <code>N</code> was hit</li>
 * 		<li><code>client</code> - a client request to suspend has completed</li>
 * 		<li><code>drop</code> - a client request to drop a frame has completed</li>
 * 		<li><code>event E</code> - an error was encountered, where <code>E</code> is one
 * 			of <code>unimpinstr</code> or <code>nosuchlabel</code></li>
 * 		<li><code>step</code> - a step request has completed</li>
 * 		<li><code>watch A F::V</code> - a watchpoint was hit for reason <code>A</code>
 * 			(<code>read</code> or <code>write</code>), on variable <code>V</code> in
 * 			function <code>F</code></li>
 * 		</ul>
 * 		</li>
 * <li><code>resumed X</code> - the interpreter has resumed execution in run mode;
 * 		<code>X</code> is the cause of the resume:
 * 		<ul>
 * 		<li><code>step</code> - a step request has been initiated</li>
 * 		<li><code>client</code> - a client request to resume has been initiated</li>
 * 		</ul>
 * 		</li>
 * <li><code>unimplemented instruction X</code> - an unimplemented instruction <code>X</code>
 * 		was encountered</li>
 * <li><code>no such label X</code> - a branch or call to an unknown label <code>X</code>
 * 		was encountered</li>
 * </ul>
 * </p>
 */
public interface IPDAEventListener {
	
	/**
	 * Notification the given event occurred in the target program
	 * being interpreted.
	 * 
	 * @param event the event
	 */
	public void handleEvent(String event);

}
