1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

The IndexView now skips linkages in the hierarchy if there is only one in a project (i.e. not a multi-language project). Also fixed a bug with paths in the GCCLanguage and warnings in GPPLanguage.

This commit is contained in:
Doug Schaefer 2006-04-07 19:18:26 +00:00
parent 4f0893f7f7
commit e9eb7ef7e6
3 changed files with 25 additions and 15 deletions

View file

@ -92,20 +92,22 @@ public class GCCLanguage extends PlatformObject implements ILanguage {
fileCreator = SavedCodeReaderFactory.getInstance(); fileCreator = SavedCodeReaderFactory.getInstance();
CodeReader reader; CodeReader reader;
IFile rfile = (IFile)file.getResource();
if (file instanceof IWorkingCopy) { if (file instanceof IWorkingCopy) {
// get the working copy contents // get the working copy contents
IFile rfile = (IFile)file.getResource();
reader = new CodeReader(rfile.getLocation().toOSString(), file.getContents()); reader = new CodeReader(rfile.getLocation().toOSString(), file.getContents());
} else { } else {
String path = file.getPath().toOSString(); String path
= rfile != null
? rfile.getLocation().toOSString()
: file.getPath().toOSString();
reader = fileCreator.createCodeReaderForTranslationUnit(path); reader = fileCreator.createCodeReaderForTranslationUnit(path);
if (reader == null) if (reader == null)
return null; return null;
} }
IScannerExtensionConfiguration scannerExtensionConfiguration
IScannerExtensionConfiguration scannerExtensionConfiguration = = C_GNU_SCANNER_EXTENSION;
scannerExtensionConfiguration = C_GNU_SCANNER_EXTENSION;
IScanner scanner = new DOMScanner(reader, scanInfo, ParserMode.COMPLETE_PARSE, IScanner scanner = new DOMScanner(reader, scanInfo, ParserMode.COMPLETE_PARSE,
ParserLanguage.C, ParserFactory.createDefaultLogService(), scannerExtensionConfiguration, fileCreator ); ParserLanguage.C, ParserFactory.createDefaultLogService(), scannerExtensionConfiguration, fileCreator );

View file

@ -90,8 +90,8 @@ public class GPPLanguage extends PlatformObject implements ILanguage {
else else
fileCreator = SavedCodeReaderFactory.getInstance(); fileCreator = SavedCodeReaderFactory.getInstance();
IFile rfile = (IFile)file.getResource();
CodeReader reader; CodeReader reader;
IFile rfile = (IFile)file.getResource();
if (file instanceof IWorkingCopy) { if (file instanceof IWorkingCopy) {
// get the working copy contents // get the working copy contents
reader = new CodeReader(rfile.getLocation().toOSString(), file.getContents()); reader = new CodeReader(rfile.getLocation().toOSString(), file.getContents());
@ -105,8 +105,8 @@ public class GPPLanguage extends PlatformObject implements ILanguage {
return null; return null;
} }
IScannerExtensionConfiguration scannerExtensionConfiguration = IScannerExtensionConfiguration scannerExtensionConfiguration
scannerExtensionConfiguration = CPP_GNU_SCANNER_EXTENSION; = CPP_GNU_SCANNER_EXTENSION;
IScanner scanner = new DOMScanner(reader, scanInfo, ParserMode.COMPLETE_PARSE, IScanner scanner = new DOMScanner(reader, scanInfo, ParserMode.COMPLETE_PARSE,
ParserLanguage.CPP, ParserFactory.createDefaultLogService(), scannerExtensionConfiguration, fileCreator ); ParserLanguage.CPP, ParserFactory.createDefaultLogService(), scannerExtensionConfiguration, fileCreator );

View file

@ -12,7 +12,6 @@
package org.eclipse.cdt.internal.ui.indexview; package org.eclipse.cdt.internal.ui.indexview;
import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.IPDOM;
import org.eclipse.cdt.core.dom.IPDOMNode; import org.eclipse.cdt.core.dom.IPDOMNode;
import org.eclipse.cdt.core.dom.IPDOMVisitor; import org.eclipse.cdt.core.dom.IPDOMVisitor;
import org.eclipse.cdt.core.dom.ast.IASTFileLocation; import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
@ -29,10 +28,8 @@ import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMMemberOwner;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMName; import org.eclipse.cdt.internal.core.pdom.dom.PDOMName;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode;
import org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPNamespace;
import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider; import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider;
import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.resources.ResourcesPlugin;
@ -48,7 +45,6 @@ import org.eclipse.jface.action.Separator;
import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.SelectionChangedEvent;
@ -104,7 +100,7 @@ public class IndexView extends ViewPart implements PDOM.IListener {
* editor (if option enabled) * editor (if option enabled)
*/ */
void handleSelectionChanged(SelectionChangedEvent event) { void handleSelectionChanged(SelectionChangedEvent event) {
final IStructuredSelection selection = (IStructuredSelection) event.getSelection(); // final IStructuredSelection selection = (IStructuredSelection) event.getSelection();
// updateStatusLine(selection); // updateStatusLine(selection);
// updateActionBars(selection); // updateActionBars(selection);
if (isLinking) { if (isLinking) {
@ -187,8 +183,13 @@ public class IndexView extends ViewPart implements PDOM.IListener {
if (parentElement instanceof ICProject) { if (parentElement instanceof ICProject) {
PDOM pdom = (PDOM)CCorePlugin.getPDOMManager().getPDOM((ICProject)parentElement); PDOM pdom = (PDOM)CCorePlugin.getPDOMManager().getPDOM((ICProject)parentElement);
int n = 0; int n = 0;
for (PDOMLinkage linkage = pdom.getFirstLinkage(); linkage != null; linkage = linkage.getNextLinkage()) PDOMLinkage firstLinkage = pdom.getFirstLinkage();
for (PDOMLinkage linkage = firstLinkage; linkage != null; linkage = linkage.getNextLinkage())
++n; ++n;
if (n == 1) {
// Skip linkages in hierarchy if there is only one
return getChildren(firstLinkage);
}
PDOMLinkage[] linkages = new PDOMLinkage[n]; PDOMLinkage[] linkages = new PDOMLinkage[n];
int i = 0; int i = 0;
for (PDOMLinkage linkage = pdom.getFirstLinkage(); linkage != null; linkage = linkage.getNextLinkage()) for (PDOMLinkage linkage = pdom.getFirstLinkage(); linkage != null; linkage = linkage.getNextLinkage())
@ -218,7 +219,14 @@ public class IndexView extends ViewPart implements PDOM.IListener {
try { try {
if (element instanceof ICProject) { if (element instanceof ICProject) {
PDOM pdom = (PDOM)CCorePlugin.getPDOMManager().getPDOM((ICProject)element); PDOM pdom = (PDOM)CCorePlugin.getPDOMManager().getPDOM((ICProject)element);
return pdom.getFirstLinkage() != null; PDOMLinkage firstLinkage = pdom.getFirstLinkage();
if (firstLinkage == null)
return false;
else if (firstLinkage.getNextLinkage() == null)
// Skipping linkages if only one
return hasChildren(firstLinkage);
else
return true;
} else if (element instanceof IPDOMNode) { } else if (element instanceof IPDOMNode) {
HasChildren hasChildren = new HasChildren(); HasChildren hasChildren = new HasChildren();
try { try {