/*******************************************************************************
 * Copyright (c) 2000, 2005 QNX Software Systems 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:
 *     QNX Software Systems - Initial API and implementation
 *******************************************************************************/
package org.eclipse.cdt.debug.core.model;

/**
 * Represents a type of a varibale. 
 * Used by the UI responsible components for variable rendering.
 */
public interface ICType {

	/**
	 * Returns the name of this type.
	 * 
	 * @return the name of this type
	 */
	String getName();

	/**
	 * Returns whether this is an array type.
	 * 
	 * @return whether this is an array type
	 */
	boolean isArray();

	/**
	 * Returns the array dimensions for array types, 
	 * otherwise returns an empty array.
	 * 
	 * @return the array dimensions
	 */
	int[] getArrayDimensions();

	/**
	 * Returns whether this is a structure or a class type.
	 * 
	 * @return whether this is a structure or a class type
	 */
	boolean isStructure();

	/**
	 * Returns whether this is a character type.
	 * 
	 * @return whether this is a character type
	 */
	boolean isCharacter();

	/**
	 * Returns whether this is a floating point type.
	 * 
	 * @return whether this is a floating point type
	 */
	boolean isFloatingPointType();

	/**
	 * Returns whether this is a pointer type.
	 * 
	 * @return whether this is a pointer type
	 */
	boolean isPointer();

	/**
	 * Returns whether this is a reference type.
	 * 
	 * @return whether this is a reference type
	 */
	boolean isReference();

	/**
	 * Returns whether this is an unsigned type.
	 * 
	 * @return whether this is an unsigned type
	 */
	boolean isUnsigned();

	/**
	 * Returns whether this is an integral type.
	 * 
	 * @return whether this is an integral type
	 */
	boolean isIntegralType();
}
