/******************************************************************************* * Copyright (c) 2007, 2013 Intel Corporation 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: * Intel Corporation - Initial API and implementation *******************************************************************************/ package org.eclipse.cdt.core.settings.model; import org.eclipse.cdt.core.model.IIncludeEntry; import org.eclipse.cdt.core.settings.model.util.CDataUtil; /** * An interface representing setting entries. * * @noextend This interface is not intended to be extended by clients. * @noimplement This interface is not intended to be implemented by clients. * * Any class implementing this interface should be immutable so the setting * entries could be safely pooled by {@link CDataUtil#getPooledEntry(ICSettingEntry)}. */ public interface ICSettingEntry { /** * A constant known to be zero (0), used to indicate that no flags are set. * @since 5.6 */ int NONE = 0; /** * Flag {@code BUILTIN} indicates settings built in a tool (compiler) itself. * That kind of settings are not passed as options to a compiler but indexer * or other clients might need them. */ int BUILTIN = 1; /** * Flag {@code READONLY} means that the entry is not intended to be overwritten by user. */ int READONLY = 1 << 1; /** * Flag {@code LOCAL} is used during creation of {@link IIncludeEntry} * to indicate that an include path is not a system path. * "System" path is denoted by angle brackets as in #include <x.h> * "Local" path is denoted by quotes as in #include "x.h" */ int LOCAL = 1 << 2; /** * Flag {@code VALUE_WORKSPACE_PATH} is used to indicate that the entry * is a resource managed by eclipse in the workspace. It does not always mean * that the path is rooted in the workspace root. In some cases it may be * a project path. */ int VALUE_WORKSPACE_PATH = 1 << 3; /** * Flag {@code RESOLVED} means that any build or other variables (for example ${ProjDirPath}) * have been expanded to their values. */ int RESOLVED = 1 << 4; /** * Flag {@code UNDEFINED} indicates that the entry should not be defined. * It's main purpose to provide the means to negate entries defined elsewhere. * * @since 5.4 */ int UNDEFINED = 1 << 5; /** * Flag {@code FRAMEWORKS_MAC} applies for path entries. Such a path entry will be treated * in a special way to imitate resolving paths by Apple's version of gcc, see bug 69529. * * @since 5.4 */ int FRAMEWORKS_MAC = 1 << 6; /** * Flag {@code UNDEFINED} indicates that the entry is "Exported" to referencing projects. * It will be passed to the projects configurations referencing the configuration the entry * belongs to. * * @since 5.6 */ int EXPORTED = 1 << 7; int INCLUDE_PATH = 1; int INCLUDE_FILE = 1 << 1; int MACRO = 1 << 2; int MACRO_FILE = 1 << 3; int LIBRARY_PATH = 1 << 4; int LIBRARY_FILE = 1 << 5; int OUTPUT_PATH = 1 << 6; int SOURCE_PATH = 1 << 7; int ALL = ~0; boolean isReadOnly(); int getKind(); String getName(); String getValue(); boolean isBuiltIn(); boolean isResolved(); boolean equalsByName(ICSettingEntry entry); boolean equalsByContents(ICSettingEntry entry); int getFlags(); }