/*******************************************************************************
* Copyright (c) 2000, 2015 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
* Sergey Prigogin (Google)
*******************************************************************************/
package org.eclipse.cdt.core.model;
import org.eclipse.core.resources.IContainer;
/**
* 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"}). 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.
*/
IBinary[] getBinaries() throws CModelException;
/**
* Returns 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 archives of this container.
*/
IArchive[] getArchives() throws CModelException;
/**
* This is a handle-only operation. The container may or may not exist.
*/
IArchive getArchive(String name);
/**
* Returns all the child containers of this container.
*/
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 name of a nested container
* @return the container with the given name
*/
ICContainer getCContainer(String name);
/**
* Returns the corresponding IContainer.
* @since 5.9
*/
@Override
IContainer getResource();
}