/******************************************************************************* * Copyright (c) 2006 Zend Corporation and IBM Corporation. * 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: * Zend and IBM - Initial implementation *******************************************************************************/ package org2.eclipse.php.internal.core.project; import org.eclipse.core.runtime.IPath; /** * Interface of a include path container. A include path container provides a way to indirectly reference a set of * include path entries through a include path entry of kind <code>CPE_CONTAINER</code>. Typically, a include path * container can be used to describe a complex library composed of multiple JARs or projects, considering also that * containers can map to different set of entries on each project, in other words, several projects can reference the * same generic container path, but have each of them actually bound to a different container object. * <p> * The set of entries associated with a include path container may contain any of the following: * <ul> * <li>library entries (<code>CPE_LIBRARY</code>)</li> * <li>project entries (<code>CPE_PROJECT</code>)</li> * </ul> * In particular, a include path container can neither reference further include path containers or include path * variables. * <p> * IncludePath container values are persisted locally to the workspace, but are not preserved from a session to another. * It is thus highly recommended to register a <code>IncludePathContainerInitializer</code> for each referenced * container (through the extension point "org.eclipse.jdt.core.IncludePathContainerInitializer"). * <p> * * @see IIncludePathEntry * @since 2.0 */ public interface IIncludePathContainer { /** * Kind for a container mapping (application library, system library or default system library, implicitly * contributed by the runtime) */ public static enum KIND { K_APPLICATION, K_SYSTEM, K_DEFAULT_SYSTEM }; IIncludePathEntry[] getIncludePathEntries(); /** * Answers a readable description of this container * * @return String - a string description of the container */ String getDescription(); /** * Answers the kind of this container. Can be either: * <ul> * <li><code>K_APPLICATION</code> if this container maps to an application library</li> * <li><code>K_SYSTEM</code> if this container maps to a system library</li> * <li><code>K_DEFAULT_SYSTEM</code> if this container maps to a default system library (library implicitly * contributed by the runtime).</li> * </ul> * Typically, system containers should be placed first on a build path. * * @return the kind of this container */ int getKind(); /** * Answers the container path identifying this container. A container path is formed by a first ID segment followed * with extra segments, which can be used as additional hints for resolving to this container. * <p> * The container ID is also used to identify a<code>IncludePathContainerInitializer</code> registered on the * extension point "org.eclipse.jdt.core.include pathContainerInitializer", which can be invoked if needing to * resolve the container before it is explicitly set. * <p> * * @return IPath - the container path that is associated with this container */ IPath getPath(); }