/******************************************************************************* * Copyright (c) 2005, 2010 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.managedbuilder.core; import org.eclipse.core.runtime.content.IContentType; /** * This interface represents an outputType instance in the managed build system. * It describes one category of output files created by a Tool. A tool can * have multiple outputType children. * * @since 3.0 * @noextend This class is not intended to be subclassed by clients. * @noimplement This interface is not intended to be implemented by clients. */ public interface IOutputType extends IBuildObject { public static final String OUTPUT_TYPE_ELEMENT_NAME = "outputType"; //$NON-NLS-1$ public static final String OUTPUT_CONTENT_TYPE = "outputContentType"; //$NON-NLS-1$ public static final String OUTPUTS = "outputs"; //$NON-NLS-1$ public static final String OPTION = "option"; //$NON-NLS-1$ public static final String MULTIPLE_OF_TYPE = "multipleOfType"; //$NON-NLS-1$ public static final String PRIMARY_INPUT_TYPE = "primaryInputType"; //$NON-NLS-1$ public static final String PRIMARY_OUTPUT = "primaryOutput"; //$NON-NLS-1$ public static final String OUTPUT_PREFIX = "outputPrefix"; //$NON-NLS-1$ public static final String OUTPUT_NAMES = "outputNames"; //$NON-NLS-1$ public static final String NAME_PATTERN = "namePattern"; //$NON-NLS-1$ public static final String NAME_PROVIDER = "nameProvider"; //$NON-NLS-1$ public static final String BUILD_VARIABLE = "buildVariable"; //$NON-NLS-1$ /** * Returns the tool defining this OutputType. * * @return ITool */ public ITool getParent(); /** * Returns the <code>IOutputType</code> that is the superclass of this * OutputType, or <code>null</code> if the attribute was not specified. * * @return IInputType */ public IOutputType getSuperClass(); /** * Returns the Eclipse <code>IContentType</code> that describes this * output type. If both the outputs attribute and the outputContentType * attribute are specified, the outputContentType will be used if it * is defined in Eclipse. * * @return IContentType */ public IContentType getOutputContentType(); /** * Sets the Eclipse <code>IContentType</code> that describes this * output type. * * @param contentType The Eclipse content type */ public void setOutputContentType(IContentType contentType); /** * Returns the list of valid output extensions from the * outputs attribute. Note that this value is not used * if output content type is specified and registered with Eclipse. * Also, the user will not be able to modify the set of file * extensions as they can when outputContentType is specified. * * @return <code>String[]</code> of extensions */ public String[] getOutputExtensionsAttribute(); /** * Sets all of the output extensions that the receiver can build. * NOTE: The value of this attribute will NOT be used if a * output content type is specified and is registered with * Eclipse. */ public void setOutputExtensionsAttribute(String extensions); /** * Returns the list of the output extensions that the receiver can build. * Note that the list will come from the outputContentType if it * is specified and registered with Eclipse. Otherwise the * outputs attribute will be used. * * @param tool the tool that contains the output-type * @return String[] */ public String[] getOutputExtensions(ITool tool); /** * Answers <code>true</code> if the output type considers the file extension to be * one associated with an output file. * * @param tool the tool that contains the output-type * @param ext file extension * @return boolean */ public boolean isOutputExtension(ITool tool, String ext); /** * Returns the id of the option that is associated with this * output type on the command line. The default is to use the Tool * "outputFlag" attribute if primaryOutput is True. If option is not * specified, and primaryOutput is False, then the output file(s) of * this outputType are not added to the command line. * When specified, the namePattern, nameProvider and outputNames are ignored. * * @return String */ public String getOptionId(); /** * Sets the id of the option that is associated with this * output type on the command line. */ public void setOptionId(String optionId); /** * Returns <code>true</code> if this outputType creates multiple output * resources in one invocation of the tool, else <code>false</code>. * * @return boolean */ public boolean getMultipleOfType(); /** * Sets whether this outputType can create multiple output resources in * one invocation of the tool. */ public void setMultipleOfType(boolean multiple); /** * Returns the input type that is used in determining the default * names of this output type. * * @return IInputType */ public IInputType getPrimaryInputType(); /** * Sets the input type that is used in determining the default * names of this output type. */ public void setPrimaryInputType(IInputType contentType); /** * Returns <code>true</code> if this is considered the primary output * of the tool, else <code>false</code>. * * @return boolean */ public boolean getPrimaryOutput(); /** * Sets whether this is the primary output of the tool. */ public void setPrimaryOutput(boolean primary); /** * Returns the prefix that the tool should prepend to the name of the build artifact. * For example, a librarian usually prepends 'lib' to the target.a * @return String */ public String getOutputPrefix(); /** * Sets the prefix that the tool should prepend to the name of the build artifact. * For example, a librarian usually prepends 'lib' to the target.a */ public void setOutputPrefix(String prefix); /** * Returns the file names of the complete set of output files for this outputType * * @return String[] */ public String[] getOutputNames(); /** * Sets the complete set of output file names for this outputType */ public void setOutputNames(String names); /** * Returns the pattern, using the Gnu pattern rule syntax, for deriving the * output resource name from the input resource name. The default is to use * the input file base filename with the output extension. * * @return String */ public String getNamePattern(); /** * Sets the pattern, using the Gnu pattern rule syntax, for deriving the * output resource name from the input resource name. * */ public void setNamePattern(String pattern); /** * Returns the IManagedOutputNameProvider interface as specified by the nameProvider attribute. * * @return IManagedOutputNameProvider */ public IManagedOutputNameProvider getNameProvider(); /** * Returns the name of the build variable associated this this output type's resources * The variable is used in the build file to represent the list of output files. * The same variable name can be used by an inputType to identify a set of output * files that contribute to the tool's input (i.e., those using the same buildVariable * name). The default name is chosen by MBS. * * @return String */ public String getBuildVariable(); /** * Sets the name of the build variable associated this this output type's resources. * */ public void setBuildVariable(String variableName); /** * Returns <code>true</code> if this element has changes that need to * be saved in the project file, else <code>false</code>. * * @return boolean */ public boolean isDirty(); /** * Returns <code>true</code> if this OutputType was loaded from a manifest file, * and <code>false</code> if it was loaded from a project (.cdtbuild) file. * * @return boolean */ public boolean isExtensionElement(); /** * Sets the element's "dirty" (have I been modified?) flag. */ public void setDirty(boolean isDirty); }