diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog index fbc439a74d6..e84ec1a7b4a 100644 --- a/debug/org.eclipse.cdt.debug.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.core/ChangeLog @@ -1,3 +1,9 @@ +2003-03-09 Mikhail Khodjaiants + Core support of the "Display As Array" action. + * ICastToArray.java + * CLocalVariable.java + * CVariable.java + 2003-03-09 Mikhail Khodjaiants Core support of the "Cast To Type" and "Restore Default Type" actions. * ICastToType.java: new diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICastToArray.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICastToArray.java new file mode 100644 index 00000000000..e531d071eca --- /dev/null +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICastToArray.java @@ -0,0 +1,21 @@ +/* + *(c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + * + */ + +package org.eclipse.cdt.debug.core.model; + +import org.eclipse.debug.core.DebugException; + +/** + * Enter type comment. + * + * @since Mar 10, 2003 + */ +public interface ICastToArray extends ICastToType +{ + boolean supportsCastToArray(); + + void castToArray( String type, int startIndex, int endIndex ) throws DebugException; +} diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CLocalVariable.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CLocalVariable.java index 6084974cb2e..d7d34c75877 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CLocalVariable.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CLocalVariable.java @@ -6,9 +6,6 @@ package org.eclipse.cdt.debug.internal.core.model; import org.eclipse.cdt.debug.core.cdi.model.ICDIVariable; -import org.eclipse.cdt.debug.core.model.ICValue; -import org.eclipse.debug.core.DebugException; -import org.eclipse.debug.core.model.IValue; /** * @@ -18,36 +15,12 @@ import org.eclipse.debug.core.model.IValue; */ public class CLocalVariable extends CModificationVariable { + /** + * Constructor for CLocalVariable. + * @param target + */ public CLocalVariable( CDebugElement parent, ICDIVariable cdiVariable ) { super( parent, cdiVariable ); } - - /* (non-Javadoc) - * @see org.eclipse.cdt.debug.core.model.ICastToType#supportsCasting() - */ - public boolean supportsCasting() - { - boolean enabled = false; - try - { - IValue value = getValue(); - if ( value instanceof ICValue ) - { - switch( ((ICValue)value).getType() ) - { - case ICValue.TYPE_SIMPLE: - case ICValue.TYPE_POINTER: - case ICValue.TYPE_CHAR: - enabled = true; - break; - } - } - } - catch( DebugException e ) - { - logError( e ); - } - return enabled; - } } diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariable.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariable.java index 46609f648d5..07d133b8e2c 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariable.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariable.java @@ -19,6 +19,7 @@ import org.eclipse.cdt.debug.core.cdi.model.ICDIValue; import org.eclipse.cdt.debug.core.cdi.model.ICDIVariable; import org.eclipse.cdt.debug.core.model.ICValue; import org.eclipse.cdt.debug.core.model.ICVariable; +import org.eclipse.cdt.debug.core.model.ICastToArray; import org.eclipse.cdt.debug.core.model.ICastToType; import org.eclipse.debug.core.DebugEvent; import org.eclipse.debug.core.DebugException; @@ -35,7 +36,8 @@ import org.eclipse.debug.core.model.IVariable; public abstract class CVariable extends CDebugElement implements ICVariable, ICDIEventListener, - ICastToType + ICastToType, + ICastToArray { /** * The parent object this variable is contained in. @@ -81,6 +83,15 @@ public abstract class CVariable extends CDebugElement */ private int fFormat = ICDIFormat.NATURAL; + /** + * @param target + */ + public CVariable(CDebugTarget target) + { + super(target); + // TODO Auto-generated constructor stub + } + /** * Constructor for CVariable. * @param target @@ -481,7 +492,7 @@ public abstract class CVariable extends CDebugElement */ public boolean supportsCasting() { - return false; + return supportsValueModification(); } protected ICDIVariable getOriginalCDIVariable() @@ -534,4 +545,27 @@ public abstract class CVariable extends CDebugElement { return ( getShadow() != null ); } + + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.core.model.ICastToArray#castToArray(java.lang.String, int, int) + */ + public void castToArray( String type, int startIndex, int endIndex ) throws DebugException + { + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.core.model.ICastToArray#supportsCastToArray() + */ + public boolean supportsCastToArray() + { + try + { + return ( supportsValueModification() && getValue().hasVariables() ); + } + catch( DebugException e ) + { + logError( e ); + } + return false; + } }