/*******************************************************************************
* Copyright (c) 2000, 2009 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.core.model;
/**
* A C Folder Resource.
*
* @noextend This interface is not intended to be extended by clients.
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface ICContainer extends ICElement, IParent, IOpenable {
/**
* Returns an array of non-C resources directly contained in this project.
* It does not transitively answer non-C resources contained in folders;
* these would have to be explicitly iterated over.
* <p>
* Non-C resources includes files, folders, projects not accounted for.
* </p>
*
* @return an array of non-C resources directly contained in this project
* @exception CModelException if this element does not exist or if an
* exception occurs while accessing its corresponding resource
*/
Object[] getNonCResources() throws CModelException;
/**
* Returns all of the translation units in this ccontainer.
*
* @exception CModelException if this element does not exist or if an
* exception occurs while accessing its corresponding resource.
* @return all of the translation units in this ccontainer
*/
ITranslationUnit[] getTranslationUnits() throws CModelException;
/**
* Returns the translation unit with the specified name
* in this container (for example, <code>"foobar.c"</code>).
* The name has to be a valid translation unit name.
* This is a handle-only operation. The celement
* may or may not exist.
*
* @param name the given name
* @return the translation unit with the specified name in this container
*/
ITranslationUnit getTranslationUnit(String name);
/**
* Returns the all the binaries of this container.
*
* @throws CModelException
*/
IBinary[] getBinaries() throws CModelException;
/**
* Return the binary for this name, it must be a
* valid binary
* This is a handle-only operation. The container may or may not exist.
*/
IBinary getBinary(String name);
/**
* Returns all the archive of this container
*
* @throws CModelException
*/
IArchive[] getArchives() throws CModelException;
/**
* This is a handle-only operation. The container
* may or may not exist.
*/
IArchive getArchive(String name);
/**
* Return al the child containers of this container.
*
* @throws CModelException
*/
ICContainer[] getCContainers() throws CModelException;
/**
* Returns the container with the given name.
* An empty string indicates the default package.
* This is a handle-only operation. The celement
* may or may not exist.
*
* @param name the given container
* @return the container with the given name
*/
ICContainer getCContainer(String name);
}