/*******************************************************************************
 * Copyright (c) 2011 Broadcom 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:
 * Broadcom - Initial API and implementation
 *******************************************************************************/
package org.eclipse.cdt.debug.edc.symbols;

import org.eclipse.cdt.core.IAddress;

/**
 * @since 3.0
 */
public interface IAddressInterval {
	/**
	 * Get the name of the interval
	 * 
	 * @return the name
	 */
	String getName();
	/**
	 * Tell whether the interval has an empty address range (either unset or unspecified)
	 */
	boolean hasEmptyRange();

	/**
	 * Get the low address of this interval (absolute or synthesized from a range list)
	 * 
	 * @return low address, or null if unknown
	 */
	IAddress getLowAddress();

	/**
	 * Get the high address of this interval (absolute or synthesized from a range list)
	 * 
	 * @return high address, or null if unknown
	 */
	IAddress getHighAddress();
}
