From cd0179f1f5247496e588fdbce64d9041f0fd52f4 Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Wed, 16 Apr 2003 20:54:15 +0000 Subject: [PATCH] Quick fix for variable values. --- debug/org.eclipse.cdt.debug.core/ChangeLog | 4 ++ .../cdt/debug/internal/core/model/CValue.java | 47 +++++++++++++++++++ debug/org.eclipse.cdt.debug.ui/ChangeLog | 4 ++ .../ui/CDTDebugModelPresentation.java | 16 ++++++- 4 files changed, 70 insertions(+), 1 deletion(-) diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog index ba22195559e..e7b4d65652d 100644 --- a/debug/org.eclipse.cdt.debug.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.core/ChangeLog @@ -1,3 +1,7 @@ +2003-04-16 Mikhail Khodjaiants + Quick fix for variable values. + * CValue.java + 2003-04-14 Alain Magloire StringBuffer.indexOf() is 1.4.x only diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CValue.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CValue.java index f3e428a55a8..9739fc05b07 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CValue.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CValue.java @@ -209,6 +209,26 @@ public class CValue extends CDebugElement implements ICValue if ( cdiValue != null ) { result = cdiValue.trim(); + if ( result.startsWith( "@" ) ) // Reference + { + int end = result.indexOf( ':' ); + if ( end == -1 ) + end = result.length(); + result = result.substring( 1, end ); + } + else if ( result.startsWith( "0x" ) ) + { + int end = result.indexOf( ' ' ); + if ( end == -1 ) + end = result.length(); + result = result.substring( 0, end ); + } + else if ( result.charAt( result.length() - 1 ) == '\'' ) + { + int start = result.indexOf( '\'' ); + if ( start != -1 ) + result = result.substring( start ); + } } return result; } @@ -239,4 +259,31 @@ public class CValue extends CDebugElement implements ICValue { return fParent; } + + public String getUnderlyingValueString() + { + ICDIValue cdiValue = getUnderlyingValue(); + String value = null; + if ( cdiValue != null ) + { + try + { + value = cdiValue.getValueString(); + } + catch( CDIException e ) + { + } + } + return value; + } + + public boolean isCharPointer() + { + String value = getUnderlyingValueString(); + if ( value != null ) + { + return ( value.startsWith( "0x" ) && value.indexOf( ' ' ) != -1 ); + } + return false; + } } diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog index 2c4b50b81bf..b2032b4e0e7 100644 --- a/debug/org.eclipse.cdt.debug.ui/ChangeLog +++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog @@ -1,3 +1,7 @@ +2003-04-16 Mikhail Khodjaiants + Quick fix for variable values. + * CDTDebugModelPresentation.java + 2003-04-14 Mikhail Khodjaiants Added icon to the 'Add/Remove Breakpoint' action for functions and methods. * plugin.xml diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java index 1fa812be608..ab297d91906 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/CDTDebugModelPresentation.java @@ -33,6 +33,7 @@ import org.eclipse.cdt.debug.core.model.IStackFrameInfo; import org.eclipse.cdt.debug.core.model.IState; import org.eclipse.cdt.debug.core.sourcelookup.IDisassemblyStorage; import org.eclipse.cdt.debug.internal.core.CDebugUtils; +import org.eclipse.cdt.debug.internal.core.model.CValue; import org.eclipse.cdt.debug.internal.core.sourcelookup.DisassemblyManager; import org.eclipse.cdt.debug.internal.ui.editors.CDebugEditor; import org.eclipse.cdt.debug.internal.ui.editors.DisassemblyEditorInput; @@ -490,7 +491,11 @@ public class CDTDebugModelPresentation extends LabelProvider IValue value = var.getValue(); if ( value != null && value.getValueString() != null && value.getValueString().trim().length() > 0 ) { - label += "= " + value.getValueString(); + if ( value instanceof CValue && ((CValue)value).isCharPointer() ) + label += "= " + ((CValue)value).getUnderlyingValueString(); + else + label += getVariableValue( value.getValueString().trim() ); +// label += "= " + value.getValueString(); } } return label; @@ -865,4 +870,13 @@ public class CDTDebugModelPresentation extends LabelProvider } return null; } + + private String getVariableValue( String value ) + { + if ( value.startsWith( "[" ) ) + return value; + if ( value.startsWith( "{" ) ) + return ""; + return "=" + value; + } }