diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/ITrackedNodePosition.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/ITrackedNodePosition.java new file mode 100644 index 00000000000..4c53a365d7a --- /dev/null +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/rewrite/ITrackedNodePosition.java @@ -0,0 +1,41 @@ +/******************************************************************************* + * Copyright (c) 2004, 2008 IBM 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: + * IBM Corporation - initial API and implementation + * Sergey Prigogin (Google) + *******************************************************************************/ +package org.eclipse.cdt.core.dom.rewrite; + +/** + * A tracked node position is returned when a rewrite change is + * requested to be tracked. + *
+ * This interface is not intended to be implemented by clients. + *
+ * + * @since 5.1 + * @noimplement This interface is not intended to be implemented by clients. + */ +public interface ITrackedNodePosition { + + /** + * Returns the original or modified start position of the tracked node depending if called before + * or after the rewrite is applied.-1
is returned for removed nodes.
+ *
+ * @return the original or modified start position of the tracked node
+ */
+ public int getStartPosition();
+
+ /**
+ * Returns the original or modified length of the tracked node depending if called before
+ * or after the rewrite is applied. -1
is returned for removed nodes.
+ *
+ * @return the original or modified length of the tracked node
+ */
+ public int getLength();
+}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/TrackedNodePosition.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/TrackedNodePosition.java
new file mode 100644
index 00000000000..d31331325c4
--- /dev/null
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/rewrite/TrackedNodePosition.java
@@ -0,0 +1,60 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+package org.eclipse.cdt.internal.core.dom.rewrite;
+
+import org.eclipse.text.edits.TextEdit;
+import org.eclipse.text.edits.TextEditGroup;
+
+import org.eclipse.cdt.core.dom.rewrite.ITrackedNodePosition;
+import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
+import org.eclipse.jface.text.IRegion;
+
+/**
+ * @see org.eclipse.cdt.core.dom.rewrite.ITrackedNodePosition
+ */
+public class TrackedNodePosition implements ITrackedNodePosition {
+ private final TextEditGroup group;
+ private final ASTNode node;
+
+ public TrackedNodePosition(TextEditGroup group, ASTNode node) {
+ this.group= group;
+ this.node= node;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.corext.dom.ITrackedNodePosition#getStartPosition()
+ */
+ public int getStartPosition() {
+ if (this.group.isEmpty()) {
+ return this.node.getOffset();
+ }
+ IRegion coverage= TextEdit.getCoverage(this.group.getTextEdits());
+ if (coverage == null) {
+ return this.node.getOffset();
+ }
+ return coverage.getOffset();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.corext.dom.ITrackedNodePosition#getLength()
+ */
+ public int getLength() {
+ if (this.group.isEmpty()) {
+ return this.node.getLength();
+ }
+ IRegion coverage= TextEdit.getCoverage(this.group.getTextEdits());
+ if (coverage == null) {
+ return this.node.getLength();
+ }
+ return coverage.getLength();
+ }
+}
diff --git a/core/org.eclipse.cdt.ui.tests/resources/quickFix/RenameInFile.cpp b/core/org.eclipse.cdt.ui.tests/resources/quickFix/RenameInFile.cpp
new file mode 100644
index 00000000000..0c54f2730a1
--- /dev/null
+++ b/core/org.eclipse.cdt.ui.tests/resources/quickFix/RenameInFile.cpp
@@ -0,0 +1,131 @@
+class Base2 {
+ Base2();
+ void foo();
+};
+
+typedef int size_t;
+#define INT int
+#define FUNCTION_MACRO(arg) globalFunc(arg)
+#define EMPTY_MACRO(arg)
+
+enum Enumeration {
+ ONE, TWO, THREE
+};
+
+const int globalConstant = 0;
+int globalVariable = 0;
+static int globalStaticVariable = 0;
+
+void globalFunc(int a);
+static void globalStaticFunc() {
+ EMPTY_MACRO(n);
+ globalVariable = 1;
+ EMPTY_MACRO(1);
+ return 0;
+}
+
+class Base1 {
+ Base1();
+ ~Base1();
+};
+
+Base1::~Base1() {}
+Base1::Base1() {}
+
+Base2::Base2() {}
+void Base2::foo() {}
+
+class ClassContainer : Base1, Base2 {
+public:
+ static int staticPubField;
+ const int constPubField;
+ const static int constStaticPubField;
+ size_t pubField;
+
+ static INT staticPubMethod(int arg) {
+ FUNCTION_MACRO(arg);
+ globalFunc(arg);
+ return globalStaticVariable;
+ }
+ int pubMethod();
+
+ typedef float pubTypedef;
+ pubTypedef tdField;
+private:
+ static INT staticPrivMethod();
+};
+
+templatenull
if {@link #getRewrite()} is overridden.
+ * @param relevance The relevance of this proposal.
+ * @param image The image that is displayed for this proposal or null
if no
+ * image is desired.
+ */
+ public ASTRewriteCorrectionProposal(String name, ITranslationUnit tu, ASTRewrite rewrite, int relevance, Image image) {
+ super(name, tu, relevance, image);
+ fRewrite= rewrite;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.ui.text.correction.TUCorrectionProposal#addEdits(org.eclipse.jface.text.IDocument)
+ */
+ @Override
+ protected void addEdits(IDocument document, TextEdit editRoot) throws CoreException {
+ super.addEdits(document, editRoot);
+ ASTRewrite rewrite= getRewrite();
+ if (rewrite != null) {
+ try {
+ Change change = rewrite.rewriteAST();
+ addTextEdits(change, editRoot);
+ } catch (IllegalArgumentException e) {
+ throw new CoreException(CUIStatus.createError(IStatus.ERROR, e));
+ }
+ }
+ }
+
+ /**
+ * Adds all text edits from {@code change} to {@code editRoot}.
+ * @param change
+ * @param editRoot
+ */
+ private void addTextEdits(Change change, TextEdit editRoot) {
+ if (change instanceof TextChange) {
+ editRoot.addChild(((TextChange) change).getEdit());
+ } else if (change instanceof CompositeChange) {
+ for (Change c : ((CompositeChange) change).getChildren()) {
+ addTextEdits(c, editRoot);
+ }
+ }
+ }
+
+ /**
+ * Returns the rewriter that has been passed in the constructor. Implementors can override this
+ * method to create the rewriter lazy. This method will only be called once.
+ *
+ * @return returns the rewriter to be used.
+ * @throws CoreException an exception is thrown when the rewriter could not be created.
+ */
+ protected ASTRewrite getRewrite() throws CoreException {
+ if (fRewrite == null) {
+ IStatus status= CUIStatus.createError(IStatus.ERROR, "Rewriter not initialized", null); //$NON-NLS-1$
+ throw new CoreException(status);
+ }
+ return fRewrite;
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/ChangeCorrectionProposal.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/ChangeCorrectionProposal.java
new file mode 100644
index 00000000000..7d15051efb3
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/ChangeCorrectionProposal.java
@@ -0,0 +1,311 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+
+package org.eclipse.cdt.internal.ui.text.correction.proposals;
+
+import java.text.MessageFormat;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
+
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+
+import org.eclipse.jface.viewers.StyledString;
+
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRewriteTarget;
+import org.eclipse.jface.text.contentassist.ICompletionProposalExtension6;
+import org.eclipse.jface.text.contentassist.IContextInformation;
+import org.eclipse.jface.text.link.LinkedModeModel;
+
+import org.eclipse.ui.IEditorPart;
+
+import org.eclipse.ltk.core.refactoring.Change;
+import org.eclipse.ltk.core.refactoring.IUndoManager;
+import org.eclipse.ltk.core.refactoring.NullChange;
+import org.eclipse.ltk.core.refactoring.RefactoringCore;
+import org.eclipse.ltk.core.refactoring.RefactoringStatus;
+
+import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.cdt.ui.text.ICCompletionProposal;
+
+import org.eclipse.cdt.internal.ui.text.correction.CorrectionCommandHandler;
+import org.eclipse.cdt.internal.ui.text.correction.CorrectionMessages;
+import org.eclipse.cdt.internal.ui.text.correction.ICommandAccess;
+import org.eclipse.cdt.internal.ui.util.ExceptionHandler;
+import org.eclipse.cdt.internal.ui.viewsupport.ColoringLabelProvider;
+
+/**
+ * Implementation of a C completion proposal to be used for quick fix and quick assist
+ * proposals that invoke a {@link Change}. The proposal offers a proposal information but no context
+ * information.
+ *
+ * @since 5.1
+ */
+public class ChangeCorrectionProposal implements ICCompletionProposal, ICommandAccess, ICompletionProposalExtension6 {
+ private Change fChange;
+ private String fName;
+ private int fRelevance;
+ private Image fImage;
+ private String fCommandId;
+
+ /**
+ * Constructs a change correction proposal.
+ *
+ * @param name The name that is displayed in the proposal selection dialog.
+ * @param change The change that is executed when the proposal is applied or null
+ * if the change will be created by implementors of {@link #createChange()}.
+ * @param relevance The relevance of this proposal.
+ * @param image The image that is displayed for this proposal or null
if no
+ * image is desired.
+ */
+ public ChangeCorrectionProposal(String name, Change change, int relevance, Image image) {
+ if (name == null) {
+ throw new IllegalArgumentException("Name must not be null"); //$NON-NLS-1$
+ }
+ fName= name;
+ fChange= change;
+ fRelevance= relevance;
+ fImage= image;
+ fCommandId= null;
+ }
+
+ /*
+ * @see ICompletionProposal#apply(IDocument)
+ */
+ public void apply(IDocument document) {
+ try {
+ performChange(CUIPlugin.getActivePage().getActiveEditor(), document);
+ } catch (CoreException e) {
+ ExceptionHandler.handle(e, CorrectionMessages.ChangeCorrectionProposal_error_title, CorrectionMessages.ChangeCorrectionProposal_error_message);
+ }
+ }
+
+ /**
+ * Performs the change associated with this proposal.
+ *
+ * @param activeEditor The editor currently active or null
if no
+ * editor is active.
+ * @param document The document of the editor currently active or null
if
+ * no editor is visible.
+ * @throws CoreException Thrown when the invocation of the change failed.
+ */
+ protected void performChange(IEditorPart activeEditor, IDocument document) throws CoreException {
+ Change change= null;
+ IRewriteTarget rewriteTarget= null;
+ try {
+ change= getChange();
+ if (change != null) {
+ if (document != null) {
+ LinkedModeModel.closeAllModels(document);
+ }
+ if (activeEditor != null) {
+ rewriteTarget= (IRewriteTarget) activeEditor.getAdapter(IRewriteTarget.class);
+ if (rewriteTarget != null) {
+ rewriteTarget.beginCompoundChange();
+ }
+ }
+
+ change.initializeValidationData(new NullProgressMonitor());
+ RefactoringStatus valid= change.isValid(new NullProgressMonitor());
+ if (valid.hasFatalError()) {
+ IStatus status= new Status(IStatus.ERROR, CUIPlugin.getPluginId(), IStatus.ERROR,
+ valid.getMessageMatchingSeverity(RefactoringStatus.FATAL), null);
+ throw new CoreException(status);
+ } else {
+ IUndoManager manager= RefactoringCore.getUndoManager();
+ manager.aboutToPerformChange(change);
+ Change undoChange= change.perform(new NullProgressMonitor());
+ manager.changePerformed(change, true);
+ if (undoChange != null) {
+ undoChange.initializeValidationData(new NullProgressMonitor());
+ manager.addUndo(getName(), undoChange);
+ }
+ }
+ }
+ } finally {
+ if (rewriteTarget != null) {
+ rewriteTarget.endCompoundChange();
+ }
+
+ if (change != null) {
+ change.dispose();
+ }
+ }
+ }
+
+ /*
+ * @see ICompletionProposal#getAdditionalProposalInfo()
+ */
+ public String getAdditionalProposalInfo() {
+ StringBuffer buf= new StringBuffer();
+ buf.append(""); //$NON-NLS-1$ + try { + Change change= getChange(); + if (change != null) { + String name= change.getName(); + if (name.length() == 0) { + return null; + } + buf.append(name); + } else { + return null; + } + } catch (CoreException e) { + buf.append("Unexpected error when accessing this proposal:
"); //$NON-NLS-1$ + buf.append(e.getLocalizedMessage()); + buf.append(""); //$NON-NLS-1$ + } + buf.append(""); //$NON-NLS-1$ + return buf.toString(); + } + + /* + * @see ICompletionProposal#getContextInformation() + */ + public IContextInformation getContextInformation() { + return null; + } + + /* + * @see ICompletionProposal#getDisplayString() + */ + public String getDisplayString() { + String shortCutString= CorrectionCommandHandler.getShortCutString(getCommandId()); + if (shortCutString != null) { + return MessageFormat.format(CorrectionMessages.ChangeCorrectionProposal_name_with_shortcut, getName(), shortCutString); + } + return getName(); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.text.contentassist.ICompletionProposalExtension6#getStyledDisplayString() + */ + public StyledString getStyledDisplayString() { + StyledString str= new StyledString(getName()); + + String shortCutString= CorrectionCommandHandler.getShortCutString(getCommandId()); + if (shortCutString != null) { + String decorated= MessageFormat.format(CorrectionMessages.ChangeCorrectionProposal_name_with_shortcut, getName(), shortCutString); + return ColoringLabelProvider.decorateStyledString(str, decorated, StyledString.QUALIFIER_STYLER); + } + return str; + } + + /** + * Returns the name of the proposal. + * + * @return return the name of the proposal + */ + public String getName() { + return fName; + } + + /* + * @see ICompletionProposal#getImage() + */ + public Image getImage() { + return fImage; + } + + /* + * @see ICompletionProposal#getSelection(IDocument) + */ + public Point getSelection(IDocument document) { + return null; + } + + /** + * Sets the proposal's image or
null
if no image is desired.
+ *
+ * @param image the desired image.
+ */
+ public void setImage(Image image) {
+ fImage= image;
+ }
+
+ /**
+ * Returns the change that will be executed when the proposal is applied.
+ *
+ * @return returns the change for this proposal.
+ * @throws CoreException thrown when the change could not be created
+ */
+ public final Change getChange() throws CoreException {
+ if (fChange == null) {
+ fChange= createChange();
+ }
+ return fChange;
+ }
+
+ /**
+ * Creates the text change for this proposal.
+ * This method is only called once and only when no text change has been passed in
+ * {@link #ChangeCorrectionProposal(String, Change, int, Image)}.
+ *
+ * @return returns the created change.
+ * @throws CoreException thrown if the creation of the change failed.
+ */
+ protected Change createChange() throws CoreException {
+ return new NullChange();
+ }
+
+ /**
+ * Sets the display name.
+ *
+ * @param name the name to set
+ */
+ public void setDisplayName(String name) {
+ if (name == null) {
+ throw new IllegalArgumentException("Name must not be null"); //$NON-NLS-1$
+ }
+ fName= name;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.ui.text.c.ICCompletionProposal#getRelevance()
+ */
+ public int getRelevance() {
+ return fRelevance;
+ }
+
+ /**
+ * Sets the relevance.
+ * @param relevance the relevance to set
+ */
+ public void setRelevance(int relevance) {
+ fRelevance= relevance;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.ui.text.correction.IShortcutProposal#getProposalId()
+ */
+ public String getCommandId() {
+ return fCommandId;
+ }
+
+ /**
+ * Set the proposal id to allow assigning a shortcut to the correction proposal.
+ *
+ * @param commandId The proposal id for this proposal or null
if no command
+ * should be assigned to this proposal.
+ */
+ public void setCommandId(String commandId) {
+ fCommandId= commandId;
+ }
+
+ public String getIdString() {
+ return fCommandId;
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/LinkedCorrectionProposal.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/LinkedCorrectionProposal.java
new file mode 100644
index 00000000000..50c35d2f900
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/LinkedCorrectionProposal.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2007 IBM 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.text.correction.proposals;
+
+import org.eclipse.swt.graphics.Image;
+
+import org.eclipse.cdt.core.dom.rewrite.ASTRewrite;
+import org.eclipse.cdt.core.dom.rewrite.ITrackedNodePosition;
+import org.eclipse.cdt.core.model.ITranslationUnit;
+
+
+/**
+ * A proposal for quick fixes and quick assists that works on a AST rewriter and enters the
+ * linked mode when the proposal is set up.
+ * Either a rewriter is directly passed in the constructor or method {@link #getRewrite()} is overridden
+ * to provide the AST rewriter that is evaluated to the document when the proposal is
+ * applied.
+ * @since 5.1
+ */
+public class LinkedCorrectionProposal extends ASTRewriteCorrectionProposal {
+
+ /**
+ * Constructs a linked correction proposal.
+ * @param name The display name of the proposal.
+ * @param tu The translation unit that is modified.
+ * @param rewrite The AST rewrite that is invoked when the proposal is applied
+ * null
can be passed if {@link #getRewrite()} is overridden.
+ * @param relevance The relevance of this proposal.
+ * @param image The image that is displayed for this proposal or null
if no
+ * image is desired.
+ */
+ public LinkedCorrectionProposal(String name, ITranslationUnit tu, ASTRewrite rewrite, int relevance, Image image) {
+ super(name, tu, rewrite, relevance, image);
+ }
+
+ /**
+ * Adds a linked position to be shown when the proposal is applied. All position with the
+ * same group id are linked.
+ * @param position The position to add.
+ * @param isFirst If set, the proposal is jumped to first.
+ * @param groupID The id of the group the proposal belongs to. All proposals in the same group
+ * are linked.
+ */
+ public void addLinkedPosition(ITrackedNodePosition position, boolean isFirst, String groupID) {
+ getLinkedProposalModel().getPositionGroup(groupID, true).addPosition(position, isFirst);
+ }
+
+ /**
+ * Sets the end position of the linked mode to the end of the passed range.
+ * @param position The position that describes the end position of the linked mode.
+ */
+ public void setEndPosition(ITrackedNodePosition position) {
+ getLinkedProposalModel().setEndPosition(position);
+ }
+
+ /**
+ * Adds a linked position proposal to the group with the given id.
+ * @param groupID The id of the group that should present the proposal
+ * @param proposal The string to propose.
+ * @param image The image to show for the position proposal or null
if
+ * no image is desired.
+ */
+ public void addLinkedPositionProposal(String groupID, String proposal, Image image) {
+ getLinkedProposalModel().getPositionGroup(groupID, true).addProposal(proposal, image, 10);
+ }
+
+ // TODO(sprigogin): Cleanup
+ /**
+ * Adds a linked position proposal to the group with the given id.
+ * @param groupID The id of the group that should present the proposal
+ * @param type The binding to use as type name proposal.
+ */
+// public void addLinkedPositionProposal(String groupID, ITypeBinding type) {
+// getLinkedProposalModel().getPositionGroup(groupID, true).addProposal(type, getTranslationUnit(), 10);
+// }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/LinkedNamesAssistProposal.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/LinkedNamesAssistProposal.java
new file mode 100644
index 00000000000..1444d67d1c4
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/LinkedNamesAssistProposal.java
@@ -0,0 +1,336 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2007 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+package org.eclipse.cdt.internal.ui.text.correction.proposals;
+
+import java.util.Arrays;
+import java.util.Comparator;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.VerifyEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.viewers.StyledString;
+
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.DocumentEvent;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.jface.text.contentassist.ICompletionProposalExtension2;
+import org.eclipse.jface.text.contentassist.ICompletionProposalExtension6;
+import org.eclipse.jface.text.contentassist.IContextInformation;
+import org.eclipse.jface.text.link.LinkedModeModel;
+import org.eclipse.jface.text.link.LinkedModeUI;
+import org.eclipse.jface.text.link.LinkedPosition;
+import org.eclipse.jface.text.link.LinkedPositionGroup;
+import org.eclipse.jface.text.link.LinkedModeUI.ExitFlags;
+import org.eclipse.jface.text.link.LinkedModeUI.IExitPolicy;
+
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.texteditor.link.EditorLinkedModeUI;
+
+import org.eclipse.cdt.core.dom.ast.IASTName;
+import org.eclipse.cdt.core.dom.ast.IASTNodeSelector;
+import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
+import org.eclipse.cdt.core.dom.ast.IBinding;
+import org.eclipse.cdt.core.model.ILanguage;
+import org.eclipse.cdt.core.model.ITranslationUnit;
+import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.cdt.ui.text.ICCompletionProposal;
+
+import org.eclipse.cdt.internal.core.model.ASTCache.ASTRunnable;
+
+import org.eclipse.cdt.internal.ui.CPluginImages;
+import org.eclipse.cdt.internal.ui.editor.ASTProvider;
+import org.eclipse.cdt.internal.ui.editor.CEditor;
+import org.eclipse.cdt.internal.ui.editor.EditorHighlightingSynchronizer;
+import org.eclipse.cdt.internal.ui.search.OccurrencesFinder;
+import org.eclipse.cdt.internal.ui.search.IOccurrencesFinder.OccurrenceLocation;
+import org.eclipse.cdt.internal.ui.text.correction.CorrectionCommandHandler;
+import org.eclipse.cdt.internal.ui.text.correction.CorrectionMessages;
+import org.eclipse.cdt.internal.ui.text.correction.ICommandAccess;
+import org.eclipse.cdt.internal.ui.viewsupport.ColoringLabelProvider;
+
+/**
+ * A proposal.allowing user to edit in place all occurrences of a name.
+ */
+public class LinkedNamesAssistProposal implements ICCompletionProposal, ICompletionProposalExtension2,
+ ICompletionProposalExtension6, ICommandAccess {
+
+ /**
+ * An exit policy that skips Backspace and Delete at the beginning and at the end
+ * of a linked position, respectively.
+ *
+ * See https://bugs.eclipse.org/bugs/show_bug.cgi?id=183925 .
+ */
+ public static class DeleteBlockingExitPolicy implements IExitPolicy {
+ private IDocument fDocument;
+
+ public DeleteBlockingExitPolicy(IDocument document) {
+ fDocument= document;
+ }
+
+ public ExitFlags doExit(LinkedModeModel model, VerifyEvent event, int offset, int length) {
+ if (length == 0 && (event.character == SWT.BS || event.character == SWT.DEL)) {
+ LinkedPosition position= model.findPosition(new LinkedPosition(fDocument, offset, 0, LinkedPositionGroup.NO_STOP));
+ if (position != null) {
+ if (event.character == SWT.BS) {
+ if (offset - 1 < position.getOffset()) {
+ //skip backspace at beginning of linked position
+ event.doit= false;
+ }
+ } else /* event.character == SWT.DEL */ {
+ if (offset + 1 > position.getOffset() + position.getLength()) {
+ //skip delete at end of linked position
+ event.doit= false;
+ }
+ }
+ }
+ }
+
+ return null; // don't change behavior
+ }
+ }
+
+
+ public static final String ASSIST_ID= "org.eclipse.cdt.ui.correction.renameInFile.assist"; //$NON-NLS-1$
+
+ private ITranslationUnit fTranslationUnit;
+ private String fLabel;
+ private String fValueSuggestion;
+ private int fRelevance;
+ private OccurrenceLocation[] fLocations;
+
+ public LinkedNamesAssistProposal(ITranslationUnit tu) {
+ this(CorrectionMessages.LinkedNamesAssistProposal_description, tu, null);
+ fTranslationUnit= tu;
+ fRelevance= 8;
+ }
+
+ public LinkedNamesAssistProposal(String label, ITranslationUnit tu, String valueSuggestion) {
+ fLabel= label;
+ fTranslationUnit= tu;
+ fValueSuggestion= valueSuggestion;
+ fRelevance= 8;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.text.contentassist.ICompletionProposalExtension2#apply(org.eclipse.jface.text.ITextViewer, char, int, int)
+ */
+ public void apply(final ITextViewer viewer, char trigger, int stateMask, final int offset) {
+ try {
+ fLocations = null;
+ Point selection= viewer.getSelectedRange();
+ final int secectionOffset = selection.x;
+ final int selectionLength = selection.y;
+
+ ASTProvider.getASTProvider().runOnAST(fTranslationUnit, ASTProvider.WAIT_YES,
+ new NullProgressMonitor(), new ASTRunnable() {
+
+ public IStatus runOnAST(ILanguage lang, IASTTranslationUnit astRoot) throws CoreException {
+ IASTNodeSelector selector= astRoot.getNodeSelector(null);
+ IASTName name= selector.findEnclosingName(secectionOffset, selectionLength);
+
+ if (name != null) {
+ IBinding binding= name.resolveBinding();
+ if (binding != null) {
+ OccurrencesFinder occurrencesFinder= new OccurrencesFinder();
+ if (occurrencesFinder.initialize(astRoot, name) == null) {
+ fLocations= occurrencesFinder.getOccurrences();
+ }
+ }
+ }
+ return Status.OK_STATUS;
+ }
+ });
+
+ if (fLocations == null || fLocations.length == 0) {
+ return;
+ }
+
+ // Sort the locations starting with the one @ offset.
+ Arrays.sort(fLocations, new Comparatoroffset
+ * are ranked last.
+ *
+ * @param location the location to compute the rank for
+ * @return the rank of the location with respect to the invocation offset
+ */
+ private int rank(OccurrenceLocation location) {
+ int relativeRank= location.getOffset() + location.getLength() - offset;
+ if (relativeRank < 0)
+ return Integer.MAX_VALUE + relativeRank;
+ else
+ return relativeRank;
+ }
+ });
+
+ IDocument document= viewer.getDocument();
+ LinkedPositionGroup group= new LinkedPositionGroup();
+ for (int i= 0; i < fLocations.length; i++) {
+ OccurrenceLocation item= fLocations[i];
+ group.addPosition(new LinkedPosition(document, item.getOffset(), item.getLength(), i));
+ }
+
+ LinkedModeModel model= new LinkedModeModel();
+ model.addGroup(group);
+ model.forceInstall();
+ CEditor editor= getCEditor();
+ if (editor != null) {
+ model.addLinkingListener(new EditorHighlightingSynchronizer(editor));
+ }
+
+ LinkedModeUI ui= new EditorLinkedModeUI(model, viewer);
+ ui.setExitPolicy(new DeleteBlockingExitPolicy(document));
+ ui.setExitPosition(viewer, offset, 0, LinkedPositionGroup.NO_STOP);
+ ui.enter();
+
+ if (fValueSuggestion != null) {
+ document.replace(fLocations[0].getOffset(), fLocations[0].getLength(), fValueSuggestion);
+ IRegion selectedRegion= ui.getSelectedRegion();
+ selection= new Point(selectedRegion.getOffset(), fValueSuggestion.length());
+ }
+
+ viewer.setSelectedRange(selection.x, selection.y); // By default full word is selected, restore original selection
+ } catch (BadLocationException e) {
+ CUIPlugin.log(e);
+ }
+ }
+
+ /**
+ * Returns the currently active C editor, or null
if it
+ * cannot be determined.
+ *
+ * @return the currently active C editor, or null
+ */
+ private CEditor getCEditor() {
+ IEditorPart part= CUIPlugin.getActivePage().getActiveEditor();
+ if (part instanceof CEditor)
+ return (CEditor) part;
+ else
+ return null;
+ }
+
+ /*
+ * @see ICompletionProposal#apply(IDocument)
+ */
+ public void apply(IDocument document) {
+ // can't do anything
+ }
+
+ /*
+ * @see ICompletionProposal#getSelection(IDocument)
+ */
+ public Point getSelection(IDocument document) {
+ return null;
+ }
+
+ /*
+ * @see ICompletionProposal#getAdditionalProposalInfo()
+ */
+ public String getAdditionalProposalInfo() {
+ return CorrectionMessages.LinkedNamesAssistProposal_proposalinfo;
+ }
+
+ /*
+ * @see ICompletionProposal#getDisplayString()
+ */
+ public String getDisplayString() {
+ String shortCutString= CorrectionCommandHandler.getShortCutString(getCommandId());
+ if (shortCutString != null) {
+ return CorrectionMessages.bind(CorrectionMessages.ChangeCorrectionProposal_name_with_shortcut,
+ fLabel, shortCutString);
+ }
+ return fLabel;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.text.contentassist.ICompletionProposalExtension6#getStyledDisplayString()
+ */
+ public StyledString getStyledDisplayString() {
+ StyledString str= new StyledString(fLabel);
+
+ String shortCutString= CorrectionCommandHandler.getShortCutString(getCommandId());
+ if (shortCutString != null) {
+ String decorated= CorrectionMessages.bind(CorrectionMessages.ChangeCorrectionProposal_name_with_shortcut,
+ fLabel, shortCutString);
+ return ColoringLabelProvider.decorateStyledString(str, decorated, StyledString.QUALIFIER_STYLER);
+ }
+ return str;
+ }
+
+ /*
+ * @see ICompletionProposal#getImage()
+ */
+ public Image getImage() {
+ return CPluginImages.get(CPluginImages.IMG_CORRECTION_LINKED_RENAME);
+ }
+
+ /*
+ * @see ICompletionProposal#getContextInformation()
+ */
+ public IContextInformation getContextInformation() {
+ return null;
+ }
+
+ /*
+ * @see ICCompletionProposal#getRelevance()
+ */
+ public int getRelevance() {
+ return fRelevance;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.text.contentassist.ICompletionProposalExtension2#selected(org.eclipse.jface.text.ITextViewer, boolean)
+ */
+ public void selected(ITextViewer textViewer, boolean smartToggle) {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.text.contentassist.ICompletionProposalExtension2#unselected(org.eclipse.jface.text.ITextViewer)
+ */
+ public void unselected(ITextViewer textViewer) {
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.text.contentassist.ICompletionProposalExtension2#validate(org.eclipse.jface.text.IDocument, int, org.eclipse.jface.text.DocumentEvent)
+ */
+ public boolean validate(IDocument document, int offset, DocumentEvent event) {
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.ui.text.correction.ICommandAccess#getCommandId()
+ */
+ public String getCommandId() {
+ return ASSIST_ID;
+ }
+
+ public void setRelevance(int relevance) {
+ fRelevance= relevance;
+ }
+
+ public String getIdString() {
+ return ASSIST_ID;
+ }
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/TUCorrectionProposal.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/TUCorrectionProposal.java
new file mode 100644
index 00000000000..9ee54cefd6b
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/correction/proposals/TUCorrectionProposal.java
@@ -0,0 +1,436 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 IBM 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:
+ * IBM Corporation - initial API and implementation
+ * Sergey Prigogin (Google)
+ *******************************************************************************/
+
+package org.eclipse.cdt.internal.ui.text.correction.proposals;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.Document;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.ltk.core.refactoring.Change;
+import org.eclipse.ltk.core.refactoring.DocumentChange;
+import org.eclipse.ltk.core.refactoring.TextChange;
+import org.eclipse.ltk.core.refactoring.TextFileChange;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.text.edits.CopyTargetEdit;
+import org.eclipse.text.edits.DeleteEdit;
+import org.eclipse.text.edits.InsertEdit;
+import org.eclipse.text.edits.MoveSourceEdit;
+import org.eclipse.text.edits.MoveTargetEdit;
+import org.eclipse.text.edits.MultiTextEdit;
+import org.eclipse.text.edits.ReplaceEdit;
+import org.eclipse.text.edits.TextEdit;
+import org.eclipse.text.edits.TextEditVisitor;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.texteditor.ITextEditor;
+
+import org.eclipse.cdt.core.model.CModelException;
+import org.eclipse.cdt.core.model.ITranslationUnit;
+import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.cdt.ui.refactoring.CTextFileChange;
+
+import org.eclipse.cdt.internal.corext.codemanipulation.StubUtility;
+import org.eclipse.cdt.internal.corext.fix.LinkedProposalModel;
+import org.eclipse.cdt.internal.corext.fix.LinkedProposalPositionGroup;
+import org.eclipse.cdt.internal.corext.util.Strings;
+
+import org.eclipse.cdt.internal.ui.CUIStatus;
+import org.eclipse.cdt.internal.ui.editor.CEditor;
+import org.eclipse.cdt.internal.ui.text.correction.CorrectionMessages;
+import org.eclipse.cdt.internal.ui.util.EditorUtility;
+import org.eclipse.cdt.internal.ui.util.ExceptionHandler;
+import org.eclipse.cdt.internal.ui.util.Resources;
+import org.eclipse.cdt.internal.ui.viewsupport.LinkedProposalModelPresenter;
+
+/**
+ * A proposal for quick fixes and quick assist that work on a single compilation unit.
+ * Either a {@link TextChange text change} is directly passed in the constructor or method
+ * {@link #addEdits(IDocument, TextEdit)} is overridden to provide the text edits that are
+ * applied to the document when the proposal is evaluated.
+ * + * The proposal takes care of the preview of the changes as proposal information. + *
+ * @since 5.1 + */ +public class TUCorrectionProposal extends ChangeCorrectionProposal { + private ITranslationUnit fTranslationUnit; + private LinkedProposalModel fLinkedProposalModel; + + /** + * Constructs a correction proposal working on a compilation unit with a given text change + * + * @param name the name that is displayed in the proposal selection dialog. + * @param tu the compilation unit on that the change works. + * @param change the change that is executed when the proposal is applied ornull
+ * if implementors override {@link #addEdits(IDocument, TextEdit)} to provide
+ * the text edits or {@link #createTextChange()} to provide a text change.
+ * @param relevance the relevance of this proposal.
+ * @param image the image that is displayed for this proposal or null
if no
+ * image is desired.
+ */
+ public TUCorrectionProposal(String name, ITranslationUnit tu, TextChange change, int relevance, Image image) {
+ super(name, change, relevance, image);
+ if (tu == null) {
+ throw new IllegalArgumentException("Translation unit must not be null"); //$NON-NLS-1$
+ }
+ fTranslationUnit= tu;
+ fLinkedProposalModel= null;
+ }
+
+ /**
+ * Constructs a correction proposal working on a compilation unit.
+ * Users have to override {@link #addEdits(IDocument, TextEdit)} to provide + * the text edits or {@link #createTextChange()} to provide a text change. + *
+ * + * @param name The name that is displayed in the proposal selection dialog. + * @param tu The compilation unit on that the change works. + * @param relevance The relevance of this proposal. + * @param image The image that is displayed for this proposal ornull
if no
+ * image is desired.
+ */
+ protected TUCorrectionProposal(String name, ITranslationUnit tu, int relevance, Image image) {
+ this(name, tu, null, relevance, image);
+ }
+
+ /**
+ * Called when the {@link CTextFileChange} is initialized. Subclasses can override to
+ * add text edits to the root edit of the change. Implementors must not access the proposal,
+ * e.g getting the change.
+ * The default implementation does not add any edits
+ * + * @param document content of the underlying compilation unit. To be accessed read only. + * @param editRoot The root edit to add all edits to + * @throws CoreException can be thrown if adding the edits is failing. + */ + protected void addEdits(IDocument document, TextEdit editRoot) throws CoreException { + if (false) { + throw new CoreException(CUIStatus.createError(IStatus.ERROR, "Implementors can throw an exception", null)); //$NON-NLS-1$ + } + } + + protected LinkedProposalModel getLinkedProposalModel() { + if (fLinkedProposalModel == null) { + fLinkedProposalModel= new LinkedProposalModel(); + } + return fLinkedProposalModel; + } + + public void setLinkedProposalModel(LinkedProposalModel model) { + fLinkedProposalModel= model; + } + + /* + * @see ICompletionProposal#getAdditionalProposalInfo() + */ + @Override + public String getAdditionalProposalInfo() { + final StringBuffer buf= new StringBuffer(); + + try { + final TextChange change= getTextChange(); + + change.setKeepPreviewEdits(true); + final IDocument previewContent= change.getPreviewDocument(new NullProgressMonitor()); + final TextEdit rootEdit= change.getPreviewEdit(change.getEdit()); + + class EditAnnotator extends TextEditVisitor { + private int fWrittenToPos = 0; + + public void unchangedUntil(int pos) { + if (pos > fWrittenToPos) { + appendContent(previewContent, fWrittenToPos, pos, buf, true); + fWrittenToPos = pos; + } + } + + @Override + public boolean visit(MoveTargetEdit edit) { + return true; //rangeAdded(edit); + } + + @Override + public boolean visit(CopyTargetEdit edit) { + return true; //return rangeAdded(edit); + } + + @Override + public boolean visit(InsertEdit edit) { + return rangeAdded(edit); + } + + @Override + public boolean visit(ReplaceEdit edit) { + if (edit.getLength() > 0) + return rangeAdded(edit); + return rangeRemoved(edit); + } + + @Override + public boolean visit(MoveSourceEdit edit) { + return rangeRemoved(edit); + } + + @Override + public boolean visit(DeleteEdit edit) { + return rangeRemoved(edit); + } + + private boolean rangeRemoved(TextEdit edit) { + unchangedUntil(edit.getOffset()); + return false; + } + + private boolean rangeAdded(TextEdit edit) { + unchangedUntil(edit.getOffset()); + buf.append(""); //$NON-NLS-1$ + appendContent(previewContent, edit.getOffset(), edit.getExclusiveEnd(), buf, false); + buf.append(""); //$NON-NLS-1$ + fWrittenToPos = edit.getExclusiveEnd(); + return false; + } + } + EditAnnotator ea = new EditAnnotator(); + rootEdit.accept(ea); + + // Final pre-existing region + ea.unchangedUntil(previewContent.getLength()); + } catch (CoreException e) { + CUIPlugin.log(e); + } + return buf.toString(); + } + + private final int surroundLines= 1; + + private void appendContent(IDocument text, int startOffset, int endOffset, StringBuffer buf, boolean surroundLinesOnly) { + try { + int startLine= text.getLineOfOffset(startOffset); + int endLine= text.getLineOfOffset(endOffset); + + boolean dotsAdded= false; + if (surroundLinesOnly && startOffset == 0) { // no surround lines for the top no-change range + startLine= Math.max(endLine - surroundLines, 0); + buf.append("...org.eclipse.cdt.ui.quickAssistProcessors
.
+ *
+ * @since 5.1
+ */
+public interface IQuickAssistProcessor {
+
+ /**
+ * Evaluates if quick assists can be created for the given context. This evaluation must be precise.
+ *
+ * @param context The invocation context
+ * @return Returns true
if quick assists can be created
+ * @throws CoreException CoreException can be thrown if the operation fails
+ */
+ boolean hasAssists(IInvocationContext context) throws CoreException;
+
+ /**
+ * Collects quick assists for the given context.
+ *
+ * @param context Defines current translation unit, position and a shared AST
+ * @param locations The locations of problems at the invocation offset. The processor can decide to only
+ * add assists when there are no errors at the selection offset.
+ * @return Returns the assists applicable at the location or null
if no proposals
+ * can be offered.
+ * @throws CoreException CoreException can be thrown if the operation fails
+ */
+ ICCompletionProposal[] getAssists(IInvocationContext context, IProblemLocation[] locations) throws CoreException;
+}
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CBuildConsole.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CBuildConsole.html
new file mode 100644
index 00000000000..60100b672b2
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CBuildConsole.html
@@ -0,0 +1,42 @@
+
+
+
+<!ELEMENT extension (CBuildConsole+)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ +<!ELEMENT CBuildConsole EMPTY>
+<!ATTLIST CBuildConsole
+id CDATA #IMPLIED
class CDATA #REQUIRED>
+ ++
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CConfigurationDataProvider.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CConfigurationDataProvider.html new file mode 100644 index 00000000000..248d8594b01 --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CConfigurationDataProvider.html @@ -0,0 +1,48 @@ + + + +<!ELEMENT extension (provider)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #REQUIRED
name CDATA #IMPLIED>
+ +<!ELEMENT provider EMPTY>
+<!ATTLIST provider
+natures CDATA #IMPLIED
class CDATA #REQUIRED
conflictingNatures CDATA #IMPLIED>
+ ++
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CIndex.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CIndex.html new file mode 100644 index 00000000000..7261240097f --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CIndex.html @@ -0,0 +1,143 @@ + + + +<!ELEMENT extension (ExportProjectProvider | ReadOnlyPDOMProvider)+>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ +<!ELEMENT ExportProjectProvider EMPTY>
+<!ATTLIST ExportProjectProvider
+class CDATA #REQUIRED>
+ ++This subelement of CIndex allows contribution of alternate IExportProjectProvider implementations. These can then be referenced by fully qualified class name in the command line tool (see option -pprovider). +
+Invoking the application as a headless application + +This example ant file shows how to invoke the tool headlessly, the same approach would work from a shell or batch file. + +
+<project name="Generate PDOM" default="generate"> + <target name="generate"> + <!-- This script shows how to invoke the default project provider (ExternalExportProjectProvider) --> + <property name="pprovider" value="org.eclipse.cdt.core.index.export.ExternalExportProjectProvider"/> + <property name="target" value="C:\ExportedPDOMs\acmeSDK_2_5.pdom"/> <!-- Where the output pdom is to go --> + <property name="source" value="E:\AcmeSDK\v2.5\inc"/> <!-- e.g. the directory to source content from --> + <property name="id" value="com.acme.mysdk.v2.5"/> <!-- the id to store in the generate pdom --> + + <property name="eclipse.home" value="C:\eclipse"/> <!-- e.g. The eclipse installation to use. This installation must contain CDT 4.0+ plugins --> + + <java classname="org.eclipse.equinox.launcher.Main"> + <classpath> + <fileset dir="${eclipse.home}/plugins"> + <include name="*equinox.launcher*.jar"/> + </fileset> + </classpath> + <arg value="-nosplash"/> + <arg value="-exitdata"/> + <arg value="-application"/><arg value="org.eclipse.cdt.core.GeneratePDOM"/> + <arg value="-pprovider"/><arg value="${pprovider}"/> + <arg value="-source"/><arg value="${source}"/> + <arg value="-target"/><arg value="${target}"/> + <arg value="-id"/><arg value="${id}"/> + </java> + </target> +</project> ++
+Invoking the tool via an Eclipse Launch Configuration +
+Specify "org.eclipse.cdt.core.GeneratePDOM" as the application to launch +
+In the Argument tabs provide (for example) + -target C:\ExportedPDOMs\acmeSDK_2_5.pdom -source E:\AcmeSDK\v2.5\inc -include E:\this.h -id com.acme.mysdk.v2.5 +
<!ELEMENT ReadOnlyPDOMProvider EMPTY>
+<!ATTLIST ReadOnlyPDOMProvider
+class CDATA #REQUIRED>
+ ++This subelement of CIndex allows ISVs to contribute read-only prebuilt PDOM files to the CDT Index. The only information needed is the fully qualified class name of an implementatin of org.eclipse.cdt.core.index.IOfflinePDOMProvider. This implementation will be consulted during the eclipse session for the appropriate read-only content to make add to the logical index. The logical index is accessible via the org.eclipse.core.index.IIndex API. + + An example of contributing a prebuilt read-only pdom: +
+<CIndex> + <ReadOnlyPDOMProvider class="com.acme.ide.index.AcmeSDKProvider"/> +</CIndex> ++ +and the corresponding implementation + +
+package com.acme.ide.index.sdk;
+
+import org.eclipse.core.index.provider.IReadOnlyPDOMProvider;
+import org.eclipse.core.index.provider.IPDOMDescriptor;
+import org.eclipse.core.index.IIndexLocationConverter;
+import org.eclipse.core.index.URIRelativeLocationConverter;
+
+public class AcmeSDKProvider implements IReadOnlyPDOMProvider {
+ public boolean providesFor(ICProject project) {
+ // e.g. decide by looking for acme project nature
+ return AcmeNature.isAcmeProject(project);
+ }
+
+ public IPDOMDescriptor[] getDescriptors(ICConfigurationDescription config) {
+ final IPath sdkBase = AcmeSDKAPI.getSDKBase(config);
+ return new IPDOMDescriptor[] { new IPDOMDescriptor() {
+ public IIndexLocationConverter getIndexLocationConverter() {
+ return new URIRelativeLocationConverter(URIUtil.toURI(sdkBase));
+ }
+ public IPath getLocation() {
+ IPath path = sdkBase.append(AcmeSDKAPI.getPrebuiltPDOMFilename(config));
+ return path;
+ }
+ }};
+ }
+}
+
+Copyright (c) 2007 Symbian 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 + +
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CIndexer.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CIndexer.html new file mode 100644 index 00000000000..cd5a7903f4c --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CIndexer.html @@ -0,0 +1,41 @@ + + + +<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #REQUIRED
name CDATA #REQUIRED>
+ +<!ELEMENT run EMPTY>
+<!ATTLIST run
+class CDATA #REQUIRED>
+ ++
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CProject.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CProject.html new file mode 100644 index 00000000000..ae38f95cf6b --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CProject.html @@ -0,0 +1,40 @@ + + + +<!ELEMENT extension (cproject)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #REQUIRED
name CDATA #IMPLIED>
+ +<!ELEMENT cproject EMPTY>
+<!ATTLIST cproject
+class CDATA #REQUIRED
natureID CDATA #IMPLIED
platform CDATA #IMPLIED>
+ ++
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CodeFormatter.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CodeFormatter.html new file mode 100644 index 00000000000..52f445c53e7 --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_CodeFormatter.html @@ -0,0 +1,43 @@ + + + +<!ELEMENT extension (codeFormatter+)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ +<!ELEMENT codeFormatter EMPTY>
+<!ATTLIST codeFormatter
+id CDATA #REQUIRED
name CDATA #REQUIRED
class CDATA #REQUIRED>
+ ++
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_PathEntryContainerInitializer.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_PathEntryContainerInitializer.html new file mode 100644 index 00000000000..08d6ed5dde7 --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_PathEntryContainerInitializer.html @@ -0,0 +1,42 @@ + + + +<!ELEMENT extension (pathEntryContainerInitializer)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ +<!ELEMENT pathEntryContainerInitializer EMPTY>
+<!ATTLIST pathEntryContainerInitializer
+id CDATA #REQUIRED
class CDATA #REQUIRED>
+ ++
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_ProcessList.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_ProcessList.html new file mode 100644 index 00000000000..3a7d34850ed --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_ProcessList.html @@ -0,0 +1,39 @@ + + + +<!ELEMENT extension (processList)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ +<!ELEMENT processList EMPTY>
+<!ATTLIST processList
+class CDATA #REQUIRED
platform CDATA #REQUIRED>
+ ++
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_externalSettingsProvider.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_externalSettingsProvider.html new file mode 100644 index 00000000000..34efa67e81e --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_externalSettingsProvider.html @@ -0,0 +1,43 @@ + + + +<!ELEMENT extension (provider)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #REQUIRED
name CDATA #REQUIRED>
+ +<!ELEMENT provider EMPTY>
+<!ATTLIST provider
+class CDATA #REQUIRED>
+ ++
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_language.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_language.html new file mode 100644 index 00000000000..87f9c7ed650 --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_language.html @@ -0,0 +1,78 @@ + + + +<!ELEMENT extension ((language | pdomLinkageFactory))+>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ +<!ELEMENT language (contentType)*>
+<!ATTLIST language
+id CDATA #REQUIRED
name CDATA #REQUIRED
class CDATA #REQUIRED>
+ +org.eclipse.core.model.AbstractLanguage
.<!ELEMENT contentType EMPTY>
+<!ATTLIST contentType
+id CDATA #IMPLIED>
+ +<!ELEMENT pdomLinkageFactory EMPTY>
+<!ATTLIST pdomLinkageFactory
+id CDATA #REQUIRED
class CDATA #REQUIRED>
+ ++<language + class="org.eclipse.cdt.core.dom.ast.gnu.c.GCCLanguage" + id="gcc" + name="GNU C"> + <contentType id="org.eclipse.cdt.core.cSource"/> + <contentType id="org.eclipse.cdt.core.cHeader"/> +</language> ++ + +
org.eclipse.cdt.core.language.gcc
(GNU C) and
+org.eclipse.cdt.core.language.g++
(GNU C++).
+The respective language implementations are
+org.eclipse.cdt.core.dom.ast.gnu.c.GCCLanguage
and
+org.eclipse.cdt.core.dom.ast.gnu.cpp.GPPLanguage
+
+Copyright (c) 2005, 2007 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 + +
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_projectConverter.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_projectConverter.html new file mode 100644 index 00000000000..c3eff9dc7f6 --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_projectConverter.html @@ -0,0 +1,43 @@ + + + +<!ELEMENT extension (converter)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ +<!ELEMENT converter EMPTY>
+<!ATTLIST converter
+owners CDATA #IMPLIED
natures CDATA #IMPLIED
class CDATA #REQUIRED>
+ ++
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_templateAssociations.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_templateAssociations.html new file mode 100644 index 00000000000..0e730c4a910 --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_templateAssociations.html @@ -0,0 +1,73 @@ + + + +<!ELEMENT extension (template+)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ ++Each extension consists of a sequence of template elements, each of which define child elements for the new toolchains that should be enabled for selection during new project creation.
+<!ELEMENT toolChain EMPTY>
+<!ATTLIST toolChain
+id CDATA #REQUIRED>
+ ++This element is used to reference an existing toolchain by its unique identifier.
+<!ELEMENT template (toolChain*)>
+<!ATTLIST template
+id CDATA #REQUIRED>
+ ++This element references an existing template contribution's unique identifier in order that toolchains contributed separately to the template can be made selectable on project creation.
++<extension point="org.eclipse.cdt.core.templateAssociations"> + <template id="org.eclipse.cdt.build.core.templates.EmptyProject"> + <toolChain id="com.foobar.toolchain1.base"/> + <toolChain id="com.foobar.toolchain2.base"/> + </template> +</extension> ++ + +
+Copyright (c) 2007 Symbian Software Limited 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: +Symbian - Initial API and implementation + +
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_templateProcessTypes.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_templateProcessTypes.html new file mode 100644 index 00000000000..aab51ff9bf6 --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_templateProcessTypes.html @@ -0,0 +1,173 @@ + + + +<!ELEMENT extension (processType+)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED>
+ ++One or more elements of processType should be added as children to this element.
+<!ELEMENT processType ((simple | simpleArray | complex | complexArray)*)>
+<!ATTLIST processType
+name CDATA #REQUIRED
processRunner CDATA #REQUIRED>
+ ++This element defines a single process. A process is analogous to a procedure with a set of parameters. In similar terms, one can say that this element defines the prototype of this process procedure. One needs to specify all the parameters expected by this process. In the eventual template xml, one needs to specify arguments for the process matching the types and order of these parameters.
+<!ELEMENT simple EMPTY>
+<!ATTLIST simple
+name CDATA #REQUIRED
external (true | false)
nullable (true | false) >
+ ++A simple string parameter. In the eventual template xml, one needs to specify the same name as the value of the name attribute of a simple argument alongwith the corresponding value attribute.
+<!ELEMENT simpleArray EMPTY>
+<!ATTLIST simpleArray
+name CDATA #REQUIRED>
+ ++A simple string array parameter. In the eventual template xml, one needs to specify the same name as the value of the name attribute of a simple-array argument alongwith the corresponding element children, one child per array element with the corresponding value attribute.
+<!ELEMENT complex ((simple | simpleArray | complex | complexArray))+>
+<!ATTLIST complex
+name CDATA #REQUIRED>
+ ++A complex parameter that groups together any number of simple, simpleArray, complex, complexArray parameters. This is equivalent of an object parameter. In the eventual template xml, one needs to specify the same name as the value of the name attribute of a simple argument alongwith the corresponding children, each child matching the type of the corresponding child of this element.
+<!ELEMENT complexArray (baseType)>
+<!ATTLIST complexArray
+name CDATA #REQUIRED>
+ ++A complex array parameter. Each element of this parameter is of the same base complex type as specified by the baseType child of this element. In the eventual template xml, one needs to specify the same name as the value of the name attribute of a complex-array argument alongwith the corresponding element children, one child per array element with the corresponding complex type arguments (based on baseType definition).
+<!ELEMENT baseType ((simple | simpleArray | complex | complexArray))+>
+ ++This is not a direct parameter of a process. This simply acts as a complex grouping of parameters to be used as the base type of complexArray parameters.
++
+ <extension + id="processExample" + name="Process Example" + point="org.eclipse.cdt.core.templateengine.processTypes"> + + <processType + name="NewManagedProject" + processRunner="org.eclipse.cdt.core.templateengine.process.processes.NewManagedProject"> + <simple name="name"/> + <simple + external="true" + name="projectType"/> + <simple + external="true" + name="location" + nullable="true"/> + <simple name="targetType"/> + </processType> + + <processType + name="SetMBSBooleanOptionValue" + processRunner="org.eclipse.cdt.core.templateengine.process.processes.SetMBSBooleanOptionValue"> + <simple name="projectName"/> + <complexArray name="resourcePaths"> + <baseType> + <simple name="id"/> + <simple name="value"/> + <simple name="path"/> + </baseType> + </complexArray> + </processType> + + <processType + name="AddFile" + processRunner="org.eclipse.cdt.core.templateengine.process.processes.AddFile"> + <simple name="projectName"/> + <complex name="file"> + <simple name="source"/> + <simple name="target"/> + <simple name="replaceable"/> + </complex> + </processType> + + <processType + name="AppendToMBSStringListOptionValues" + processRunner="org.eclipse.cdt.core.templateengine.process.processes.AppendToMBSStringListOptionValues"> + <simple name="projectName"/> + <complexArray name="resourcePaths"> + <baseType> + <simple name="id"/> + <simpleArray name="values"/> + <simple name="path"/> + </baseType> + </complexArray> + </processType> + + </extension> ++ +For more details on how to define your own templates, please check examples provided under +org.eclipse.cdt.gnu.templates + + +
+Copyright (c) 2007 Symbian Software Limited 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: +Bala Torati (Symbian) - Initial API and implementation + +
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_templates.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_templates.html new file mode 100644 index 00000000000..ae02c7c66f2 --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_core_templates.html @@ -0,0 +1,93 @@ + + + +<!ELEMENT extension (template+)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ ++Extension point added to Template Engine plugin. Any plugin, which intends to contribute XML templates to the Template Engine must extend this extension point, and add the template element.
+<!ELEMENT template (toolChain*)>
+<!ATTLIST template
+id CDATA #REQUIRED
location CDATA #REQUIRED
projectType CDATA #REQUIRED
isCategory (true | false)
filterPattern CDATA #IMPLIED
pagesAfterTemplateSelectionProvider CDATA #IMPLIED>
+ ++By adding the templates extension point the users can contribute their Template XMLs to the Template Engine plugin.
+<!ELEMENT toolChain EMPTY>
+<!ATTLIST toolChain
+id CDATA #REQUIRED>
+ ++This element is used to reference an existing toolchain by its unique identifier.
++
+ <extension point="org.eclipse.cdt.core.templates"> + <template + id="org.foobar.templates.MyExampleTemplate" + location="templates/MyExampleTemplate/template.xml" + projectType="org.eclipse.cdt.build.core.buildArtefactType.exe" + filterPattern=".*"> + </template> + </extension> ++ +For more details on how to define your own templates, please check examples provided under org.eclipse.cdt.ui.templateengine + + +
+Copyright (c) 2007 Symbian Software Limited 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: +Symbian - Initial API and implementation + +
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_debug_core_BreakpointActionType.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_debug_core_BreakpointActionType.html new file mode 100644 index 00000000000..2f97cdba9e3 --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_debug_core_BreakpointActionType.html @@ -0,0 +1,49 @@ + + + +<!ELEMENT extension (actionType)>
+<!ATTLIST extension
+point CDATA #REQUIRED>
+ +<!ELEMENT actionType EMPTY>
+<!ATTLIST actionType
+id CDATA #IMPLIED
name CDATA #IMPLIED
class CDATA #IMPLIED>
+ ++Copyright (c) 2007 Nokia 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 + +
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_debug_core_BreakpointExtension.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_debug_core_BreakpointExtension.html new file mode 100644 index 00000000000..2b677768dee --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_debug_core_BreakpointExtension.html @@ -0,0 +1,63 @@ + + + +<!ELEMENT extension (breakpointExtension*)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ +<!ELEMENT breakpointExtension EMPTY>
+<!ATTLIST breakpointExtension
+id CDATA #REQUIRED
markerType CDATA #REQUIRED
class CDATA #REQUIRED
debugModelId CDATA #REQUIRED>
+ +ICBreakpointExtension
.+
+ <extension point="org.eclipse.cdt.debug.BreakpointExtension"> + <breakpointExtension + id="com.example.ExampleBreakpointExtension" + markerType="com.example.ExampleBreakpointMarker" + debugModeId="com.example.debug" + class="com.example.BreakpointExtensionImpl"> + </breakpointExtension> + </extension> ++ + +In the example above, the specified type of breakpoint extension is implemented by the class "com.example.BreakpointExtensionImpl". +This extension is going to apply to breakpoints with markers extending "com.example.ExampleBreakpointMarker", and to debug model with ID of "com.example.debug". + + +
+Copyright (c) 2007 Wind River 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
+
+
<!ELEMENT extension (debugger+)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ +<!ELEMENT debugger (buildIdPattern*)>
+<!ATTLIST debugger
+name CDATA #REQUIRED
modes CDATA #IMPLIED
class CDATA #REQUIRED
id CDATA #REQUIRED
platform CDATA #IMPLIED
cpu CDATA #IMPLIED
coreFileFilter CDATA #IMPLIED>
+ +<!ELEMENT buildIdPattern EMPTY>
+<!ATTLIST buildIdPattern
+pattern CDATA #IMPLIED>
+ ++Copyright (c) 2004, 2005 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 + +
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_make_core_MakeTargetBuilder.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_make_core_MakeTargetBuilder.html new file mode 100644 index 00000000000..bbe22c8d2a0 --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_make_core_MakeTargetBuilder.html @@ -0,0 +1,42 @@ + + + +<!ELEMENT extension (builder)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ +<!ELEMENT builder EMPTY>
+<!ATTLIST builder
+builderID CDATA #REQUIRED
id CDATA #REQUIRED>
+ ++
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_make_core_ScannerConfigurationDiscoveryProfile.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_make_core_ScannerConfigurationDiscoveryProfile.html new file mode 100644 index 00000000000..773b87aa85c --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_make_core_ScannerConfigurationDiscoveryProfile.html @@ -0,0 +1,101 @@ + + + ++- A make build output parser
+- A scanner info collector
+- An external scanner info generator
+ - An external scanner info generator output parser
+<!ELEMENT extension (scannerInfoCollector , buildOutputProvider? , scannerInfoProvider*)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #REQUIRED
name CDATA #REQUIRED>
+ ++Definition of a profile: +- A scanner info collector +- A make build output parser +- A number of external scanner info providers
+<!ELEMENT scannerInfoCollector EMPTY>
+<!ATTLIST scannerInfoCollector
+class CDATA #REQUIRED
scope (project|file) >
+ +<!ELEMENT scannerInfoConsoleParser EMPTY>
+<!ATTLIST scannerInfoConsoleParser
+class CDATA #REQUIRED
compilerCommands CDATA #IMPLIED>
+ ++Make build output or external scanner info provider output parser.
+<!ELEMENT buildOutputProvider (open? , scannerInfoConsoleParser)>
+ ++Build output provider is make build or/and build output file.
+<!ELEMENT scannerInfoProvider ((run | open) , scannerInfoConsoleParser)>
+<!ATTLIST scannerInfoProvider
+providerId CDATA #REQUIRED>
+ ++Either a command with arguments whose output will provide scanner information or a file that contains the scanner info.
+<!ELEMENT run EMPTY>
+<!ATTLIST run
+class CDATA #IMPLIED
command CDATA #IMPLIED
arguments CDATA #IMPLIED>
+ +<!ELEMENT open EMPTY>
+<!ATTLIST open
+class CDATA #IMPLIED
file CDATA #IMPLIED>
+ ++
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_make_ui_DiscoveryProfilePage.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_make_ui_DiscoveryProfilePage.html new file mode 100644 index 00000000000..d6dbcd5b26d --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_make_ui_DiscoveryProfilePage.html @@ -0,0 +1,49 @@ + + + +<!ELEMENT extension (profilePage+)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ ++An extension to define implementation of a SCD profile options page.
+<!ELEMENT profilePage EMPTY>
+<!ATTLIST profilePage
+name CDATA #REQUIRED
profileId CDATA #REQUIRED
class CDATA #REQUIRED>
+ ++Element defines a class that implements SCD profile options page for a profile with specified id.
++
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_ManagedBuildInfo.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_ManagedBuildInfo.html new file mode 100644 index 00000000000..065e2ef8b9f --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_ManagedBuildInfo.html @@ -0,0 +1,247 @@ + + + +<!ELEMENT extension (target , tool , configuration , dynamicElementProvider , managedBuildRevision)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ +<!ELEMENT tool (option , optionCategory)>
+<!ATTLIST tool
+id CDATA #REQUIRED
name CDATA #REQUIRED
sources CDATA #IMPLIED
outputs CDATA #IMPLIED
command CDATA #IMPLIED
outputFlag CDATA #IMPLIED
outputPrefix CDATA #IMPLIED
dependencyCalculator CDATA #IMPLIED
headerExtensions CDATA #IMPLIED
natureFilter (cnature|ccnature|both) >
+ ++Defines a tool used in the build process.
+IManagedDependencyGenerator
interface.<!ELEMENT option (enumeratedOptionValue , listOptionValue)>
+<!ATTLIST option
+id CDATA #REQUIRED
name CDATA #REQUIRED
valueType (string|stringList|boolean|enumerated|includePath|definedSymbols|libs|userObjs) "string"
category CDATA #IMPLIED
defaultValue CDATA #IMPLIED
command CDATA #IMPLIED
commandFalse CDATA #IMPLIED
browseType (none|file|directory)
helpSupplier CDATA #IMPLIED
tip CDATA #IMPLIED>
+ ++An option is associated with a tool. Options can contain boolean values, a simple text string, a selection from an enumerated list, or a list of values. Options also map the value they contain to a command-line flag, such as '-g' in the case of debugging symbol information for compilers.
+<!ELEMENT enumeratedOptionValue EMPTY>
+<!ATTLIST enumeratedOptionValue
+id CDATA #REQUIRED
name CDATA #REQUIRED
isDefault (true | false)
command CDATA #IMPLIED>
+ ++Defines a single value of an enumerated option.
+<!ELEMENT configuration (toolReference)>
+<!ATTLIST configuration
+id CDATA #REQUIRED
name CDATA #REQUIRED>
+ ++A configuration is used to gather together certain default tools and options to build target a certain way. For example, a "Debug" configuration might supply tools with the options set to build with debugging symbols, whereas a "Release" configuration would supply tools with options set to create the best performance.
+<!ELEMENT toolReference (optionReference)>
+<!ATTLIST toolReference
+id CDATA #REQUIRED
command CDATA #IMPLIED
outputs CDATA #IMPLIED
outputPrefix CDATA #IMPLIED
outputFlag CDATA #IMPLIED>
+ ++This is reserved for future use. It currently gets instantiated for saving tool settings.
+<!ELEMENT optionReference (listOptionValue , enumeratedOptionValue)>
+<!ATTLIST optionReference
+id CDATA #REQUIRED
defaultValue CDATA #IMPLIED
command CDATA #IMPLIED>
+ ++Option references hold onto information the user has changed through the UI. Not all fields will be populated, depending on the option type the reference overrides. For example, the 'name' field is used by enumerated options only.
+The attribute is also used to override the default option setting for a configuration in a toolchain. For example, a 'Debug' configuration may setthe value of a debug flag differently than the default value defined in the tool.
<!ELEMENT target (tool , configuration , toolReference)>
+<!ATTLIST target
+id CDATA #REQUIRED
name CDATA #IMPLIED
isAbstract (true | false) "false"
parent CDATA #IMPLIED
artifactName CDATA #IMPLIED
defaultExtension CDATA #IMPLIED
isTest (true | false)
cleanCommand CDATA #IMPLIED
makeCommand CDATA #IMPLIED
makeArguments CDATA #IMPLIED
binaryParser CDATA #IMPLIED
osList CDATA #IMPLIED
archList CDATA #IMPLIED
errorParsers CDATA #IMPLIED
scannerInfoCollector CDATA #IMPLIED
makefileGenerator CDATA #IMPLIED>
+ ++Represents a type of resource that is the target of the build process, for example, a Linux static library. A target contains a sequence of tool definitions and configurations. Targets are arranged in an inheritance hierarchy where a target inherits the list of tools from it's parent and can add to or override tools in this list.
+rm -rf
whereas on Win32 platforms it would be del /F /S /Q
IManagedScannerInfoCollector
for gathering the built-in compiler settings for a toolchain.IManagedBuilderMakefileGenerator
interface.<!ELEMENT optionCategory EMPTY>
+<!ATTLIST optionCategory
+id CDATA #REQUIRED
name CDATA #IMPLIED
owner CDATA #IMPLIED>
+ ++An optional, but useful, mechanism for grouping options together.
+<!ELEMENT listOptionValue EMPTY>
+<!ATTLIST listOptionValue
+value CDATA #REQUIRED
builtIn (true | false) >
+ ++A value for defining individual elements of a list option.
+<!ELEMENT dynamicElementProvider EMPTY>
+<!ATTLIST dynamicElementProvider
+class CDATA #REQUIRED
name CDATA #REQUIRED>
+ ++An optional element that allows a tool implementor to supply a class that creates one or more dynamic toolchain elements. For example, the class might create a new tool reference based on the contents of a special file, and a new target that uses that reference.
+IManagedConfigElementProvider
interface. The logic of determining the elements is left to the implementer, but they must be correctly formed or the build model will have trouble loading.<!ELEMENT managedBuildRevision EMPTY>
+<!ATTLIST managedBuildRevision
+fileVersion CDATA #REQUIRED>
+ ++Version identifier for the managed build extension point. It is a string representation, consisting of three (3) tokens separated by a decimal point. The 3 tokens are positive integer numbers. For example, the following are valid version identifiers: +
0.0.0
1.0.1234
1.9
(interpreted as 1.9.0
)3
(interpreted as 3.0.0
)+
+ <extension + id="buildExample" + name="Tools for Build Example" + point="org.eclipse.cdt.core.ManagedBuildInfo"> + <target + makeFlags="-k" + isTest="false" + cleanCommand="rm -rf" + name="Executable" + defaultExtension=".exe" + isAbstract="false" + makeCommand="make" + id="example.target.executable"> + <tool + sources="C" + name="Compiler" + outputFlag="-o" + outputs="exe" + command="g++" + id="executable.compiler"> + <optionCategory + owner="executable.compiler" + name="Flags" + id="compiler.category.flags"> + </optionCategory> + <option + defaultValue="-c" + name="Compiler Flags" + category="compiler.category.flags" + valueType="string" + id="category.flags.comp_flags"> + </option> + </tool> + <configuration + name="Default" + id="example.config.default"> + </configuration> + </target> + </extension> ++ + +
+Copyright (c) 2003, 2004 IBM 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 on the Eclipse website. + +
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_buildDefinitions.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_buildDefinitions.html new file mode 100644 index 00000000000..87e8a7171ba --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_buildDefinitions.html @@ -0,0 +1,630 @@ + + + +<!ELEMENT extension (projectType* , configuration* , toolChain* , tool* , targetPlatform* , builder* , dynamicElementProvider* , managedBuildRevision? , buildDefinitionStartup*)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ +<!ELEMENT projectType (configuration*)>
+<!ATTLIST projectType
+id CDATA #REQUIRED
name CDATA #IMPLIED
superClass CDATA #IMPLIED
isAbstract (true | false) "false"
unusedChildren CDATA #IMPLIED
isTest (true | false)
projectEnvironmentSupplier CDATA #IMPLIED
projectMacroSupplier CDATA #IMPLIED
configurationNameProvider CDATA #IMPLIED
convertToId CDATA #IMPLIED
buildProperties CDATA #IMPLIED
buildArtefactType CDATA #IMPLIED>
+ ++Represents a class of project which acts as a template for the projects that the user will create, for example, a Linux static library. A project type contains a sequence of configurations. Project types are arranged in an inheritance hierarchy where a project type inherits the list of configurations from it's parent and can add to or override configurations in this list.
+<!ELEMENT project (configuration+)>
+<!ATTLIST project
+name CDATA #REQUIRED
projectType CDATA #REQUIRED>
+ ++The project element is an instance of a projectType element. It appears in the .cdtbuild file, not in an extension definition.
+<!ELEMENT configuration (toolChain? , resourceConfiguration* , enablement* , folderInfo* , fileInfo*)>
+<!ATTLIST configuration
+id CDATA #REQUIRED
name CDATA #IMPLIED
parent CDATA #IMPLIED
artifactName CDATA #IMPLIED
artifactExtension CDATA #IMPLIED
cleanCommand CDATA #IMPLIED
errorParsers CDATA #IMPLIED
prebuildStep CDATA #IMPLIED
postbuildStep CDATA #IMPLIED
preannouncebuildStep CDATA #IMPLIED
postannouncebuildStep CDATA #IMPLIED
description CDATA #IMPLIED
buildProperties CDATA #IMPLIED
buildArtefactType CDATA #IMPLIED>
+ ++A configuration is used to gather together certain default tools and options to build project a certain way. For example, a "Debug" configuration might supply tools with the options set to build with debugging symbols, whereas a "Release" configuration would supply tools with options set to create the best performance.
+rm -rf
whereas on Win32 platforms it would be del /F /S /Q
<!ELEMENT toolChain (tool* , targetPlatform? , builder? , optionCategory* , option* , supportedProperties?)>
+<!ATTLIST toolChain
+id CDATA #REQUIRED
name CDATA #IMPLIED
superClass CDATA #IMPLIED
isAbstract (true | false) "false"
unusedChildren CDATA #IMPLIED
osList CDATA #IMPLIED
archList CDATA #IMPLIED
errorParsers CDATA #IMPLIED
scannerConfigDiscoveryProfileId CDATA #IMPLIED
targetTool CDATA #IMPLIED
secondaryOutputs CDATA #IMPLIED
isToolChainSupported CDATA #IMPLIED
configurationEnvironmentSupplier CDATA #IMPLIED
configurationMacroSupplier CDATA #IMPLIED
versionsSupported CDATA #IMPLIED
convertToId CDATA #IMPLIED
optionPathConverter CDATA #IMPLIED
supportsManagedBuild (true | false)
isSystem (true | false) >
+ ++A tool-integrator-defined, ordered set of tools that tranform the project's resources into the project's outputs. A tool-chain can be defined as part of a configuration, or as an independent specification that is referenced from a separate configuration via the tool-chain superClass attribute.
+<!ELEMENT resourceConfiguration (tool+)>
+<!ATTLIST resourceConfiguration
+resourcePath CDATA #REQUIRED
exclude (true | false)
rcbsApplicability (before|after|override|disable)
toolsToInvoke CDATA #IMPLIED>
+ ++A place to store build attributes of individual resources that are different from the configuration as a whole.
+<!ELEMENT tool (option* , optionCategory* , inputType* , outputType* , envVarBuildPath* , enablement* , supportedProperties?)>
+<!ATTLIST tool
+id CDATA #REQUIRED
name CDATA #IMPLIED
superClass CDATA #IMPLIED
isAbstract (true | false) "false"
unusedChildren CDATA #IMPLIED
sources CDATA #IMPLIED
headerExtensions CDATA #IMPLIED
outputs CDATA #IMPLIED
outputFlag CDATA #IMPLIED
outputPrefix CDATA #IMPLIED
natureFilter (cnature|ccnature|both)
command CDATA #IMPLIED
commandLinePattern CDATA #IMPLIED
commandLineGenerator CDATA #IMPLIED
dependencyCalculator CDATA #IMPLIED
errorParsers CDATA #IMPLIED
advancedInputCategory (true | false)
customBuildStep (true | false)
announcement CDATA #IMPLIED
icon CDATA #IMPLIED
versionsSupported CDATA #IMPLIED
convertToId CDATA #IMPLIED
optionPathConverter CDATA #IMPLIED
supportsManagedBuild (true | false)
isSystem (true | false) >
+ ++Defines a tool used in the build process.
+<!ELEMENT inputType (inputOrder* , additionalInput* , enablement*)>
+<!ATTLIST inputType
+id CDATA #REQUIRED
name CDATA #IMPLIED
superClass CDATA #IMPLIED
sourceContentType CDATA #IMPLIED
sources CDATA #IMPLIED
dependencyContentType CDATA #IMPLIED
dependencyExtensions CDATA #IMPLIED
option CDATA #IMPLIED
assignToOption CDATA #IMPLIED
multipleOfType (true | false)
primaryInput (true | false)
dependencyCalculator CDATA #IMPLIED
buildVariable CDATA #IMPLIED
scannerConfigDiscoveryProfileId CDATA #IMPLIED
languageId CDATA #IMPLIED
languageInfoCalculator CDATA #IMPLIED>
+ ++Defines a type of input for the tool. Note that the calculated dependencies of an input type are not described by a separate input type, but are described by attributes of this element.
+IManagedDependencyGenerator
interface.<!ELEMENT inputOrder EMPTY>
+<!ATTLIST inputOrder
+path CDATA #REQUIRED
order CDATA #IMPLIED
excluded (true | false) >
+ ++Describes optional, ordering, information regarding the inputs of an inputType. Note: This element is not yet implemented
+<!ELEMENT additionalInput EMPTY>
+<!ATTLIST additionalInput
+paths CDATA #REQUIRED
kind (additionalinput|additionalinputdependency|additionaldependency) >
+ ++Describes optional information regarding additional inputs and/or dependencies.
+<!ELEMENT outputType (enablement*)>
+<!ATTLIST outputType
+id CDATA #REQUIRED
name CDATA #IMPLIED
superClass CDATA #IMPLIED
outputContentType CDATA #IMPLIED
outputs CDATA #IMPLIED
option CDATA #IMPLIED
multipleOfType (true | false)
primaryInputType CDATA #IMPLIED
primaryOutput (true | false)
outputPrefix CDATA #IMPLIED
outputNames CDATA #IMPLIED
namePattern CDATA #IMPLIED
nameProvider CDATA #IMPLIED
buildVariable CDATA #IMPLIED>
+ ++Defines a type of output for the tool.
+IManagedOutputNameProvider
interface. If specified, the outputNames and namePattern are ignored. When multipleOfType is true, this attribute, or the outputNames attribute, is required in order for MBS to know the names of the output files.<!ELEMENT optionCategory EMPTY>
+<!ATTLIST optionCategory
+id CDATA #REQUIRED
name CDATA #REQUIRED
owner CDATA #IMPLIED
icon CDATA #IMPLIED>
+ ++An optional, but useful, mechanism for grouping options together.
+<!ELEMENT option ((listOptionValue* | enumeratedOptionValue*) , enablement*)>
+<!ATTLIST option
+id CDATA #REQUIRED
name CDATA #IMPLIED
superClass CDATA #IMPLIED
isAbstract (true | false) "false"
unusedChildren CDATA #IMPLIED
category CDATA #IMPLIED
resourceFilter (project|file|all) "all"
valueType (string|stringList|boolean|enumerated|includePath|definedSymbols|libs|userObjs|symbolFiles|includeFiles|libPaths|libFiles|undefIncludePath|undefDefinedSymbols|undefLibPaths|undefLibFiles|undefIncludeFiles|undefSymbolFiles) "string"
browseType (none|file|directory)
value CDATA #IMPLIED
defaultValue CDATA #IMPLIED
command CDATA #IMPLIED
commandFalse CDATA #IMPLIED
helpSupplier CDATA #IMPLIED
tip CDATA #IMPLIED
contextId CDATA #IMPLIED
valueHandler CDATA #IMPLIED
valueHandlerExtraArgument CDATA #IMPLIED
applicabilityCalculator CDATA #IMPLIED
contextId CDATA #IMPLIED>
+ ++An option is associated with a tool. Options can contain boolean values, a simple text string, a selection from an enumerated list, or a list of values. Options also map the value they contain to a command-line flag, such as '-g' in the case of debugging symbol information for compilers. +Options can also be associated with a toolchain. However in such a case the option must be contained in a optionCategory.
+<!ELEMENT enumeratedOptionValue EMPTY>
+<!ATTLIST enumeratedOptionValue
+id CDATA #REQUIRED
name CDATA #REQUIRED
isDefault (true | false)
command CDATA #IMPLIED>
+ ++Defines a single value of an enumerated option.
+<!ELEMENT listOptionValue EMPTY>
+<!ATTLIST listOptionValue
+value CDATA #REQUIRED
builtIn (true | false) >
+ ++A value for defining individual elements of a list option.
+<!ELEMENT builder EMPTY>
+<!ATTLIST builder
+id CDATA #REQUIRED
name CDATA #IMPLIED
superClass CDATA #IMPLIED
isAbstract (true | false) "false"
unusedChildren CDATA #IMPLIED
command CDATA #IMPLIED
arguments CDATA #IMPLIED
buildfileGenerator CDATA #IMPLIED
errorParsers CDATA #IMPLIED
variableFormat CDATA #IMPLIED
isVariableCaseSensitive (true | false) "false"
reservedMacroNames CDATA #IMPLIED
reservedMacroNameSupplier CDATA #IMPLIED
macroInputFileNameValue CDATA #IMPLIED
macroInputFileExtValue CDATA #IMPLIED
macroInputFileBaseNameValue CDATA #IMPLIED
macroInputFileRelPathValue CDATA #IMPLIED
macroInputDirRelPathValue CDATA #IMPLIED
macroOutputFileNameValue CDATA #IMPLIED
macroOutputFileExtValue CDATA #IMPLIED
macroOutputFileBaseNameValue CDATA #IMPLIED
macroOutputFileRelPathValue CDATA #IMPLIED
macroOutputDirRelPathValue CDATA #IMPLIED
versionsSupported CDATA #IMPLIED
convertToId CDATA #IMPLIED
supportsManagedBuild (true | false)
autoBuildTarget CDATA #IMPLIED
incrementalBuildTarget CDATA #IMPLIED
cleanBuildTarget CDATA #IMPLIED
ignoreErrCmd CDATA #IMPLIED
parallelBuildCmd CDATA #IMPLIED
isSystem (true | false) >
+ ++Represents the utility that drives the build process (typically, but not necessarily, a variant of "make").
+IManagedBuilderMakefileGenerator
interface.<!ELEMENT targetPlatform EMPTY>
+<!ATTLIST targetPlatform
+id CDATA #REQUIRED
name CDATA #IMPLIED
superClass CDATA #IMPLIED
isAbstract (true | false) "false"
unusedChildren CDATA #IMPLIED
osList CDATA #IMPLIED
archList CDATA #IMPLIED
binaryParser CDATA #IMPLIED>
+ ++Represents the os/architecture combination(s) upon which the outputs of a tool-chain can be deployed.
+<!ELEMENT dynamicElementProvider EMPTY>
+<!ATTLIST dynamicElementProvider
+class CDATA #REQUIRED
name CDATA #REQUIRED>
+ ++An optional element that allows a tool implementor to supply a class that creates one or more dynamic toolchain elements. For example, the class might create a new tool reference based on the contents of a special file, and a new target that uses that reference.
+IManagedConfigElementProvider
interface. The logic of determining the elements is left to the implementer, but they must be correctly formed or the build model will have trouble loading.<!ELEMENT buildDefinitionStartup EMPTY>
+<!ATTLIST buildDefinitionStartup
+class CDATA #REQUIRED
name CDATA #REQUIRED>
+ ++An optional element that allows a tool implementor to supply a class that insures a plugin that modifies any build configruation attributes (e.g. the build config id) will get loaded before initial project information is created.
+IManagedBuildDefinitionsStartup
interface. This class may not actually do anything, but additional initialization can be done here is desired.<!ELEMENT managedBuildRevision EMPTY>
+<!ATTLIST managedBuildRevision
+fileVersion CDATA #REQUIRED>
+ ++Version identifier for the managed build extension point. It is a string representation, consisting of three (3) tokens separated by a decimal point. The 3 tokens are positive integer numbers. For example, the following are valid version identifiers: +
0.0.0
1.0.1234
1.9
(interpreted as 1.9.0
)3
(interpreted as 3.0.0
)<!ELEMENT envVarBuildPath EMPTY>
+<!ATTLIST envVarBuildPath
+pathType (buildpathInclude|buildpathLibrary)
variableList CDATA #REQUIRED
pathDelimiter CDATA #IMPLIED
buildPathResolver CDATA #IMPLIED>
+ ++Defines a set of environment variables used by a tool to represent the build paths (include paths or library paths).
+<!ELEMENT enablement (and* | or* | not* | checkOption* | checkString* | false* | checkHolder* | checkBuildProperty* | hasNature*)>
+<!ATTLIST enablement
+type CDATA "ALL"
attribute (command|commandFalse|defaultValue|value|artifactExtension)
value CDATA #IMPLIED
extensionAdjustment (true | false) >
+ ++Contains boolean expression that specifies option applicability
+<!ELEMENT and (and* , or* , not* , checkOption* , checkString* , checkHolder* , checkBuildProperty*)>
+ ++Represents boolean "and" operation
+<!ELEMENT or (and* , or* , not* , checkOption* , checkString* , checkHolder* , checkBuildProperty*)>
+ ++Represents boolean "or" operation
+<!ELEMENT not (and* | or* | not* | checkOption* | checkString* | checkHolder* | checkBuildProperty*)>
+ ++Represents boolean "not" operation
+<!ELEMENT checkOption EMPTY>
+<!ATTLIST checkOption
+optionId CDATA #IMPLIED
holderId CDATA #IMPLIED
value CDATA #IMPLIED
isRegex CDATA "false"
otherOptionId CDATA #IMPLIED
otherHolderId CDATA #IMPLIED>
+ ++Performs an option value check. The option value can be checked either agains some pre-defined value or against the value of another option
+<!ELEMENT checkString EMPTY>
+<!ATTLIST checkString
+string CDATA #REQUIRED
value CDATA #REQUIRED
isRegex CDATA "false">
+ ++Performs a string check.
+<!ELEMENT false (#PCDATA)>
+ ++Represents the "false" value. This element can be used as a direct child of the "enablement" element to represent that the given option applicability is disabled. E.g. to specify that the option is never displayed in UI or never used in the command line.
+<!ELEMENT checkHolder EMPTY>
+<!ATTLIST checkHolder
+holderId CDATA #REQUIRED>
+ ++Performs the holder check.
+<!ELEMENT checkBuildProperty EMPTY>
+<!ATTLIST checkBuildProperty
+property CDATA #IMPLIED
value CDATA #IMPLIED>
+ ++Performs the Build Property check
+<!ELEMENT supportedProperties (property)>
+ ++contains the list of supported properties
+<!ATTLIST property
+id CDATA #IMPLIED>
+ ++contains the supported values for the property
+<!ELEMENT value EMPTY>
+<!ATTLIST value
+id CDATA #IMPLIED>
+ ++represents the property value
+<!ELEMENT folderInfo (toolChain)>
+<!ATTLIST folderInfo
+resourcePath CDATA #REQUIRED
exclude (true | false) >
+ ++Represents per-folder settings.
+<!ELEMENT fileInfo EMPTY>
+<!ATTLIST fileInfo
+resourcePath CDATA #IMPLIED
exclude (true | false)
rcbsApplicability (before|after|override|disable)
toolsToInvoke CDATA #IMPLIED>
+ ++Represents per-file settings. +This element has the same meaning as resourceConfiguration. +It is added for consistency with the folderInfo element. +The only difference between this element and the resourceConfiguration is that resourceConfiguration specifies the resource full path, while the fileInfo specifies project-relative resource path in the same way as the folderInfo does.
+<!ELEMENT hasNature EMPTY>
+<!ATTLIST hasNature
+natureId CDATA #IMPLIED>
+ ++Checks whether the project containing the resource has a given nature
++Copyright (c) 2003, 2006 IBM 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 on the Eclipse website. + +
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_buildProperties.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_buildProperties.html new file mode 100644 index 00000000000..4a70deb8edc --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_buildProperties.html @@ -0,0 +1,57 @@ + + + +<!ELEMENT extension (propertyType* , propertyValue*)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ ++The build properties extension point is used to specify the property types and their values to be used with the tool definitions. The primary use if the build properties for now is option anablement/adjustment expressions.
+<!ELEMENT propertyType EMPTY>
+<!ATTLIST propertyType
+id CDATA #REQUIRED
name CDATA #REQUIRED>
+ ++specifies the property type
+<!ELEMENT propertyValue EMPTY>
+<!ATTLIST propertyValue
+id CDATA #REQUIRED
name CDATA #REQUIRED
property CDATA #REQUIRED>
+ ++
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_projectConverter.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_projectConverter.html new file mode 100644 index 00000000000..62e5866be7f --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_projectConverter.html @@ -0,0 +1,68 @@ + + + +<!ELEMENT extension (converter+)>
+<!ATTLIST extension
+point CDATA #REQUIRED
name CDATA #IMPLIED
id CDATA #IMPLIED>
+ +<!ELEMENT converter EMPTY>
+<!ATTLIST converter
+fromId CDATA #REQUIRED
toId CDATA #REQUIRED
mbsVersion CDATA #REQUIRED
class CDATA #REQUIRED
id CDATA #REQUIRED
name CDATA #REQUIRED>
+ ++This extension point allows a tool integrator to contribute a project-type/tool-chain/tool/builder converter to MBS. Converters can be used to upgrade to newer versions, change the project-type, or to perform conversions between different tool chains/tools/buiders.
++
+ <extension point="org.eclipse.cdt.managedbuilder.core.converter"> + <converter + fromId="project-type/tool-chain/tool/builder id" + toId="project-type/tool-chain/tool/builder id" + mbsVersion="The MBS version the converter was written for" + class="org.eclipse.cdt.managedbuilder.core.GccConverter"> + </converter> + </extension> ++ + + +
+Copyright (c) 2005 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 + +
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_tcModificationInfo.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_tcModificationInfo.html new file mode 100644 index 00000000000..15fab392509 --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_core_tcModificationInfo.html @@ -0,0 +1,81 @@ + + + +<!ELEMENT extension (conflictDefinition*)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #REQUIRED
name CDATA #REQUIRED>
+ +<!ELEMENT matchObject (pattern*)>
+<!ATTLIST matchObject
+objectIds CDATA #IMPLIED
objectType (toolChain|tool|builder|configuration)
searchScope (ALL_EXTENSION_SUPERCLASSES|EXTENSION_OBJECT) "EXTENSION_SUPERCLASSES"
objectIdsType (REGEXP|EXACT_MATCH) "EXACT_MATCH">
+ ++specifies the buildObject pattern to be matched.
+<!ELEMENT conflictDefinition (matchObject)>
+ +
+represents templates for objects conflicting with each other.
+
See the "Calculating Tool-chain modification info from the “objects-set” info" section for more information
+
the "status" object for this element represents the status information to be applied in case the given conflictingSet information is not fulfilled.
<!ELEMENT pattern EMPTY>
+<!ATTLIST pattern
+objectIds CDATA #REQUIRED
type (EXACT_MATCH|REGEXP) "EXACT_MATCH"
searchScope (ALL_EXTENSION_SUPERCLASSES|EXTENSION_OBJECT) "EXTENSION_SUPERCLASSES"
objectIdsType (REGEXP|EXACT_MATCH) >
+ ++specifies a string pattern
++
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_ui_newWizardPages.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_ui_newWizardPages.html new file mode 100644 index 00000000000..d650931fcc1 --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_managedbuilder_ui_newWizardPages.html @@ -0,0 +1,136 @@ + + + +<!ELEMENT extension (wizardPage+)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ ++Extensions to this extension point must contain at least one wizardPage child element.
+<!ELEMENT wizardPage (nature* , toolchain* , projectType*)>
+<!ATTLIST wizardPage
+ID CDATA #REQUIRED
pageClass CDATA #REQUIRED
operationClass CDATA #IMPLIED>
+ ++Each instance of this element defines an additional page which is added to the New Project wizard. Pages are added after the default pages provided by MBS. Pages are added in the order they are discovered. + +Note that the IWizardPage interface allows a page to specify programmatically and dynamically at runtime what its previous and next pages are. This element does not trump that behaviour, but rather just specifies the order in which the pages are added to the wizard (and hence the order in which the pages appear if they do not override the previous and next page methods). + +Wizard pages as GUI elements by themselves are really not all that useful. More than likely if someone is defining their own wizard pages it’s because they need some additional operations to happen upon project creation in addition to the stock behaviour of creating a basic project, and they want to use their new wizard pages to provide a front end to these operations. + +As such, along with a specification of the GUI wizard page, ISVs may specify a runnable operation that will be executed in the wizard’s doRunEpilogue() method. These contributions will all be executed in the order that the wizard pages were added to the wizard. Not all pages need have such a contribution however, as ISVs may need to perform all the operations associated with their pages as a group. In cases such as this the ISV can define an operation for one of the pages and it can pull data from any of the other pages as required.
+<!ELEMENT nature EMPTY>
+<!ATTLIST nature
+natureID CDATA #REQUIRED>
+ ++This optional child element of wizardPage specifies the project nature(s) for which the additional pages should apply. One instance of this element is provided per nature supported. + + This would for example allow one to add pages to the New Managed C Project wizard but not the New Managed C++ project wizard, or other hypothetical natures that might be supported by MBS in the future (e.g. someday there might be a Fortran nature). +If no natureID elements are specified, then it is assumed that the page potentially applies to all project natures, although it may still be excluded based on project type or toolchain.
+<!ELEMENT toolchain EMPTY>
+<!ATTLIST toolchain
+toolchainID CDATA #REQUIRED
versionsSupported CDATA #IMPLIED>
+ ++This is an optional child element of wizardPage which specifies a toolchain for which the additional pages should apply. One instance of this element is provided per toolchain supported by the page. + +If no toolchain elements are specified, then it is assumed that the page potentially applies to all toolchains, although it may still be excluded based on project type or project nature.
+<!ELEMENT projectType EMPTY>
+<!ATTLIST projectType
+projectTypeID CDATA #REQUIRED>
+ ++This is an optional child element of wizardPage which specifies a projectType for which the additional pages should apply. One instance of this element is provided per toolchain supported by the page. + +If no projectType elements are specified, then it is assumed that the page potentially applies to all projectTypes, although it may still be excluded based on toolchain or nature.
++Copyright (c) 2005 Texas Instruments Incorporated 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 + +
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_CDTWizard.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_CDTWizard.html new file mode 100644 index 00000000000..35d54d04c41 --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_CDTWizard.html @@ -0,0 +1,43 @@ + + + +<!ELEMENT extension (wizard+)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ +<!ELEMENT wizard EMPTY>
+<!ATTLIST wizard
+class CDATA #IMPLIED
parent CDATA #IMPLIED
name CDATA #IMPLIED>
+ ++
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_CHelpProvider.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_CHelpProvider.html new file mode 100644 index 00000000000..00fc9d5bc86 --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_CHelpProvider.html @@ -0,0 +1,42 @@ + + + +<!ELEMENT extension (provider)+>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ +<!ELEMENT provider EMPTY>
+<!ATTLIST provider
+class CDATA #REQUIRED
id CDATA #REQUIRED>
+ ++
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_ConfigManager.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_ConfigManager.html new file mode 100644 index 00000000000..99074fe1e5f --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_ConfigManager.html @@ -0,0 +1,54 @@ + + + +<!ELEMENT extension (manager+)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ +<!ELEMENT manager EMPTY>
+<!ATTLIST manager
+class CDATA #REQUIRED>
+ ++/********************************************************************** + * Copyright (c) 2007 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 + **********************************************************************/ + +
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_DocCommentOwner.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_DocCommentOwner.html new file mode 100644 index 00000000000..70307a69f74 --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_DocCommentOwner.html @@ -0,0 +1,67 @@ + + + ++ +Where C and C++ define single and multiline comments, there is no corresponding language level definition of distinguished comments recognized by documentation tools. A list of these is available here: Wikipedia Comparison of Documentation Generators
+ +The customization for single and multi-line comments is handled by two contributed implementations of the same interface
org.eclipse.cdt.ui.text.doctools.IDocCommentViewerConfiguration
+ +A level of understanding of the eclipse and CDT editor infrastructure is needed in order to contribute to this extension point. A good starting point is to look at the GenericDocTag classes in the package - see the API Information section below.
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ +<!ELEMENT owner EMPTY>
+<!ATTLIST owner
+id CDATA #REQUIRED
name CDATA #REQUIRED
multiline CDATA #REQUIRED
singleline CDATA #REQUIRED>
+ ++<extension + point="org.eclipse.cdt.ui.DocCommentOwner"> + <owner + id="org.eclipse.cdt.ui.doxygen" + name="Doxygen" + multiline="org.eclipse.cdt.ui.text.doctools.doxygen.DoxygenMultilineConfiguration" + singleline="org.eclipse.cdt.ui.text.doctools.doxygen.DoxygenSingleConfiguration"> + </owner> +</extension> ++ + +
org.eclipse.cdt.ui.text.doctools.generic
+
+
++Copyright (c) 2008 Symbian 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 + +
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_HelpInfo.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_HelpInfo.html new file mode 100644 index 00000000000..a262c59c79d --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_HelpInfo.html @@ -0,0 +1,54 @@ + + + +<!ELEMENT extension (helpInfo+)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ +<!ELEMENT helpInfo EMPTY>
+<!ATTLIST helpInfo
+file CDATA #REQUIRED
format CDATA #IMPLIED>
+ ++Allows defining map-file path relative to the plugin directory.
++
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_IndexerPage.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_IndexerPage.html new file mode 100644 index 00000000000..c869b7b00be --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_IndexerPage.html @@ -0,0 +1,44 @@ + + + +<!ELEMENT extension (indexerUI+)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ +<!ELEMENT indexerUI EMPTY>
+<!ATTLIST indexerUI
+id CDATA #REQUIRED
name CDATA #REQUIRED
indexerID CDATA #REQUIRED
class CDATA #REQUIRED>
+ +org.eclipse.cdt.ui.index2.AbstractIndexerPage
+
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_PathContainerPage.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_PathContainerPage.html new file mode 100644 index 00000000000..6f29c1a4e11 --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_PathContainerPage.html @@ -0,0 +1,44 @@ + + + +<!ELEMENT extension (PathContainerPage)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ +<!ELEMENT PathContainerPage EMPTY>
+<!ATTLIST PathContainerPage
+id CDATA #REQUIRED
class CDATA #REQUIRED
name CDATA #REQUIRED
icon CDATA #IMPLIED>
+ ++
+ + diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_ProposalFilter.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_ProposalFilter.html new file mode 100644 index 00000000000..ab0c6224b36 --- /dev/null +++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_ProposalFilter.html @@ -0,0 +1,60 @@ + + + +<!ELEMENT extension (ProposalFilter)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+ +<!ELEMENT ProposalFilter EMPTY>
+<!ATTLIST ProposalFilter
+id CDATA #REQUIRED
name CDATA #REQUIRED
class CDATA #REQUIRED>
+ +org.eclipse.cdt.ui.text.contentassist.IProposalFilter.
+
+
+Supplied Implementation:
The default implementation in org.eclipse.cdt.internal.ui.text.contentassist.DefaultProposalFilter is the default filtering method which is used as long as the user preference is not changed.
+
+
+
+
+Copyright (c) 2006 Norbert Ploett 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:
+Norbert Ploett (Siemens) - Initial Contribution
+
+
+
+
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_cPropertyTab.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_cPropertyTab.html
new file mode 100644
index 00000000000..fe859cd0011
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_cPropertyTab.html
@@ -0,0 +1,117 @@
+
+
+
+cPropertyTab
+
+
+
+
+cPropertyTab
+
+Identifier:
org.eclipse.cdt.managedbuilder.ui.cPropertyTab
+Since:
4.0
+
+
+Description:
Implementation of property/preference UI element.
+
+There're 2 ways to display property/preference data:
+either on pages with tabs, or on simple pages.
+
+In first case, each cPropertyTab extending class
+represents single tab in tabfolder.
+In second case, cPropertyTab extending class
+represents whole page contents (except header
+elements which are common for all pages).
+
+Note that cPropertyTab extending class ("tabs" below) do not
+distinguish these 2 cases, moreover, they may be shown both
+in multi-tab and single-tab mode. It's up to page to select
+displaying mode.
+
+In multi-tab page, tabs are displayed in order defined by
+their weights.
+Configuration Markup:
+
+
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+
+
+
+
<!ELEMENT tab EMPTY>
+<!ATTLIST tab
+icon CDATA #IMPLIED
class CDATA #REQUIRED
name CDATA #REQUIRED
parent CDATA #REQUIRED
tooltip CDATA #IMPLIED
weight CDATA #IMPLIED
helpId CDATA #IMPLIED>
+
+
+- icon - Icon to be displayed for corresponding tab in tabfolder.
+Ignored for single-tab pages
+- class - Class implementing org.eclipse.cdt.managedbuilder.ui.newproperties.ICPropertyTab
+- name - Name of tab in tabfolder.
+Ignored for single-tab pages.
+- parent - Class name for container page.
+Usually pages are to be derived from
+org.eclipse.cdt.ui.newui.AbstractPage,
+but it is not obligatory.
+- tooltip - Text of tooltip shown over the tab.
+- weight - Abstract value to be used for sorting tabs inside of tab folder.
+Ignored for single-tab page.
+- helpId - Help context Id for given tab.
+
+
Examples:
+
+
+
+
+Supplied Implementation:
Implementors in org.eclipse.cdt.ui.newui:
+BinaryParsTab
+CLocationOutputTab
+CLocationSourceTab
+CLocationTab
+EnvironmentTab
+ErrorParsTab
+ExpIncludeTab
+ExpLibraryPathTab
+ExpLibraryTab
+ExpSymbolTab
+ICPropertyTab
+IncludeTab
+LanguagesTab
+LibraryPathTab
+LibraryTab
+RefsTab
+SDKsTab
+SymbolTab
+
+Implementors in org.eclipse.cdt.managedbuilder.ui.newui:
+ArtifactTab
+BuilderSettingsTab
+BuildStepsTab
+CBuildLocationOutputTab
+CPropertyVarsTab
+DiscoveryTab
+ToolChainEditTab
+ToolSettingsTab
+
+
+
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+
+
+
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_completionProposalComputer.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_completionProposalComputer.html
new file mode 100644
index 00000000000..199c9fc50af
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_completionProposalComputer.html
@@ -0,0 +1,91 @@
+
+
+
+Completion Proposal Computer
+
+
+
+
+Completion Proposal Computer
+
+Identifier:
org.eclipse.cdt.ui.completionProposalComputer
+Since:
4.0
+
+
+Description:
This extension point allows to contribute completion proposal computers to participate in the content assist process of the C/C++ editor.
+Configuration Markup:
+
+<!ELEMENT extension (completionProposalComputer | proposalCategory)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #REQUIRED
name CDATA #IMPLIED>
+
+
+- point - The fully qualified identifier of the target extension point
+- id - The identifier of the extension instance, unique within the declaring plug-in (the plug-in's identifier will be prepended to form a platform-wide unique id)
+- name - The optional name of the extension instance
+
+
<!ELEMENT completionProposalComputer (partition)*>
+<!ATTLIST completionProposalComputer
+class CDATA #REQUIRED
activate (true | false) "false"
categoryId CDATA "org.eclipse.cdt.ui.defaultProposalCategory">
+
+
+A proposal computer contribution. If no partition types are specified, the computer is added to all partition types.
+
+
+- class - The name of the class that implements the contributed computer. The
+class must be public and implement
+org.eclipse.cdt.ui.text.contentassist.ICompletionProposalComputer
+and must have a public 0-argument constructor.
+- activate - If the attribute is set to "true" it will force this plug-in to be loaded on content assist invocation.
+- categoryId - The id of a proposalCategory
+
+
<!ELEMENT partition EMPTY>
+<!ATTLIST partition
+type (__dftl_partition_content_type|__c_multiline_comment|__c_singleline_comment|__c_string|__c_character|__c_preprocessor|__c_multiline_doc_comment|__c_singleline_doc_comment) >
+
+
+- type - A C/C++ partition type for which the specified computer can provide completion proposals. See
IDocument.DEFAULT_CONTENT_TYPE
and ICPartitions
for valid values.
+
+
<!ELEMENT proposalCategory EMPTY>
+<!ATTLIST proposalCategory
+icon CDATA #IMPLIED>
+
+
+A proposal category contribution defines categories of proposals used to group them in the UI.
+
+
+- icon - The optional icon of the category, which can be displayed in the user preferences.
+
+
Examples:
The following is an example of a completion proposal computer contribution:
+
+
+
+ <extension point="org.eclipse.cdt.ui.completionProposalComputer"
+ id="textual_proposals"
+ name="Text Proposals">
+ <proposalCategory icon="icons/wordcompletions.png"/>
+ </extension>
+ <extension point="org.eclipse.cdt.ui.completionProposalComputer"
+ id="WordCompletionProposalComputer"
+ name="Word Completion Proposal Computer">
+ <completionProposalComputer
+ class="org.eclipse.cdt.internal.ui.text.contentassist.HippieProposalComputer"
+ categoryId="org.eclipse.ui.texteditor.textual_proposals">
+ <partition type="__c_multiline_comment"/>
+ </completionProposalComputer>
+ </extension>
+
+
+
+
+Supplied Implementation:
see org.eclipse.cdt.internal.ui.text.contentassist.HippieProposalComputer
for an example.
+
+
+
+
+Copyright (c) 2006, 2007 IBM 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
+
+
+
+
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_foldingStructureProviders.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_foldingStructureProviders.html
new file mode 100644
index 00000000000..6baa9ff35df
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_foldingStructureProviders.html
@@ -0,0 +1,51 @@
+
+
+
+C/C++ Folding Structure Provider
+
+
+
+
+C/C++ Folding Structure Provider
+
+Identifier:
org.eclipse.cdt.ui.foldingStructureProviders
+Since:
3.0
+
+
+Description:
Contributions to this extension point define folding structures for the C/C++ editor. That is, they define the regions of a C/C++ source file that can be folded away. See org.eclipse.jface.text.source.ProjectionViewer
for reference.
+
+Extensions may optionally contribute a preference block which will appear on the C/C++ editor preference page.
+
+Configuration Markup:
+
+<!ELEMENT extension (provider)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+
+
+
+
<!ELEMENT provider EMPTY>
+<!ATTLIST provider
+id CDATA #REQUIRED
name CDATA #IMPLIED
class CDATA #REQUIRED
preferencesClass CDATA #IMPLIED>
+
+
+- id - The unique identifier of this provider.
+- name - The name of this provider. If none is given, the id is used instead.
+- class - An implementation of org.eclipse.cdt.ui.text.folding.ICFoldingStructureProvider
+- preferencesClass - An implementation of org.eclipse.cdt.ui.text.folding.ICFoldingPreferenceBlock
+
+
Examples:
See org.eclipse.cdt.ui.text.folding.DefaultCFoldingStructureProvider
for an example.
+
+
+Supplied Implementation:
org.eclipse.cdt.ui.text.folding.DefaultCFoldingStructureProvider
provides the default folding structure for the C/C++ editor.
+ org.eclipse.cdt.internal.ui.text.folding.DefaultCFoldingPreferenceBlock
provides the preference block for the default structure provider.
+
+
+
+
+Copyright (c) 2001, 2006 IBM 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
+
+
+
+
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_newCfgDialog.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_newCfgDialog.html
new file mode 100644
index 00000000000..8eb6bb33421
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_newCfgDialog.html
@@ -0,0 +1,64 @@
+
+
+
+newCfgDialog
+
+
+
+
+newCfgDialog
+
+Identifier:
org.eclipse.cdt.ui.newCfgDialog
+Since:
4.0
+
+
+Description:
Contributions to this extension point define specific dialog for new configuration creation. This dialog will be called from "Manage configurations" screen instead of standard (independent of managed build system) dialog.
+Contributed extension is usually provided with whole managed build system (MBS), so new dialog may be able to handle some MBS-specific features.
+To disinguish numerous dialogs for separate MBSs, mbs_id element should be the same as corresponding MBS Id.
+Configuration Markup:
+
+<!ELEMENT extension (dialog+)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+
+
+
+
<!ELEMENT dialog EMPTY>
+<!ATTLIST dialog
+class CDATA #REQUIRED
title CDATA #REQUIRED
mbs_id CDATA #REQUIRED>
+
+
+- class - class - New configuration dialog class.
+Should implement org.eclipse.cdt.ui.newui.INewCfgDialog interface
+- title - title - initial title of New configuration dialog.
+- mbs_id - This element should contain ID of corresponding managed buld system (MBS).
+Dialog will be displayed only if MBS Id for current project equals to mbs_id.
+
+
Examples:
+
+
+
+
+Supplied Implementation:
org.eclipse.cdt.managedbuilder.ui.newui.NewCfgDialog
+
+
+
+
+/*******************************************************************************
+ * Copyright (c) 2007 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
+ *******************************************************************************/
+
+
+
+
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_quickAssistProcessors.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_quickAssistProcessors.html
new file mode 100644
index 00000000000..bb4936560bb
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_quickAssistProcessors.html
@@ -0,0 +1,269 @@
+
+
+
+Quick Assist Processor
+
+
+
+
+Quick Assist Processor
+
+Identifier:
org.eclipse.cdt.ui.quickAssistProcessors
+Since:
5.1
+
+
+Description:
This extension point allows to add a Quick Assist processor to offer new Quick Assists in the C/C++ editor.
+This extension point supports the enablement
tag. Properties to test on are:
+
+
translationUnit: type ITranslationUnit; the translation unit the quick assist is applied on
+
+projectNatures: type Collection; all project natures of the current project
+
+
+Configuration Markup:
+
+<!ELEMENT extension (quickAssistProcessor+)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+
+
+- point - a fully qualified identifier of the target extension point
+- id - an optional identifier of the extension instance
+- name - an optional name of the extension instance
+
+
<!ELEMENT quickAssistProcessor (enablement?)>
+<!ATTLIST quickAssistProcessor
+id CDATA #REQUIRED
name CDATA #IMPLIED
class CDATA #IMPLIED
requiredSourceLevel CDATA #IMPLIED>
+
+
+- id - a unique identifier for the Quick Assist processor
+- name - a localized name of the Quick Assist processor
+- class - the name of the class that implements this Quick Assist processor. The
+class must be public and implement
+org.eclipse.cdt.ui.text.IQuickAssistProcessor
+with a public 0-argument constructor.
+- requiredSourceLevel - an optional attribute to specify the minimal source compliance this processor requires
+
+
<!ELEMENT enablement (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate , reference)*>
+
+
+A generic root element. The element can be used inside an extension point to define its enablement expression.
+ The children of an enablement expression are combined using the and operator.
+
+<!ELEMENT not (not | and | or | instanceof | test | systemTest | equals | count | with | resolve | adapt | iterate | reference)>
+
+
+This element represent a NOT operation on the result of evaluating it's sub-element expression.
+
+<!ELEMENT and (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate , reference)*>
+
+
+This element represent an AND operation on the result of evaluating all it's sub-elements expressions.
+
+<!ELEMENT or (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate , reference)*>
+
+
+This element represent an OR operation on the result of evaluating all it's sub-element expressions.
+
+<!ELEMENT instanceof EMPTY>
+<!ATTLIST instanceof
+value CDATA #REQUIRED>
+
+
+This element is used to perform an instanceof check of the object in focus. The expression returns
+ EvaluationResult.TRUE if the object's type is a sub type of the type specified by the attribute value.
+ Otherwise EvaluationResult.FALSE is returned.
+
+
+- value - a fully qualified name of a class or interface.
+
+
<!ELEMENT test EMPTY>
+<!ATTLIST test
+property CDATA #REQUIRED
args CDATA #IMPLIED
value CDATA #IMPLIED
forcePluginActivation (true | false) >
+
+
+This element is used to evaluate the property state of the object in focus. The set of
+ testable properties can be extended using the propery tester extension point. The test
+ expression returns EvaluationResult.NOT_LOADED if the property tester doing the actual
+ testing isn't loaded yet and the attribute forcePluginActivation is set to false.
+ If forcePluginActivation is set to true and the evaluation context used to evaluate
+ this expression support plug-in activation then evaluating the property will result in
+ activating the plug-in defining the tester.
+
+
+- property - the name of an object's property to test.
+- args - additional arguments passed to the property tester. Multiple arguments are seperated
+ by commas. Each individual argument is converted into a Java base type using the same
+ rules as defined for the value attribute of the test expression.
+- value - the expected value of the property. Can be omitted if the property
+ is a boolean property. The test expression is supposed to return
+EvaluationResult.TRUE if the property matches the value and EvaluationResult.FALSE
+otherwise. The value attribute is converted into a Java base type using the following
+rules:
+
+ - the string "true" is converted into Boolean.TRUE
+ - the string "false" is converted into Boolean.FALSE
+ - if the string contains a dot then the interpreter tries to convert
+ the value into a Float object. If this fails the string is treated as a
+ java.lang.String
+ - if the string only consists of numbers then the interpreter
+ converts the value in an Integer object.
+ - in all other cases the string is treated as a java.lang.String
+ - the conversion of the string into a Boolean, Float, or Integer can
+ be suppressed by surrounding the string with single quotes. For
+ example, the attribute value="'true'" is converted into the
+ string "true"
+
+- forcePluginActivation - a flag indicating whether the plug-in contributing the property tester
+ should be loaded if necessary. As such, this flag should be used judiciously,
+ in order to avoid unnecessary plug-in activations. Most clients should avoid
+ setting this flag to true. This flag is only honored if the evaluation context
+ used to evaluate this expression allows plug-in activation. Otherwise the flag
+ is ignored and no plug-in loading takes place.
+
+
<!ELEMENT systemTest EMPTY>
+<!ATTLIST systemTest
+property CDATA #REQUIRED
value CDATA #REQUIRED>
+
+
+Tests a system property by calling the System.getProperty method and compares the result
+ with the value specified through the value attribute.
+
+
+- property - the name of an system property to test.
+- value - the expected value of the property. The value is interpreted as a string value.
+
+
<!ELEMENT equals EMPTY>
+<!ATTLIST equals
+value CDATA #REQUIRED>
+
+
+This element is used to perform an equals check of the object in focus. The expression returns
+ EvaluationResult.TRUE if the object is equal to the value provided by the attribute value. Otherwise
+ EvaluationResult.FALSE is returned.
+
+
+- value - the expected value. The value provided as a string is converted into
+ a Java base type using the same rules as for the value attribute of the test expression.
+
+
<!ELEMENT count EMPTY>
+<!ATTLIST count
+value CDATA #REQUIRED>
+
+
+This element is used to test the number of elements in a collection.
+
+
+- value - an expression to specify the number of elements in a list. Following wildcard
+ characters can be used:
+
+ - *
- any number of elements
+ - ?
- no elements or one element
+ - +
- one or more elements
+ - !
- no elements
+ - integer value
- the list must contain the exact number of elements
+
+
+
<!ELEMENT with (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate , reference)*>
+<!ATTLIST with
+variable CDATA #REQUIRED>
+
+
+This element changes the object to be inspected for all its child element to the object
+ referenced by the given variable. If the variable can not be resolved then the expression
+ will throw a ExpressionException when evaluating it. The children of a with expression
+ are combined using the and operator.
+
+
+- variable - the name of the variable to be used for further inspection. It is up to the evaluator
+ of an extension point to provide the variable in the variable pool.
+
+
<!ELEMENT resolve (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate , reference)*>
+<!ATTLIST resolve
+variable CDATA #REQUIRED
args CDATA #IMPLIED>
+
+
+This element changes the object to be inspected for all its child element to the object
+ referenced by the given variable. If the variable can not be resolved then the expression
+ will throw a ExpressionException when evaluating it. The children of a with expression
+ are combined using the and operator.
+
+
+- variable - the name of the variable to be resolved. This variable is then used as the object in focus
+ for child element evaluation. It is up to the evaluator of an extension point to provide a
+ corresponding variable resolver (see IVariableResolver) through the evaluation context passed
+ to the root expression element when evaluating the expression.
+- args - additional arguments passed to the variable resolver. Multiple arguments are seperated
+ by commas. Each individual argument is converted into a Java base type using the same
+ rules as defined for the value attribute of the test expression.
+
+
<!ELEMENT adapt (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate , reference)*>
+<!ATTLIST adapt
+type CDATA #REQUIRED>
+
+
+This element is used to adapt the object in focus to the type specified by the attribute
+ type. The expression returns not loaded if either the adapter or the type referenced isn't
+ loaded yet. It throws a ExpressionException during evaluation if the type name doesn't exist
+ at all. The children of an adapt expression are combined using the and operator.
+
+
+- type - the type to which the object in focus is to be adapted.
+
+
<!ELEMENT iterate (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate , reference)*>
+<!ATTLIST iterate
+operator (or|and)
ifEmpty (true | false) >
+
+
+This element is used to iterate over a variable that is of type java.util.Collection. If
+ the object in focus is not of type java.util.Collection then an ExpressionException will
+ be thrown while evaluating the expression.
+
+
+- operator - either "and" or "or". The operator defines how the child
+ elements will be combined. If not specified, "and" will be used.
+- ifEmpty - the value return from the iterate expression if the collection is empty. If
+ not specified then true is returned when the operator equals "and"
+ and false is return if the operator equals "or".
+
+
<!ELEMENT reference EMPTY>
+<!ATTLIST reference
+definitionId IDREF #REQUIRED>
+
+
+This element is used to reference an expression from the org.eclipse.core.expressions.definitions extension point. The expression definition will be evaluated within the current expression element using the current evaluation context.
+
+
+- definitionId - The unique id of an expression from org.eclipse.core.expressions.definitions.
+
+
Examples:
The following is an example of a Quick Assist processor contribution:
+
+
+
+ <extension point="org.eclipse.cdt.ui.quickAssistProcessors">
+ <quickAssistProcessor
+ id="AdvancedQuickAssistProcessor"
+ name="Advanced Quick Assist Processor"
+ class="com.example.AdvancedQuickAssistProcessor">
+ </quickAssistProcessor>
+ <enablement>
+ <with variable="projectNatures">
+ <iterate operator="or">
+ <equals value="org.eclipse.cdt.core.cnature"/>
+ <equals value="org.eclipse.cdt.core.ccnature"/>
+ </iterate>
+ </with>
+ </enablement>
+ </extension>
+
+
+
+
+
+
+Copyright (c) 2001, 2008 IBM 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
+
+
+
+
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_quickFixProcessors.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_quickFixProcessors.html
new file mode 100644
index 00000000000..58f0757d4bb
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_quickFixProcessors.html
@@ -0,0 +1,288 @@
+
+
+
+Quick Fix Processor
+
+
+
+
+Quick Fix Processor
+
+Identifier:
org.eclipse.cdt.ui.quickFixProcessors
+Since:
4.1
+
+
+Description:
This extension point allows to add a Quick Fix processor to offer new Quick Fixes on C/C++ problems.
+
+Extension can specify which problem marker types it can handle. It will only get problems of these types to process.
+
+
+This extension point supports the enablement
tag. Properties to test on are:
+
+
translationUnit: type ITranslationUnit; the translation unit the quick assist is applied on
+
+projectNatures: type Collection; all project natures of the current project
+
+
+
+Configuration Markup:
+
+<!ELEMENT extension (quickFixProcessor+)>
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+
+
+- point - a fully qualified identifier of the target extension point
+- id - an optional identifier of the extension instance
+- name - an optional name of the extension instance
+
+
<!ELEMENT quickFixProcessor (enablement? , handledMarkerTypes*)>
+<!ATTLIST quickFixProcessor
+id CDATA #REQUIRED
name CDATA #IMPLIED
class CDATA #REQUIRED>
+
+
+- id - a unique identifier for the Quick Fix processor
+- name - a localized name of the Quick Fix processor
+- class - the name of the class that implements this Quick Fix processor. The
+class must be public and implement
+org.eclipse.cdt.ui.text.IQuickFixProcessor
+with a public 0-argument constructor.
+
+
<!ELEMENT handledMarkerTypes (markerType+)>
+
+
+Specifies the marker types of the problems this quick fix processor can handle.
+If no handled marker type are specified, the processor will get problems of types org.eclipse.cdt.core.problem, org.eclipse.cdt.core.buildpath_problem and org.eclipse.cdt.core.task.
+
+<!ELEMENT markerType EMPTY>
+<!ATTLIST markerType
+id CDATA #REQUIRED>
+
+
+- id - the marker type id of the marker that can be handled by this processor
+
+
<!ELEMENT enablement (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate , reference)*>
+
+
+A generic root element. The element can be used inside an extension point to define its enablement expression.
+ The children of an enablement expression are combined using the and operator.
+
+<!ELEMENT not (not | and | or | instanceof | test | systemTest | equals | count | with | resolve | adapt | iterate | reference)>
+
+
+This element represent a NOT operation on the result of evaluating it's sub-element expression.
+
+<!ELEMENT and (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate , reference)*>
+
+
+This element represent an AND operation on the result of evaluating all it's sub-elements expressions.
+
+<!ELEMENT or (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate , reference)*>
+
+
+This element represent an OR operation on the result of evaluating all it's sub-element expressions.
+
+<!ELEMENT instanceof EMPTY>
+<!ATTLIST instanceof
+value CDATA #REQUIRED>
+
+
+This element is used to perform an instanceof check of the object in focus. The expression returns
+ EvaluationResult.TRUE if the object's type is a sub type of the type specified by the attribute value.
+ Otherwise EvaluationResult.FALSE is returned.
+
+
+- value - a fully qualified name of a class or interface.
+
+
<!ELEMENT test EMPTY>
+<!ATTLIST test
+property CDATA #REQUIRED
args CDATA #IMPLIED
value CDATA #IMPLIED
forcePluginActivation (true | false) >
+
+
+This element is used to evaluate the property state of the object in focus. The set of
+ testable properties can be extended using the propery tester extension point. The test
+ expression returns EvaluationResult.NOT_LOADED if the property tester doing the actual
+ testing isn't loaded yet and the attribute forcePluginActivation is set to false.
+ If forcePluginActivation is set to true and the evaluation context used to evaluate
+ this expression support plug-in activation then evaluating the property will result in
+ activating the plug-in defining the tester.
+
+
+- property - the name of an object's property to test.
+- args - additional arguments passed to the property tester. Multiple arguments are seperated
+ by commas. Each individual argument is converted into a Java base type using the same
+ rules as defined for the value attribute of the test expression.
+- value - the expected value of the property. Can be omitted if the property
+ is a boolean property. The test expression is supposed to return
+EvaluationResult.TRUE if the property matches the value and EvaluationResult.FALSE
+otherwise. The value attribute is converted into a Java base type using the following
+rules:
+
+ - the string "true" is converted into Boolean.TRUE
+ - the string "false" is converted into Boolean.FALSE
+ - if the string contains a dot then the interpreter tries to convert
+ the value into a Float object. If this fails the string is treated as a
+ java.lang.String
+ - if the string only consists of numbers then the interpreter
+ converts the value in an Integer object.
+ - in all other cases the string is treated as a java.lang.String
+ - the conversion of the string into a Boolean, Float, or Integer can
+ be suppressed by surrounding the string with single quotes. For
+ example, the attribute value="'true'" is converted into the
+ string "true"
+
+- forcePluginActivation - a flag indicating whether the plug-in contributing the property tester
+ should be loaded if necessary. As such, this flag should be used judiciously,
+ in order to avoid unnecessary plug-in activations. Most clients should avoid
+ setting this flag to true. This flag is only honored if the evaluation context
+ used to evaluate this expression allows plug-in activation. Otherwise the flag
+ is ignored and no plug-in loading takes place.
+
+
<!ELEMENT systemTest EMPTY>
+<!ATTLIST systemTest
+property CDATA #REQUIRED
value CDATA #REQUIRED>
+
+
+Tests a system property by calling the System.getProperty method and compares the result
+ with the value specified through the value attribute.
+
+
+- property - the name of an system property to test.
+- value - the expected value of the property. The value is interpreted as a string value.
+
+
<!ELEMENT equals EMPTY>
+<!ATTLIST equals
+value CDATA #REQUIRED>
+
+
+This element is used to perform an equals check of the object in focus. The expression returns
+ EvaluationResult.TRUE if the object is equal to the value provided by the attribute value. Otherwise
+ EvaluationResult.FALSE is returned.
+
+
+- value - the expected value. The value provided as a string is converted into
+ a Java base type using the same rules as for the value attribute of the test expression.
+
+
<!ELEMENT count EMPTY>
+<!ATTLIST count
+value CDATA #REQUIRED>
+
+
+This element is used to test the number of elements in a collection.
+
+
+- value - an expression to specify the number of elements in a list. Following wildcard
+ characters can be used:
+
+ - *
- any number of elements
+ - ?
- no elements or one element
+ - +
- one or more elements
+ - !
- no elements
+ - integer value
- the list must contain the exact number of elements
+
+
+
<!ELEMENT with (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate , reference)*>
+<!ATTLIST with
+variable CDATA #REQUIRED>
+
+
+This element changes the object to be inspected for all its child element to the object
+ referenced by the given variable. If the variable can not be resolved then the expression
+ will throw a ExpressionException when evaluating it. The children of a with expression
+ are combined using the and operator.
+
+
+- variable - the name of the variable to be used for further inspection. It is up to the evaluator
+ of an extension point to provide the variable in the variable pool.
+
+
<!ELEMENT resolve (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate , reference)*>
+<!ATTLIST resolve
+variable CDATA #REQUIRED
args CDATA #IMPLIED>
+
+
+This element changes the object to be inspected for all its child element to the object
+ referenced by the given variable. If the variable can not be resolved then the expression
+ will throw a ExpressionException when evaluating it. The children of a with expression
+ are combined using the and operator.
+
+
+- variable - the name of the variable to be resolved. This variable is then used as the object in focus
+ for child element evaluation. It is up to the evaluator of an extension point to provide a
+ corresponding variable resolver (see IVariableResolver) through the evaluation context passed
+ to the root expression element when evaluating the expression.
+- args - additional arguments passed to the variable resolver. Multiple arguments are seperated
+ by commas. Each individual argument is converted into a Java base type using the same
+ rules as defined for the value attribute of the test expression.
+
+
<!ELEMENT adapt (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate , reference)*>
+<!ATTLIST adapt
+type CDATA #REQUIRED>
+
+
+This element is used to adapt the object in focus to the type specified by the attribute
+ type. The expression returns not loaded if either the adapter or the type referenced isn't
+ loaded yet. It throws a ExpressionException during evaluation if the type name doesn't exist
+ at all. The children of an adapt expression are combined using the and operator.
+
+
+- type - the type to which the object in focus is to be adapted.
+
+
<!ELEMENT iterate (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate , reference)*>
+<!ATTLIST iterate
+operator (or|and)
ifEmpty (true | false) >
+
+
+This element is used to iterate over a variable that is of type java.util.Collection. If
+ the object in focus is not of type java.util.Collection then an ExpressionException will
+ be thrown while evaluating the expression.
+
+
+- operator - either "and" or "or". The operator defines how the child
+ elements will be combined. If not specified, "and" will be used.
+- ifEmpty - the value return from the iterate expression if the collection is empty. If
+ not specified then true is returned when the operator equals "and"
+ and false is return if the operator equals "or".
+
+
<!ELEMENT reference EMPTY>
+<!ATTLIST reference
+definitionId IDREF #REQUIRED>
+
+
+This element is used to reference an expression from the org.eclipse.core.expressions.definitions extension point. The expression definition will be evaluated within the current expression element using the current evaluation context.
+
+
+- definitionId - The unique id of an expression from org.eclipse.core.expressions.definitions.
+
+
Examples:
The following is an example of a Quick Fix processor contribution:
+
+
+
+ <extension point="org.eclipse.cdt.ui.quickFixProcessors">
+ <quickFixProcessor
+ id="AdvancedQuickFixProcessor"
+ name="Advanced Quick Fix Processor"
+ class="com.example.AdvancedQuickFixProcessor">
+ <handledMarkerTypes>
+ <markerType id="org.eclipse.myplugin.audits"/>
+ </handledMarkerTypes>
+ <enablement>
+ <with variable="projectNatures">
+ <iterate operator="or">
+ <equals value="org.eclipse.cdt.core.cnature"/>
+ </iterate>
+ </with>
+ </enablement>
+ </quickFixProcessor>
+ </extension>
+
+
+
+
+
+
+Copyright (c) 2001, 2007 IBM 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
+
+
+
+
diff --git a/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_textHovers.html b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_textHovers.html
new file mode 100644
index 00000000000..bb5f4d75a03
--- /dev/null
+++ b/doc/org.eclipse.cdt.doc.isv/reference/extension-points/org_eclipse_cdt_ui_textHovers.html
@@ -0,0 +1,58 @@
+
+
+
+C/C++ Editor Text Hovers
+
+
+
+
+C/C++ Editor Text Hovers
+
+Identifier:
org.eclipse.cdt.ui.textHovers
+Description:
This extension point is used to plug-in text hovers in a C/C++ editor.
+Configuration Markup:
+
+
+<!ATTLIST extension
+point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
+
+
+- point - a fully qualified identifier of the target extension point
+- id - an optional identifier of the extension instance
+- name - an optional name of the extension instance
+
+
<!ELEMENT hover EMPTY>
+<!ATTLIST hover
+id CDATA #REQUIRED
class CDATA #REQUIRED
label CDATA #IMPLIED
description CDATA #IMPLIED
activate (true | false) "false">
+
+
+- id - the id, typically the same as the fully qualified class name.
+- class - the fully qualified class name implementing the interface
org.eclipse.cdt.ui.text.c.hover.ICEditorTextHover
.
+- label - the translatable label for this hover.
+- description - the translatable description for this hover.
+- activate - if the attribute is set to "true" it will force this plug-in to be loaded on hover activation.
+
+
Examples:
The following is an example of a hover definition:
+
+
+
+ <extension point="org.eclipse.cdt.ui.textHovers">
+ <hover
+ label="Debug Text Hover"
+ perspective="org.eclipse.debug.ui.DebugPerspective"
+ class="org.eclipse.cdt.debug.internal.ui.editors.DebugTextHover"
+ id="org.eclipse.cdt.debug.internal.ui.editors.DebugTextHover">
+ </hover>
+ </extension>
+
+
+
+
+
+
+Copyright (c) 2001, 2006 IBM 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
+
+
+
+