From a3edd4621d19c83fc079c9d25f6c966577a8ad01 Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Wed, 11 Sep 2002 18:46:36 +0000 Subject: [PATCH] Implementation of array partitions. --- .../core/model/CArrayEntryVariable.java | 7 ------- .../internal/core/model/CArrayPartition.java | 2 +- .../core/model/CArrayPartitionValue.java | 3 ++- .../cdt/debug/internal/core/model/CValue.java | 20 +++++++++++-------- .../debug/internal/core/model/CVariable.java | 5 +++++ 5 files changed, 20 insertions(+), 17 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CArrayEntryVariable.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CArrayEntryVariable.java index 63b84b31a87..18dbd14e2aa 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CArrayEntryVariable.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CArrayEntryVariable.java @@ -56,13 +56,6 @@ public class CArrayEntryVariable extends CLocalVariable return stripBrackets( super.getReferenceTypeName() ); } - /* (non-Javadoc) - * @see org.eclipse.cdt.debug.core.cdi.event.ICDIEventListener#handleDebugEvent(ICDIEvent) - */ - public void handleDebugEvent(ICDIEvent event) - { - } - protected int getIndex() { return fIndex; diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CArrayPartition.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CArrayPartition.java index d39ed9e0d24..48602928954 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CArrayPartition.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CArrayPartition.java @@ -121,7 +121,7 @@ public class CArrayPartition extends CVariable } else { - var = new CArrayPartition( target, cdiVars.subList( start, start + perSlot - 1 ), start, start + perSlot - 1 ); + var = new CArrayPartition( target, cdiVars.subList( start, start + perSlot ), start, start + perSlot - 1 ); } children.add( var ); start += perSlot; 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 66eaf25a3d6..4c0716bf688 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 @@ -98,7 +98,8 @@ public class CArrayPartitionValue extends CDebugElement implements ICValue if ( fVariables.isEmpty() ) { fVariables = new ArrayList( getEnd() - getStart() + 1 ); - for ( int i = getStart(); i < getEnd(); ++i ) { + for ( int i = getStart(); i <= getEnd(); ++i ) + { fVariables.add( new CArrayEntryVariable( (CDebugTarget)getDebugTarget(), (ICDIVariable)fCDIVariables.get( i - getStart() ), i ) ); } } diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CValue.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CValue.java index db879c6dd08..e793747ffb6 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CValue.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CValue.java @@ -239,15 +239,19 @@ public class CValue extends CDebugElement implements ICValue { fValueString = null; } -/* - if ( hasVariables() ) + Iterator it = fVariables.iterator(); + while( it.hasNext() ) { - IVariable[] vars = getVariables(); - for ( int i = 0; i < vars.length; ++i ) - { - ((CVariable)vars[i]).setChanged( changed ); - } + ((CVariable)it.next()).setChanged( changed ); + } + } + + protected void dispose() + { + Iterator it = fVariables.iterator(); + while( it.hasNext() ) + { + ((CVariable)it.next()).dispose(); } -*/ } } 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 21fd4eb6aa3..f0d9fe445d0 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 @@ -7,6 +7,7 @@ package org.eclipse.cdt.debug.internal.core.model; import java.text.MessageFormat; +import org.eclipse.cdt.debug.core.CDebugCorePlugin; import org.eclipse.cdt.debug.core.ICValue; import org.eclipse.cdt.debug.core.cdi.CDIException; import org.eclipse.cdt.debug.core.cdi.event.ICDIEventListener; @@ -195,6 +196,10 @@ public abstract class CVariable extends CDebugElement protected void dispose() { + if ( fValue != null ) + { + ((CValue)fValue).dispose(); + } getCDISession().getEventManager().removeEventListener( this ); }