mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Added support of the 'Add Global Variables' action of the Expressions view.
This commit is contained in:
parent
fd2f3b9004
commit
21a42a700d
4 changed files with 89 additions and 0 deletions
|
@ -1,3 +1,9 @@
|
|||
2002-11-05 Mikhail Khodjaiants
|
||||
Added support of the 'Add Global Variables' action of the Expressions view.
|
||||
* IExecFileInfo.java
|
||||
* IGlobalVariable.java
|
||||
* CDebugTarget.java
|
||||
|
||||
2002-11-03 Mikhail Khodjaiants
|
||||
Added support of the formatting actions of the Memory view.
|
||||
* IFormattedMemoryBlock.java
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* All Rights Reserved.
|
||||
*
|
||||
*/
|
||||
|
||||
package org.eclipse.cdt.debug.core;
|
||||
|
||||
/**
|
||||
|
@ -13,4 +14,6 @@ package org.eclipse.cdt.debug.core;
|
|||
public interface IExecFileInfo
|
||||
{
|
||||
public boolean isLittleEndian();
|
||||
|
||||
public IGlobalVariable[] getGlobals();
|
||||
}
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
*(c) Copyright QNX Software Systems Ltd. 2002.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
*/
|
||||
package org.eclipse.cdt.debug.core;
|
||||
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
|
||||
/**
|
||||
* Enter type comment.
|
||||
*
|
||||
* @since: Nov 4, 2002
|
||||
*/
|
||||
public interface IGlobalVariable
|
||||
{
|
||||
String getName();
|
||||
IPath getPath();
|
||||
}
|
|
@ -13,6 +13,7 @@ import java.util.List;
|
|||
import org.eclipse.cdt.core.CCorePlugin;
|
||||
import org.eclipse.cdt.core.model.CoreModel;
|
||||
import org.eclipse.cdt.core.model.IBinary;
|
||||
import org.eclipse.cdt.core.model.ICElement;
|
||||
import org.eclipse.cdt.core.model.ICFile;
|
||||
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
|
||||
import org.eclipse.cdt.debug.core.CDebugModel;
|
||||
|
@ -26,6 +27,7 @@ import org.eclipse.cdt.debug.core.IDebuggerProcessSupport;
|
|||
import org.eclipse.cdt.debug.core.IExecFileInfo;
|
||||
import org.eclipse.cdt.debug.core.IFormattedMemoryBlock;
|
||||
import org.eclipse.cdt.debug.core.IFormattedMemoryRetrieval;
|
||||
import org.eclipse.cdt.debug.core.IGlobalVariable;
|
||||
import org.eclipse.cdt.debug.core.IRestart;
|
||||
import org.eclipse.cdt.debug.core.IRunToLine;
|
||||
import org.eclipse.cdt.debug.core.IState;
|
||||
|
@ -2010,4 +2012,63 @@ public class CDebugTarget extends CDebugElement
|
|||
{
|
||||
fExecFile = file;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.debug.core.IExecFileInfo#getGlobals()
|
||||
*/
|
||||
public IGlobalVariable[] getGlobals()
|
||||
{
|
||||
ArrayList list = new ArrayList();
|
||||
if ( getExecFile() != null && CoreModel.isBinary( getExecFile() ) )
|
||||
{
|
||||
ICFile cFile = CCorePlugin.getDefault().getCoreModel().create( getExecFile() );
|
||||
if ( cFile instanceof IBinary )
|
||||
{
|
||||
list.addAll( getCFileGlobals( cFile ) );
|
||||
}
|
||||
}
|
||||
return (IGlobalVariable[])list.toArray( new IGlobalVariable[list.size()] );
|
||||
}
|
||||
|
||||
private List getCFileGlobals( ICFile file )
|
||||
{
|
||||
ArrayList list = new ArrayList();
|
||||
ICElement[] elements = file.getChildren();
|
||||
for ( int i = 0; i < elements.length; ++i )
|
||||
{
|
||||
if ( elements[i] instanceof org.eclipse.cdt.core.model.IVariable )
|
||||
{
|
||||
list.add( createGlobalVariable( (org.eclipse.cdt.core.model.IVariable)elements[i] ) );
|
||||
}
|
||||
else if ( elements[i] instanceof org.eclipse.cdt.core.model.ICFile )
|
||||
{
|
||||
list.addAll( getCFileGlobals( (org.eclipse.cdt.core.model.ICFile)elements[i] ) );
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
private IGlobalVariable createGlobalVariable( final org.eclipse.cdt.core.model.IVariable var )
|
||||
{
|
||||
return new IGlobalVariable()
|
||||
{
|
||||
public String getName()
|
||||
{
|
||||
return var.getElementName();
|
||||
}
|
||||
|
||||
public IPath getPath()
|
||||
{
|
||||
IPath path = null;
|
||||
if ( var.getParent() != null && var.getParent() instanceof ICFile )
|
||||
{
|
||||
if ( !(var.getParent() instanceof IBinary) )
|
||||
{
|
||||
path = ((ICFile)var.getParent()).getFile().getLocation();
|
||||
}
|
||||
}
|
||||
return path;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue