/*******************************************************************************
 * Copyright (c) 2000, 2014 QNX Software Systems and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     QNX Software Systems - Initial API and implementation
 *******************************************************************************/
package org.eclipse.cdt.core.model;

import org.eclipse.core.runtime.IPath;

public interface IPathEntry {
	/**
	 * Entry kind constant describing a path entry identifying a
	 * library. A library is an archive containing
	 * consisting of pre-compiled binaries.
	 */
	int CDT_LIBRARY = 1;

	/**
	 * Entry kind constant describing a path entry identifying a
	 * required project.
	 */
	int CDT_PROJECT = 1 << 2;

	/**
	 * Entry kind constant describing a path entry identifying a
	 * folder containing source code to be compiled.
	 */
	int CDT_SOURCE = 1 << 3;

	/**
	 * Entry kind constant describing a path entry identifying a
	 * include path.
	 */
	int CDT_INCLUDE = 1 << 4;

	/**
	 * Entry kind constant describing a path entry representing
	 * a container id.
	 *
	 */
	int CDT_CONTAINER = 1 << 5;

	/**
	 * Entry kind constant describing a path entry representing
	 * a macro definition.
	 *
	 */
	int CDT_MACRO = 1 << 6;

	/**
	 * Entry kind constant describing output location
	 *
	 */
	int CDT_OUTPUT = 1 << 7;

	/**
	 * Entry kind constant describing a path entry representing
	 * a file that will be process file as if "#include "file"" appeared as
	 * the first line of the source file.
	 */
	int CDT_INCLUDE_FILE = 1 << 8;

	/**
	 * Entry kind constant describing a path entry representing
	 * a file that will be process file as if "#include "file"" appeared as
	 * the first line of the source file but only the macro definitions are kept.
	 *
	 */
	int CDT_MACRO_FILE = 1 << 9;

	/**
	 * Returns the kind of this path entry.
	 *
	 * @return one of:
	 * <ul>
	 * <li><code>CDT_SOURCE</code> - this entry describes a source root in its project
	 * <li><code>CDT_LIBRARY</code> - this entry describes a library
	 * <li><code>CDT_PROJECT</code> - this entry describes another project
	 * <li><code>CDT_INCLUDE</code> - this entry describes a include path
	 * <li><code>CDT_MACRO</code> - this entry describes a macro definition
	 * <li><code>CDT_CONTAINER</code> - this entry describes a container id
	 * <li><code>CDT_OUTPUT</code> - this entry describes output location
	 * <li><code>CDT_INCLUDE_FILE</code> - this entry describes a file to be process as an include
	 * <li><code>CDT_MACRO_FILE</code> - this entry describes a file containing macro definitions
	 */
	int getEntryKind();

	/**
	 *
	 * @return true if exported.
	 */
	boolean isExported();

	/**
	 * Returns the affected IPath
	 *
	 * @return IPath
	 */
	IPath getPath();
}
