/*
 *(c) Copyright QNX Software Systems Ltd. 2002.
 * All Rights Reserved.
 */

package org.eclipse.cdt.debug.core.cdi;

import org.eclipse.cdt.debug.core.cdi.model.ICDISignal;

/**
 * 
 * The signal manager manages the collection of signals defined 
 * for the debug session.
 * Auto update is off by default.
 * @since Jul 9, 2002
 */
public interface ICDISignalManager extends ICDIManager {

	/**
	 * Returns the array of signals defined for this session.
	 * 
	 * @return the array of signals
	 * @throws CDIException on failure. Reasons include:
	 */
	ICDISignal[] getSignals() throws CDIException;

}
