From cc16047077f849a9360a11aae60c431a6d029f85 Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Wed, 4 Dec 2002 21:34:31 +0000 Subject: [PATCH] Added the 'setChanged' method to ICValue. This method should common for CValue and CArrayPartitionValue to implement 'setChanged' of CVariable correctly. --- debug/org.eclipse.cdt.debug.core/ChangeLog | 7 +++++++ .../org/eclipse/cdt/debug/core/model/ICValue.java | 3 +++ .../internal/core/model/CArrayPartitionValue.java | 13 +++++++++++++ .../cdt/debug/internal/core/model/CVariable.java | 6 +++--- 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog index d4a37278b3f..07e2d26e479 100644 --- a/debug/org.eclipse.cdt.debug.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.core/ChangeLog @@ -1,3 +1,10 @@ +2002-12-04 Mikhail Khodjaiants + Added the 'setChanged' method to ICValue. This method should common for CValue and + CArrayPartitionValue to implement 'setChanged' of CVariable correctly. + * ICValue.java + * CArrayPartitionValue.java + * CVariable.java + 2002-12-02 Mikhail Khodjaiants Refactoring - files moved from org.eclipse.cdt.debug.core to the new package: org.eclipse.cdt.debug.core.model: * ICBreakpoint.java diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICValue.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICValue.java index 0e7c43689c0..0604b3c79aa 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICValue.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICValue.java @@ -7,6 +7,7 @@ package org.eclipse.cdt.debug.core.model; import org.eclipse.cdt.debug.core.cdi.model.ICDIValue; +import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.model.IValue; /** @@ -38,4 +39,6 @@ public interface ICValue extends IValue * Returns the underlying CDI value for this value. */ ICDIValue getUnderlyingValue(); + + void setChanged( boolean changed ) throws DebugException; } diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CArrayPartitionValue.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CArrayPartitionValue.java index 7df61cf1ea2..43b25281a93 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CArrayPartitionValue.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CArrayPartitionValue.java @@ -8,6 +8,7 @@ package org.eclipse.cdt.debug.internal.core.model; import java.util.ArrayList; import java.util.Collections; +import java.util.Iterator; import java.util.List; import org.eclipse.cdt.debug.core.cdi.model.ICDIValue; @@ -123,4 +124,16 @@ public class CArrayPartitionValue extends CDebugElement implements ICValue { return fEnd; } + + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.core.model.ICValue#setChanged(boolean) + */ + public void setChanged( boolean changed ) throws DebugException + { + Iterator it = fVariables.iterator(); + while( it.hasNext() ) + { + ((CVariable)it.next()).setChanged( changed ); + } + } } 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 93fe24c7799..31d53358bfe 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 @@ -224,10 +224,10 @@ public abstract class CVariable extends CDebugElement protected synchronized void setChanged( boolean changed ) throws DebugException { - if ( getValue() != null ) + if ( getValue() != null && getValue() instanceof ICValue ) { - ((CValue)getValue()).setChanged( changed ); - if ( !getValue().hasVariables() || ((CValue)getValue()).getType() == ICValue.TYPE_POINTER ) + ((ICValue)getValue()).setChanged( changed ); + if ( !getValue().hasVariables() || ((ICValue)getValue()).getType() == ICValue.TYPE_POINTER ) { fChanged = changed; }