Index:
ChangeLog =================================================================== RCS
file: /home/tools/org.eclipse.cdt.debug.core/ChangeLog,v retrieving revision
1.145 diff -u -r1.145 ChangeLog --- ChangeLog 14 Mar 2003 19:10:17
-0000 1.145 +++ ChangeLog 14 Mar 2003 23:11:40 -0000 @@ -1,4
+1,10 @@ 2003-03-14 Mikhail Khodjaiants + Added the
'isEditable' and 'hasChildren' methods to the 'ICVariable'
interface. + * ICVariable.java + * CVariable.java + *
CModificationVariable.java + +2003-03-14 Mikhail
Khodjaiants Cross-referencing projects cause the debugger to go
into a stack overflow exception. Make sure that there is only
one source location for each referenced project. *
CSourceLocator.java Index:
src/org/eclipse/cdt/debug/core/model/ICVariable.java =================================================================== RCS
file:
/home/tools/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICVariable.java,v retrieving
revision 1.1 diff -u -r1.1 ICVariable.java ---
src/org/eclipse/cdt/debug/core/model/ICVariable.java 17 Dec 2002 02:41:32
-0000 1.1 +++
src/org/eclipse/cdt/debug/core/model/ICVariable.java 14 Mar 2003 23:11:40
-0000 @@ -21,4 +21,8 @@ void setFormat( int format ) throws
DebugException; void refresh() throws
DebugException; + + boolean
isEditable(); + + boolean hasChildren(); } Index:
src/org/eclipse/cdt/debug/internal/core/model/CModificationVariable.java =================================================================== RCS
file:
/home/tools/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CModificationVariable.java,v retrieving
revision 1.10 diff -u -r1.10 CModificationVariable.java ---
src/org/eclipse/cdt/debug/internal/core/model/CModificationVariable.java 10
Mar 2003 21:27:13 -0000 1.10 +++
src/org/eclipse/cdt/debug/internal/core/model/CModificationVariable.java 14
Mar 2003 23:11:41 -0000 @@ -24,8 +24,6 @@ */ public
abstract class CModificationVariable extends
CVariable { - private Boolean fEditable =
null; - /** * Constructor for
CModificationVariable. * @param parent @@ -41,26 +39,8
@@ */ public boolean
supportsValueModification() { - if ( fEditable ==
null ) - { - CDebugTarget target =
(CDebugTarget)getDebugTarget().getAdapter( CDebugTarget.class
); - if ( target != null &&
!target.isCoreDumpTarget()
) - { - try - { - fEditable
= new Boolean( getCDIVariable().isEditable()
); - } - catch( CDIException
e ) - { - logError( e
); - } - } - else - { - fEditable
= new Boolean( false
); - } - } - return ( fEditable
!= null ) ? fEditable.booleanValue() : false; + CDebugTarget
target = (CDebugTarget)getDebugTarget().getAdapter( CDebugTarget.class
); + return ( target != null && !target.isCoreDumpTarget()
&& isEditable()
); } /** Index:
src/org/eclipse/cdt/debug/internal/core/model/CVariable.java =================================================================== RCS
file:
/home/tools/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariable.java,v retrieving
revision 1.19 diff -u -r1.19 CVariable.java ---
src/org/eclipse/cdt/debug/internal/core/model/CVariable.java 13 Mar 2003
21:13:53 -0000 1.19 +++
src/org/eclipse/cdt/debug/internal/core/model/CVariable.java 14 Mar 2003
23:11:41 -0000 @@ -57,6 +57,8 @@ */ protected
ICValue fValue; + private Boolean fEditable =
null; + /** * Counter corresponding to this
variable's debug target * suspend count indicating the last time
this value @@ -436,6 +438,7
@@ ((CValue)fValue).dispose(); fValue
= null; } + fEditable =
null; fTypeName =
null; fireChangeEvent( DebugEvent.STATE
); } @@ -471,6 +474,7
@@ ((CValue)fValue).dispose(); fValue
= null; } + fEditable =
null; fTypeName =
null; fireChangeEvent( DebugEvent.STATE
); } @@ -480,7 +484,8 @@
*/ public boolean
supportsCasting() { - return
supportsValueModification(); + CDebugTarget target =
(CDebugTarget)getDebugTarget().getAdapter( CDebugTarget.class
); + return ( target != null && isEditable()
); } protected ICDIVariable
getOriginalCDIVariable() @@ -502,8 +507,7
@@ { try { - ICDIVariableObject
originalVarObject = getCDISession().getVariableManager().getVariableObject(
cdiFrame, getOriginalCDIVariable().getName()
); - ICDIVariableObject varObject =
getCDISession().getVariableManager().getVariableObjectAsType( originalVarObject,
type ); + ICDIVariableObject varObject =
getCDISession().getVariableManager().getVariableObjectAsType(
getOriginalCDIVariable(), type ); return
getCDISession().getVariableManager().createVariable( varObject
); } catch( CDIException e ) @@
-517,8 +521,7
@@ { try { - ICDIVariableObject
originalVarObject = getCDISession().getVariableManager().getVariableObject(
cdiFrame, getOriginalCDIVariable().getName()
); - ICDIVariableObject varObject =
getCDISession().getVariableManager().getVariableObjectAsArray(
originalVarObject, type, start, end ); + ICDIVariableObject
varObject = getCDISession().getVariableManager().getVariableObjectAsArray(
getOriginalCDIVariable(), type, start, end ); return
getCDISession().getVariableManager().createVariable( varObject
); } catch( CDIException e ) @@
-572,6 +575,7
@@ ((CValue)fValue).dispose(); fValue
= null; } + fEditable =
null; fTypeName =
null; fireChangeEvent( DebugEvent.STATE
); } @@ -582,14 +586,42 @@
*/ public boolean
supportsCastToArray() { + CDebugTarget target =
(CDebugTarget)getDebugTarget().getAdapter( CDebugTarget.class
); + return ( target != null && isEditable() &&
hasChildren() ); + } + + /* (non-Javadoc) + * @see
org.eclipse.cdt.debug.core.model.ICVariable#hasChildren() +
*/ + public boolean
hasChildren() + { try { - return
( supportsValueModification() && getValue().hasVariables()
); + return ( getValue() != null &&
getValue().hasVariables() ); } catch(
DebugException e ) { logError( e
); } return
false; + } + + /* (non-Javadoc) + * @see
org.eclipse.cdt.debug.core.model.ICVariable#isEditable() +
*/ + public boolean isEditable() + { + if (
fEditable == null
) + { + try + { + fEditable
= new Boolean( getCDIVariable().isEditable()
); + } + catch( CDIException e
) + { + logError( e
); + } + } + return ( fEditable
!= null ) ? fEditable.booleanValue() :
false; } }
|