mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Added new methods to ICVariable to vizualize arrays and structures based on the new CDI types.
This commit is contained in:
parent
1a8a38360a
commit
a295e9b86c
3 changed files with 59 additions and 0 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2003-05-29 Mikhail Khodjaiants
|
||||||
|
Added new methods to ICVariable to vizualize arrays and structures based
|
||||||
|
on the new CDI types.
|
||||||
|
* ICVariable.java
|
||||||
|
* CVariable.java
|
||||||
|
|
||||||
2003-05-27 Mikhail Khodjaiants
|
2003-05-27 Mikhail Khodjaiants
|
||||||
Check if the location of breakpoint is eligible for the target
|
Check if the location of breakpoint is eligible for the target
|
||||||
when setting, removing or changing the propeties.
|
when setting, removing or changing the propeties.
|
||||||
|
|
|
@ -25,4 +25,10 @@ public interface ICVariable extends IVariable
|
||||||
boolean isEditable();
|
boolean isEditable();
|
||||||
|
|
||||||
boolean hasChildren();
|
boolean hasChildren();
|
||||||
|
|
||||||
|
boolean isArray();
|
||||||
|
|
||||||
|
int[] getArrayDimensions();
|
||||||
|
|
||||||
|
boolean isStructure();
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,10 @@ import org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame;
|
||||||
import org.eclipse.cdt.debug.core.cdi.model.ICDIValue;
|
import org.eclipse.cdt.debug.core.cdi.model.ICDIValue;
|
||||||
import org.eclipse.cdt.debug.core.cdi.model.ICDIVariable;
|
import org.eclipse.cdt.debug.core.cdi.model.ICDIVariable;
|
||||||
import org.eclipse.cdt.debug.core.cdi.model.ICDIVariableObject;
|
import org.eclipse.cdt.debug.core.cdi.model.ICDIVariableObject;
|
||||||
|
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIArrayType;
|
||||||
|
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIDerivedType;
|
||||||
|
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIStructType;
|
||||||
|
import org.eclipse.cdt.debug.core.cdi.model.type.ICDIType;
|
||||||
import org.eclipse.cdt.debug.core.model.ICValue;
|
import org.eclipse.cdt.debug.core.model.ICValue;
|
||||||
import org.eclipse.cdt.debug.core.model.ICVariable;
|
import org.eclipse.cdt.debug.core.model.ICVariable;
|
||||||
import org.eclipse.cdt.debug.core.model.ICastToArray;
|
import org.eclipse.cdt.debug.core.model.ICastToArray;
|
||||||
|
@ -615,4 +619,47 @@ public abstract class CVariable extends CDebugElement
|
||||||
{
|
{
|
||||||
return isEditable() && hasChildren();
|
return isEditable() && hasChildren();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isArray()
|
||||||
|
{
|
||||||
|
return ( getType() instanceof ICDIArrayType );
|
||||||
|
}
|
||||||
|
|
||||||
|
public int[] getArrayDimensions()
|
||||||
|
{
|
||||||
|
int length = 0;
|
||||||
|
ICDIType type = getType();
|
||||||
|
while( type instanceof ICDIArrayType )
|
||||||
|
{
|
||||||
|
++length;
|
||||||
|
type = ( type instanceof ICDIDerivedType ) ? ((ICDIDerivedType)type).getComponentType() : null;
|
||||||
|
}
|
||||||
|
int[] dims = new int[length];
|
||||||
|
type = getType();
|
||||||
|
for ( int i = length; i > 0; --i )
|
||||||
|
{
|
||||||
|
dims[i - 1] = ((ICDIArrayType)type).getDimension();
|
||||||
|
type = ((ICDIDerivedType)type).getComponentType();
|
||||||
|
}
|
||||||
|
return dims;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isStructure()
|
||||||
|
{
|
||||||
|
return ( getType() instanceof ICDIStructType );
|
||||||
|
}
|
||||||
|
|
||||||
|
private ICDIType getType()
|
||||||
|
{
|
||||||
|
ICDIType type = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if ( getCDIVariable() != null )
|
||||||
|
type = getCDIVariable().getType();
|
||||||
|
}
|
||||||
|
catch( CDIException e )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return type;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue