mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 22:52:11 +02:00
Correct display of C++ keywords in the 'Variables' view.
This commit is contained in:
parent
7622705eb4
commit
ab927f790a
5 changed files with 39 additions and 9 deletions
|
@ -25,6 +25,7 @@ public interface ICValue extends IValue
|
||||||
static final public int TYPE_ARRAY_PARTITION = 5;
|
static final public int TYPE_ARRAY_PARTITION = 5;
|
||||||
static final public int TYPE_ARRAY_ENTRY = 7;
|
static final public int TYPE_ARRAY_ENTRY = 7;
|
||||||
static final public int TYPE_CHAR = 8;
|
static final public int TYPE_CHAR = 8;
|
||||||
|
static final public int TYPE_KEYWORD = 9;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the type of this value.
|
* Returns the type of this value.
|
||||||
|
|
|
@ -28,6 +28,11 @@ import org.eclipse.debug.core.model.IVariable;
|
||||||
*/
|
*/
|
||||||
public class CValue extends CDebugElement implements ICValue
|
public class CValue extends CDebugElement implements ICValue
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Parent variable.
|
||||||
|
*/
|
||||||
|
private CVariable fParent = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cached value.
|
* Cached value.
|
||||||
*/
|
*/
|
||||||
|
@ -52,9 +57,10 @@ public class CValue extends CDebugElement implements ICValue
|
||||||
* Constructor for CValue.
|
* Constructor for CValue.
|
||||||
* @param target
|
* @param target
|
||||||
*/
|
*/
|
||||||
public CValue( CDebugTarget target, ICDIValue cdiValue )
|
public CValue( CVariable parent, ICDIValue cdiValue )
|
||||||
{
|
{
|
||||||
super( target );
|
super( (CDebugTarget)parent.getDebugTarget() );
|
||||||
|
fParent = parent;
|
||||||
fCDIValue = cdiValue;
|
fCDIValue = cdiValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -186,10 +192,14 @@ public class CValue extends CDebugElement implements ICValue
|
||||||
|
|
||||||
protected void calculateType( String stringValue )
|
protected void calculateType( String stringValue )
|
||||||
{
|
{
|
||||||
if ( stringValue != null && stringValue.trim().length() > 0 )
|
if ( stringValue != null )
|
||||||
{
|
{
|
||||||
stringValue = stringValue.trim();
|
stringValue = stringValue.trim();
|
||||||
if ( stringValue.charAt( stringValue.length() - 1 ) == '\'' )
|
if ( stringValue.length() == 0 )
|
||||||
|
{
|
||||||
|
fType = TYPE_KEYWORD;
|
||||||
|
}
|
||||||
|
else if ( stringValue.charAt( stringValue.length() - 1 ) == '\'' )
|
||||||
{
|
{
|
||||||
fType = TYPE_CHAR;
|
fType = TYPE_CHAR;
|
||||||
}
|
}
|
||||||
|
@ -291,4 +301,9 @@ public class CValue extends CDebugElement implements ICValue
|
||||||
}
|
}
|
||||||
return String.valueOf( result );
|
return String.valueOf( result );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected CVariable getParentVariable()
|
||||||
|
{
|
||||||
|
return fParent;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,8 +22,8 @@ public class CValueFactory
|
||||||
* Creates the appropriate kind of value, or <code>null</code>.
|
* Creates the appropriate kind of value, or <code>null</code>.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static public ICValue createValue( CDebugTarget target, ICDIValue cdiValue ) throws DebugException
|
static public ICValue createValue( CVariable parent, ICDIValue cdiValue ) throws DebugException
|
||||||
{
|
{
|
||||||
return new CValue( target, cdiValue );
|
return new CValue( parent, cdiValue );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,7 +84,7 @@ public abstract class CVariable extends CDebugElement
|
||||||
ICDIValue currentValue = getCurrentValue();
|
ICDIValue currentValue = getCurrentValue();
|
||||||
if ( fValue == null )
|
if ( fValue == null )
|
||||||
{
|
{
|
||||||
fValue = CValueFactory.createValue( (CDebugTarget)getDebugTarget(), currentValue );
|
fValue = CValueFactory.createValue( this, currentValue );
|
||||||
}
|
}
|
||||||
return fValue;
|
return fValue;
|
||||||
}
|
}
|
||||||
|
@ -252,8 +252,13 @@ public abstract class CVariable extends CDebugElement
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
//setValue( getCurrentValue() );
|
|
||||||
setChanged( true );
|
setChanged( true );
|
||||||
|
if ( getValue() != null &&
|
||||||
|
((CValue)getValue()).getType() == ICValue.TYPE_CHAR &&
|
||||||
|
getParent() instanceof CValue )
|
||||||
|
{
|
||||||
|
updateParentVariable( (CValue)getParent() );
|
||||||
|
}
|
||||||
getParent().fireChangeEvent( DebugEvent.CONTENT );
|
getParent().fireChangeEvent( DebugEvent.CONTENT );
|
||||||
}
|
}
|
||||||
catch( DebugException e )
|
catch( DebugException e )
|
||||||
|
@ -329,4 +334,10 @@ public abstract class CVariable extends CDebugElement
|
||||||
}
|
}
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void updateParentVariable( CValue parentValue ) throws DebugException
|
||||||
|
{
|
||||||
|
parentValue.getParentVariable().setChanged( true );
|
||||||
|
parentValue.getParentVariable().fireChangeEvent( DebugEvent.STATE );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -389,6 +389,8 @@ public class CDTDebugModelPresentation extends LabelProvider
|
||||||
break;
|
break;
|
||||||
case ICValue.TYPE_STRUCTURE:
|
case ICValue.TYPE_STRUCTURE:
|
||||||
break;
|
break;
|
||||||
|
case ICValue.TYPE_KEYWORD:
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
label += "= " + value.getValueString();
|
label += "= " + value.getValueString();
|
||||||
break;
|
break;
|
||||||
|
@ -633,7 +635,8 @@ public class CDTDebugModelPresentation extends LabelProvider
|
||||||
if ( element != null )
|
if ( element != null )
|
||||||
{
|
{
|
||||||
if ( element.getType() == ICValue.TYPE_ARRAY ||
|
if ( element.getType() == ICValue.TYPE_ARRAY ||
|
||||||
element.getType() == ICValue.TYPE_STRUCTURE )
|
element.getType() == ICValue.TYPE_STRUCTURE ||
|
||||||
|
element.getType() == ICValue.TYPE_KEYWORD )
|
||||||
return fDebugImageRegistry.get( new CImageDescriptor( CDebugImages.DESC_OBJS_VARIABLE_AGGREGATE, 0 ) );
|
return fDebugImageRegistry.get( new CImageDescriptor( CDebugImages.DESC_OBJS_VARIABLE_AGGREGATE, 0 ) );
|
||||||
else if ( element.getType() == ICValue.TYPE_POINTER )
|
else if ( element.getType() == ICValue.TYPE_POINTER )
|
||||||
return fDebugImageRegistry.get( new CImageDescriptor( CDebugImages.DESC_OBJS_VARIABLE_POINTER, 0 ) );
|
return fDebugImageRegistry.get( new CImageDescriptor( CDebugImages.DESC_OBJS_VARIABLE_POINTER, 0 ) );
|
||||||
|
|
Loading…
Add table
Reference in a new issue