1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-14 11:45:38 +02:00

Display the values of character arrays as characters.

This commit is contained in:
Mikhail Khodjaiants 2002-09-11 22:42:49 +00:00
parent a3edd4621d
commit 377485b1dd
2 changed files with 44 additions and 6 deletions

View file

@ -24,6 +24,7 @@ public interface ICValue extends IValue
static final public int TYPE_POINTER = 4; static final public int TYPE_POINTER = 4;
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;
/** /**
* Returns the type of this value. * Returns the type of this value.

View file

@ -52,11 +52,10 @@ public class CValue extends CDebugElement implements ICValue
* Constructor for CValue. * Constructor for CValue.
* @param target * @param target
*/ */
public CValue( CDebugTarget target, ICDIValue cdiValue ) throws DebugException public CValue( CDebugTarget target, ICDIValue cdiValue )
{ {
super( target ); super( target );
fCDIValue = cdiValue; fCDIValue = cdiValue;
calculateType();
} }
/* (non-Javadoc) /* (non-Javadoc)
@ -185,13 +184,16 @@ public class CValue extends CDebugElement implements ICValue
return Collections.EMPTY_LIST; return Collections.EMPTY_LIST;
} }
protected void calculateType() throws DebugException protected void calculateType( String stringValue )
{ {
String stringValue = getValueString();
if ( stringValue != null && stringValue.trim().length() > 0 ) if ( stringValue != null && stringValue.trim().length() > 0 )
{ {
stringValue = stringValue.trim(); stringValue = stringValue.trim();
if ( stringValue.charAt( 0 ) == '[' ) if ( stringValue.charAt( stringValue.length() - 1 ) == '\'' )
{
fType = TYPE_CHAR;
}
else if ( stringValue.charAt( 0 ) == '[' )
{ {
fType = TYPE_ARRAY; fType = TYPE_ARRAY;
} }
@ -230,7 +232,17 @@ public class CValue extends CDebugElement implements ICValue
protected String processCDIValue( String cdiValue ) protected String processCDIValue( String cdiValue )
{ {
return cdiValue; String result = null;
if ( cdiValue != null )
{
result = cdiValue.trim();
calculateType( result );
if ( getType() == TYPE_CHAR )
{
result = getCharValue( result );
}
}
return result;
} }
public synchronized void setChanged( boolean changed ) throws DebugException public synchronized void setChanged( boolean changed ) throws DebugException
@ -254,4 +266,29 @@ public class CValue extends CDebugElement implements ICValue
((CVariable)it.next()).dispose(); ((CVariable)it.next()).dispose();
} }
} }
private String getCharValue( String value )
{
char result = '.';
int index = value.indexOf( ' ' );
if ( index > 0 )
{
try
{
short shortValue = Short.parseShort( value.substring( 0, index ), 10 );
if ( shortValue >= 0 )
{
result = (char)shortValue;
if ( Character.isISOControl( result ) )
{
result = '.';
}
}
}
catch( NumberFormatException e )
{
}
}
return String.valueOf( result );
}
} }