mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-25 18:05:33 +02:00
Bug 299167, turn the Variable View's Address column into a Location column.
This commit is contained in:
parent
485b4d73de
commit
fceb61087c
5 changed files with 69 additions and 17 deletions
|
@ -22,10 +22,10 @@ public class MessagesForVariablesVM extends NLS {
|
|||
public static String VariableColumnPresentation_name;
|
||||
public static String VariableColumnPresentation_type;
|
||||
public static String VariableColumnPresentation_value;
|
||||
public static String VariableColumnPresentation_address;
|
||||
public static String VariableColumnPresentation_location;
|
||||
|
||||
public static String VariableVMNode_Address_column__Error__text_format;
|
||||
public static String VariableVMNode_Address_column__text_format;
|
||||
public static String VariableVMNode_Location_column__Error__text_format;
|
||||
public static String VariableVMNode_Location_column__text_format;
|
||||
public static String VariableVMNode_Description_column__text_format;
|
||||
public static String VariableVMNode_Expression_column__text_format;
|
||||
public static String VariableVMNode_Name_column__text_format;
|
||||
|
|
|
@ -42,7 +42,7 @@ public class VariableColumnPresentation implements IColumnPresentation {
|
|||
} else if (IDebugVMConstants.COLUMN_ID__VALUE.equals(id)) {
|
||||
return MessagesForVariablesVM.VariableColumnPresentation_value;
|
||||
} else if (IDebugVMConstants.COLUMN_ID__ADDRESS.equals(id)) {
|
||||
return MessagesForVariablesVM.VariableColumnPresentation_address;
|
||||
return MessagesForVariablesVM.VariableColumnPresentation_location;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -17,7 +17,6 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import java.util.concurrent.RejectedExecutionException;
|
||||
|
||||
import org.eclipse.cdt.core.IAddress;
|
||||
import org.eclipse.cdt.debug.internal.ui.CDebugImages;
|
||||
import org.eclipse.cdt.dsf.concurrent.ConfinedToDsfExecutor;
|
||||
import org.eclipse.cdt.dsf.concurrent.CountingRequestMonitor;
|
||||
|
@ -36,6 +35,7 @@ import org.eclipse.cdt.dsf.debug.service.IExpressions.IExpressionChangedDMEvent;
|
|||
import org.eclipse.cdt.dsf.debug.service.IExpressions.IExpressionDMAddress;
|
||||
import org.eclipse.cdt.dsf.debug.service.IExpressions.IExpressionDMContext;
|
||||
import org.eclipse.cdt.dsf.debug.service.IExpressions.IExpressionDMData;
|
||||
import org.eclipse.cdt.dsf.debug.service.IExpressions.IExpressionDMLocation;
|
||||
import org.eclipse.cdt.dsf.debug.service.IMemory.IMemoryChangedEvent;
|
||||
import org.eclipse.cdt.dsf.debug.service.IRunControl.ISuspendedDMEvent;
|
||||
import org.eclipse.cdt.dsf.debug.service.IStack.IFrameDMContext;
|
||||
|
@ -132,7 +132,7 @@ public class VariableVMNode extends AbstractExpressionVMNode
|
|||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
private IElementLabelProvider fLabelProvider;
|
||||
private final IElementLabelProvider fLabelProvider;
|
||||
|
||||
public class VariableExpressionVMC extends DMVMContext implements IFormattedValueVMContext {
|
||||
|
||||
|
@ -375,9 +375,9 @@ public class VariableVMNode extends AbstractExpressionVMNode
|
|||
IDebugVMConstants.COLUMN_ID__ADDRESS,
|
||||
new LabelColumnInfo(new LabelAttribute[] {
|
||||
new LabelText(
|
||||
MessagesForVariablesVM.VariableVMNode_Address_column__text_format,
|
||||
MessagesForVariablesVM.VariableVMNode_Location_column__text_format,
|
||||
new String[] { PROP_VARIABLE_ADDRESS }),
|
||||
new LabelText(MessagesForVariablesVM.VariableVMNode_Address_column__Error__text_format, new String[] {}),
|
||||
new LabelText(MessagesForVariablesVM.VariableVMNode_Location_column__Error__text_format, new String[] {}),
|
||||
new LabelBackground(
|
||||
DebugUITools.getPreferenceColor(IDebugUIConstants.PREF_CHANGED_VALUE_BACKGROUND).getRGB())
|
||||
{
|
||||
|
@ -706,9 +706,10 @@ public class VariableVMNode extends AbstractExpressionVMNode
|
|||
@ConfinedToDsfExecutor("getSession().getExecutor()")
|
||||
protected void fillAddressDataProperties(IPropertiesUpdate update, IExpressionDMAddress address)
|
||||
{
|
||||
IExpressionDMAddress expression = address;
|
||||
IAddress expAddress = expression.getAddress();
|
||||
update.setProperty(PROP_VARIABLE_ADDRESS, "0x" + expAddress.toString(16)); //$NON-NLS-1$
|
||||
if (address instanceof IExpressionDMLocation)
|
||||
update.setProperty(PROP_VARIABLE_ADDRESS, ((IExpressionDMLocation)address).getLocation());
|
||||
else
|
||||
update.setProperty(PROP_VARIABLE_ADDRESS, "0x" + address.getAddress().toString(16)); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
public CellEditor getCellEditor(IPresentationContext context, String columnId, Object element, Composite parent) {
|
||||
|
|
|
@ -7,16 +7,17 @@
|
|||
#
|
||||
# Contributors:
|
||||
# Wind River Systems - initial API and implementation
|
||||
# Wind River Systems - added Address
|
||||
# Wind River Systems - added Location
|
||||
# Wind River Systems - changed Location to Location
|
||||
###############################################################################
|
||||
|
||||
VariableColumnPresentation_name=Name
|
||||
VariableColumnPresentation_type=Type
|
||||
VariableColumnPresentation_value=Value
|
||||
VariableColumnPresentation_address=Address
|
||||
VariableColumnPresentation_location=Location
|
||||
|
||||
VariableVMNode_Address_column__Error__text_format=
|
||||
VariableVMNode_Address_column__text_format={0}
|
||||
VariableVMNode_Location_column__Error__text_format=
|
||||
VariableVMNode_Location_column__text_format={0}
|
||||
VariableVMNode_Description_column__text_format=
|
||||
VariableVMNode_Expression_column__text_format={0}
|
||||
VariableVMNode_Name_column__text_format={0}
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
*******************************************************************************/
|
||||
package org.eclipse.cdt.dsf.debug.service;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.cdt.core.IAddress;
|
||||
|
@ -41,14 +42,61 @@ public interface IExpressions extends IFormattedValues {
|
|||
*/
|
||||
String getExpression();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* The address and size of an expression.
|
||||
*/
|
||||
public interface IExpressionDMAddress {
|
||||
|
||||
/**
|
||||
* Returns the address of the expression.
|
||||
*/
|
||||
IAddress getAddress();
|
||||
|
||||
/**
|
||||
* Returns the size of the address.
|
||||
*/
|
||||
int getSize();
|
||||
}
|
||||
|
||||
/**
|
||||
* A representation of an expression location that does not correspond to
|
||||
* an address.
|
||||
*
|
||||
* @since 2.1
|
||||
*/
|
||||
public interface IExpressionDMLocation extends IExpressionDMAddress {
|
||||
|
||||
/**
|
||||
* A constant that can be returned by {@link IExpressionDMAddress#getAddress()}
|
||||
* to represent an invalid address. Implementations of
|
||||
* <code>IExpressionDMLocation</code> can return this constant if no
|
||||
* valid address can be returned for a given expression location.
|
||||
*/
|
||||
public static final IAddress INVALID_ADDRESS = new IAddress() {
|
||||
public IAddress add(BigInteger offset) { return this; }
|
||||
public IAddress add(long offset) { return this; }
|
||||
public BigInteger getMaxOffset() { return BigInteger.ZERO; }
|
||||
public BigInteger distanceTo(IAddress other) { return BigInteger.ZERO; }
|
||||
public BigInteger getValue() { return BigInteger.ZERO; }
|
||||
public boolean isZero() { return false; }
|
||||
public boolean isMax() { return false; }
|
||||
public String toString(int radix) { return "INVALID"; }
|
||||
public String toHexAddressString() { return toString(); }
|
||||
public String toBinaryAddressString() { return toString(); }
|
||||
public int getCharsNum() { return 0; }
|
||||
public int getSize() { return 0; }
|
||||
public int compareTo(Object o) { return 0; }
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns a string representation of the expression location.
|
||||
*/
|
||||
public String getLocation();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* This is the model data interface that corresponds to IExpressionDMContext.
|
||||
|
@ -140,7 +188,9 @@ public interface IExpressions extends IFormattedValues {
|
|||
/**
|
||||
* Retrieves the address and size of an expression given by the expression context(<tt>dmc</tt>).
|
||||
* Non-lvalues do not have an addresses (e.g., "x + 5"). When the expression
|
||||
- * has no address, the data request monitor will contain null.
|
||||
- * has no address, the request monitor will have an error with code
|
||||
* <code>IDsfStatusConstants.REQUEST_FAILED</code> and the data request
|
||||
* monitor will contain null.
|
||||
*
|
||||
* @param dmc
|
||||
* The ExpressionDMC for the expression
|
||||
|
|
Loading…
Add table
Reference in a new issue