1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-08 02:06:01 +02:00

Enhanced loops.

This commit is contained in:
Sergey Prigogin 2010-12-05 22:45:58 +00:00
parent 3f93fe42c4
commit a07af9a6d4

View file

@ -60,6 +60,7 @@ public class CSourceLookupDirector extends AbstractSourceLookupDirector {
public void initializeParticipants() { public void initializeParticipants() {
addParticipants(new ISourceLookupParticipant[]{ new CSourceLookupParticipant() }); addParticipants(new ISourceLookupParticipant[]{ new CSourceLookupParticipant() });
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#supportsSourceContainerType(org.eclipse.debug.core.sourcelookup.ISourceContainerType) * @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#supportsSourceContainerType(org.eclipse.debug.core.sourcelookup.ISourceContainerType)
*/ */
@ -69,9 +70,8 @@ public class CSourceLookupDirector extends AbstractSourceLookupDirector {
} }
public boolean contains(String source) { public boolean contains(String source) {
ISourceContainer[] containers = getSourceContainers(); for (ISourceContainer cont : getSourceContainers()) {
for (int i = 0; i < containers.length; ++i) { if (contains(cont, source))
if (contains(containers[i], source))
return true; return true;
} }
return false; return false;
@ -80,9 +80,8 @@ public class CSourceLookupDirector extends AbstractSourceLookupDirector {
public boolean contains(ICBreakpoint breakpoint) { public boolean contains(ICBreakpoint breakpoint) {
try { try {
String handle = breakpoint.getSourceHandle(); String handle = breakpoint.getSourceHandle();
ISourceContainer[] containers = getSourceContainers(); for (ISourceContainer cont : getSourceContainers()) {
for (int i = 0; i < containers.length; ++i) { if (contains(cont, handle))
if (contains(containers[i], handle))
return true; return true;
} }
} catch (CoreException e) { } catch (CoreException e) {
@ -91,9 +90,8 @@ public class CSourceLookupDirector extends AbstractSourceLookupDirector {
} }
public boolean contains(IProject project) { public boolean contains(IProject project) {
ISourceContainer[] containers = getSourceContainers(); for (ISourceContainer cont : getSourceContainers()) {
for (int i = 0; i < containers.length; ++i) { if (contains(cont, project))
if (contains(containers[i], project))
return true; return true;
} }
return false; return false;
@ -104,10 +102,8 @@ public class CSourceLookupDirector extends AbstractSourceLookupDirector {
return true; return true;
} }
try { try {
ISourceContainer[] containers; for (ISourceContainer cont : container.getSourceContainers()) {
containers = container.getSourceContainers(); if (contains(cont, project))
for (int i = 0; i < containers.length; ++i) {
if (contains(containers[i], project))
return true; return true;
} }
} catch (CoreException e) { } catch (CoreException e) {
@ -120,47 +116,45 @@ public class CSourceLookupDirector extends AbstractSourceLookupDirector {
if (!path.isValidPath(sourceName)) if (!path.isValidPath(sourceName))
return false; return false;
if (container instanceof ProjectSourceContainer) { if (container instanceof ProjectSourceContainer) {
IProject project = ((ProjectSourceContainer)container).getProject(); IProject project = ((ProjectSourceContainer) container).getProject();
IPath projPath = project.getLocation(); IPath projPath = project.getLocation();
if (projPath != null && projPath.isPrefixOf(path)) { if (projPath != null && projPath.isPrefixOf(path)) {
IFile file = ((ProjectSourceContainer)container).getProject().getFile(path.removeFirstSegments(projPath.segmentCount())); IFile file = ((ProjectSourceContainer) container).getProject().getFile(path.removeFirstSegments(projPath.segmentCount()));
return (file != null && file.exists()); return (file != null && file.exists());
} }
} }
if (container instanceof FolderSourceContainer) { if (container instanceof FolderSourceContainer) {
IContainer folder = ((FolderSourceContainer)container).getContainer(); IContainer folder = ((FolderSourceContainer) container).getContainer();
IPath folderPath = folder.getLocation(); IPath folderPath = folder.getLocation();
if (folderPath != null && folderPath.isPrefixOf(path)) { if (folderPath != null && folderPath.isPrefixOf(path)) {
IFile file = ((FolderSourceContainer)container).getContainer().getFile(path.removeFirstSegments(folderPath.segmentCount())); IFile file = ((FolderSourceContainer) container).getContainer().getFile(path.removeFirstSegments(folderPath.segmentCount()));
return (file != null && file.exists()); return (file != null && file.exists());
} }
} }
if (container instanceof DirectorySourceContainer) { if (container instanceof DirectorySourceContainer) {
File dir = ((DirectorySourceContainer)container).getDirectory(); File dir = ((DirectorySourceContainer) container).getDirectory();
boolean searchSubfolders = ((DirectorySourceContainer)container).isComposite(); boolean searchSubfolders = ((DirectorySourceContainer) container).isComposite();
IPath dirPath = new Path(dir.getAbsolutePath()); IPath dirPath = new Path(dir.getAbsolutePath());
if (searchSubfolders || dirPath.segmentCount() + 1 == path.segmentCount()) if (searchSubfolders || dirPath.segmentCount() + 1 == path.segmentCount())
return dirPath.isPrefixOf(path); return dirPath.isPrefixOf(path);
} }
if (container instanceof MappingSourceContainer) { if (container instanceof MappingSourceContainer) {
return (((MappingSourceContainer)container).getCompilationPath(sourceName) != null); return (((MappingSourceContainer) container).getCompilationPath(sourceName) != null);
} }
if (container instanceof AbsolutePathSourceContainer) { if (container instanceof AbsolutePathSourceContainer) {
return (((AbsolutePathSourceContainer)container).isValidAbsoluteFilePath(sourceName)); return (((AbsolutePathSourceContainer) container).isValidAbsoluteFilePath(sourceName));
} }
if (container instanceof ProgramRelativePathSourceContainer) { if (container instanceof ProgramRelativePathSourceContainer) {
try { try {
Object[] elements = ((ProgramRelativePathSourceContainer)container).findSourceElements(sourceName); Object[] elements = ((ProgramRelativePathSourceContainer) container).findSourceElements(sourceName);
return elements.length > 0; return elements.length > 0;
} catch (CoreException e) { } catch (CoreException e) {
return false; return false;
} }
} }
try { try {
ISourceContainer[] containers; for (ISourceContainer cont : container.getSourceContainers()) {
containers = container.getSourceContainers(); if (contains(cont, sourceName))
for (int i = 0; i < containers.length; ++i) {
if (contains(containers[i], sourceName))
return true; return true;
} }
} catch (CoreException e) { } catch (CoreException e) {
@ -169,16 +163,13 @@ public class CSourceLookupDirector extends AbstractSourceLookupDirector {
} }
public IPath getCompilationPath(String sourceName) { public IPath getCompilationPath(String sourceName) {
IPath path = null; for (ISourceContainer cont : getSourceContainers()) {
ISourceContainer[] containers = getSourceContainers(); IPath path = getCompilationPath(cont, sourceName);
for (int i = 0; i < containers.length; ++i) { if (path != null) {
IPath cp = getCompilationPath(containers[i], sourceName); return path;
if (cp != null) {
path = cp;
break;
} }
} }
return path; return null;
} }
private IPath getCompilationPath(ISourceContainer container, String sourceName) { private IPath getCompilationPath(ISourceContainer container, String sourceName) {
@ -187,10 +178,8 @@ public class CSourceLookupDirector extends AbstractSourceLookupDirector {
} }
try { try {
ISourceContainer[] containers; for (ISourceContainer cont : container.getSourceContainers()) {
containers = container.getSourceContainers(); IPath path = getCompilationPath(cont, sourceName);
for (int i = 0; i < containers.length; ++i) {
IPath path = getCompilationPath(containers[i], sourceName);
if (path != null) if (path != null)
return path; return path;
} }