mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-08 18:26:01 +02:00
Implementation of source locator.
This commit is contained in:
parent
5d14c78a5c
commit
74a38d9081
2 changed files with 112 additions and 1 deletions
|
@ -5,7 +5,9 @@
|
||||||
*/
|
*/
|
||||||
package org.eclipse.cdt.debug.core;
|
package org.eclipse.cdt.debug.core;
|
||||||
|
|
||||||
|
import org.eclipse.core.resources.IFile;
|
||||||
import org.eclipse.core.resources.IProject;
|
import org.eclipse.core.resources.IProject;
|
||||||
|
import org.eclipse.core.resources.IResource;
|
||||||
import org.eclipse.debug.core.DebugException;
|
import org.eclipse.debug.core.DebugException;
|
||||||
import org.eclipse.debug.core.model.ISourceLocator;
|
import org.eclipse.debug.core.model.ISourceLocator;
|
||||||
|
|
||||||
|
@ -46,4 +48,39 @@ public interface ICSourceLocator extends ISourceLocator
|
||||||
* or -1 if line number information is unavailable
|
* or -1 if line number information is unavailable
|
||||||
*/
|
*/
|
||||||
int getLineNumber( IStackFrameInfo frameInfo );
|
int getLineNumber( IStackFrameInfo frameInfo );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a source element that corresponds to the given file name, or
|
||||||
|
* <code>null</code> if a source element could not be located.
|
||||||
|
*
|
||||||
|
* @param fileName the file name for which to locate source
|
||||||
|
* @return an object representing a source element.
|
||||||
|
*/
|
||||||
|
Object getSourceElement( String fileName );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a source element that corresponds to the given function, or
|
||||||
|
* <code>null</code> if a source element could not be located.
|
||||||
|
*
|
||||||
|
* @param function the function name for which to locate source
|
||||||
|
* @return an object representing a source element.
|
||||||
|
*/
|
||||||
|
Object getSourceElementForFunection( String function );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a source element that corresponds to the given address, or
|
||||||
|
* <code>null</code> if a source element could not be located.
|
||||||
|
*
|
||||||
|
* @param address the address for which to locate source
|
||||||
|
* @return an object representing a source element.
|
||||||
|
*/
|
||||||
|
Object getSourceElementForAddress( long address );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether the given resource is contained in this source locator.
|
||||||
|
*
|
||||||
|
* @param resource the resource
|
||||||
|
* @return whether the given resource is contained in this source locator
|
||||||
|
*/
|
||||||
|
boolean contains( IResource resource );
|
||||||
}
|
}
|
|
@ -215,4 +215,78 @@ public class CSourceLocator implements ICSourceLocator
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.debug.core.ICSourceLocator#getSourceElement(String)
|
||||||
|
*/
|
||||||
|
public Object getSourceElement( String fileName )
|
||||||
|
{
|
||||||
|
return findFile( fProject, fileName );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.debug.core.ICSourceLocator#getSourceElementForAddress(long)
|
||||||
|
*/
|
||||||
|
public Object getSourceElementForAddress( long address )
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.debug.core.ICSourceLocator#getSourceElementForFunection(String)
|
||||||
|
*/
|
||||||
|
public Object getSourceElementForFunection( String function )
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.cdt.debug.core.ICSourceLocator#contains(IResource)
|
||||||
|
*/
|
||||||
|
public boolean contains( IResource resource )
|
||||||
|
{
|
||||||
|
if ( resource instanceof IProject )
|
||||||
|
{
|
||||||
|
if ( fProject.equals( resource ) )
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
IProject[] projects = getReferencedProjects();
|
||||||
|
for ( int i = 0; i < projects.length; ++i )
|
||||||
|
{
|
||||||
|
if ( projects[i].equals( resource ) )
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if ( fProject.exists( resource.getFullPath() ) )
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
IProject[] projects = getReferencedProjects();
|
||||||
|
for ( int i = 0; i < projects.length; ++i )
|
||||||
|
{
|
||||||
|
if ( projects[i].exists( resource.getFullPath() ) )
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected IProject[] getReferencedProjects()
|
||||||
|
{
|
||||||
|
IProject[] projects = new IProject[0];
|
||||||
|
try
|
||||||
|
{
|
||||||
|
projects = fProject.getReferencedProjects();
|
||||||
|
}
|
||||||
|
catch( CoreException e )
|
||||||
|
{
|
||||||
|
CDebugCorePlugin.log( e );
|
||||||
|
}
|
||||||
|
return projects;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue