1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Changed the implementation of the'getName' method of CVariable to return the actual names of array members.

This commit is contained in:
Mikhail Khodjaiants 2003-06-06 19:27:17 +00:00
parent c3bab5f786
commit 5243e5bd71
4 changed files with 60 additions and 12 deletions

View file

@ -1,3 +1,10 @@
2003-06-06 Mikhail Khodjaiants
Changed the implementation of the'getName' method of CVariable to return
the actual names of array members.
* CArrayPartition.java
* CArrayPartitionValue.java
* CVariable.java
2003-06-05 Mikhail Khodjaiants 2003-06-05 Mikhail Khodjaiants
Core support of infinite values of the floating point types. Core support of infinite values of the floating point types.
* ICVariable.java * ICVariable.java

View file

@ -91,7 +91,7 @@ public class CArrayPartition extends CVariable
{ {
if ( fArrayPartitionValue == null ) if ( fArrayPartitionValue == null )
{ {
fArrayPartitionValue = new CArrayPartitionValue( (CDebugTarget)getDebugTarget(), fCDIVariables, getStart(), getEnd() ); fArrayPartitionValue = new CArrayPartitionValue( this, fCDIVariables, getStart(), getEnd() );
} }
return fArrayPartitionValue; return fArrayPartitionValue;
} }

View file

@ -30,6 +30,11 @@ public class CArrayPartitionValue extends CDebugElement implements ICValue
*/ */
private List fCDIVariables; private List fCDIVariables;
/**
* Parent variable.
*/
private CVariable fParent = null;
/** /**
* List of child variables. * List of child variables.
*/ */
@ -43,10 +48,11 @@ public class CArrayPartitionValue extends CDebugElement implements ICValue
* Constructor for CArrayPartitionValue. * Constructor for CArrayPartitionValue.
* @param target * @param target
*/ */
public CArrayPartitionValue( CDebugTarget target, List cdiVariables, int start, int end ) public CArrayPartitionValue( CVariable parent, List cdiVariables, int start, int end )
{ {
super( target ); super( (CDebugTarget)parent.getDebugTarget() );
fCDIVariables = cdiVariables; fCDIVariables = cdiVariables;
fParent = parent;
fStart = start; fStart = start;
fEnd = end; fEnd = end;
} }
@ -152,4 +158,9 @@ public class CArrayPartitionValue extends CDebugElement implements ICValue
{ {
return null; return null;
} }
public CVariable getParentVariable()
{
return fParent;
}
} }

View file

@ -68,6 +68,11 @@ public abstract class CVariable extends CDebugElement
*/ */
protected ICValue fValue; protected ICValue fValue;
/**
* The name of this variable.
*/
private String fName = null;
private Boolean fEditable = null; private Boolean fEditable = null;
/** /**
@ -350,7 +355,27 @@ public abstract class CVariable extends CDebugElement
*/ */
public String getName() throws DebugException public String getName() throws DebugException
{ {
return ( getOriginalCDIVariable() != null ) ? getOriginalCDIVariable().getName() : null; if ( fName == null )
{
String cdiName = ( getOriginalCDIVariable() != null ) ? getOriginalCDIVariable().getName() : null;
if ( cdiName != null && getParent() instanceof ICValue )
{
CVariable parent = getParentVariable();
while( parent instanceof CArrayPartition )
{
parent = parent.getParentVariable();
}
if ( parent instanceof CVariable && parent.getType() instanceof ICDIArrayType )
{
fName = parent.getName() + '[' + cdiName + ']';
}
}
else
{
fName = cdiName;
}
}
return fName;
} }
/* (non-Javadoc) /* (non-Javadoc)
@ -758,16 +783,12 @@ public abstract class CVariable extends CDebugElement
{ {
LinkedList list = new LinkedList(); LinkedList list = new LinkedList();
list.add( this ); list.add( this );
CVariable var = null; CVariable var = getParentVariable();
CDebugElement element = getParent(); while( var != null )
while ( element instanceof CValue )
{ {
var = ((CValue)element).getParentVariable(); if ( !( var.getType() instanceof ICDIArrayType ) && !( var instanceof CArrayPartition ) && !var.isAccessSpecifier() )
if ( var == null )
break;
if ( !( var instanceof CArrayPartition ) && !var.isAccessSpecifier() )
list.addFirst( var ); list.addFirst( var );
element = var.getParent(); var = var.getParentVariable();
} }
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
CVariable[] vars = (CVariable[])list.toArray( new CVariable[list.size()] ); CVariable[] vars = (CVariable[])list.toArray( new CVariable[list.size()] );
@ -786,4 +807,13 @@ public abstract class CVariable extends CDebugElement
{ {
return ( "public".equals( getName() ) || "protected".equals( getName() ) || "private".equals( getName() ) ); return ( "public".equals( getName() ) || "protected".equals( getName() ) || "private".equals( getName() ) );
} }
private CVariable getParentVariable() throws DebugException
{
if ( getParent() instanceof CValue )
return ((CValue)getParent()).getParentVariable();
if ( getParent() instanceof CArrayPartitionValue )
return ((CArrayPartitionValue)getParent()).getParentVariable();
return null;
}
} }