diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog
index 9df667fc593..b6513c24fca 100644
--- a/debug/org.eclipse.cdt.debug.core/ChangeLog
+++ b/debug/org.eclipse.cdt.debug.core/ChangeLog
@@ -1,3 +1,14 @@
+2003-03-31 Mikhail Khodjaiants
+ The new abstract class ('CUpdateManager') is added to provide a basic implementation of ICUpdateManager.
+ CSignalManager, CSharedLibraryManager and CRegisterManager extend this class.
+ * ICRegisterManager.java: new
+ * CRegisterManager.java: new
+ * CSharedLibraryManager.java
+ * CSignalManager.java
+ * CUpdateManager.java: new
+ * CDebugTarget.java
+ * CRegisterGroup.java
+
2003-03-28 Mikhail Khodjaiants
Use the 'exists' method of the 'IFile' interface instead of using 'toFile().exists()' for 'IPath'.
* CDirectorySourceLocation.java
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICRegisterManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICRegisterManager.java
new file mode 100644
index 00000000000..2953ee50203
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICRegisterManager.java
@@ -0,0 +1,33 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+
+package org.eclipse.cdt.debug.core;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.model.IRegisterGroup;
+
+/**
+ * Enter type comment.
+ *
+ * @since Mar 31, 2003
+ */
+public interface ICRegisterManager extends ICUpdateManager, IAdaptable
+{
+ void initialize();
+
+ IRegisterGroup[] getRegisterGroups() throws DebugException;
+
+ void addRegisterGroup( IRegisterGroup group );
+
+ void removeRegisterGroup( IRegisterGroup group );
+
+ void removeAllRegisterGroups();
+
+ void reset();
+
+ void dispose();
+}
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CRegisterManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CRegisterManager.java
new file mode 100644
index 00000000000..79ed0fb2bec
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CRegisterManager.java
@@ -0,0 +1,147 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+
+package org.eclipse.cdt.debug.internal.core;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.cdt.debug.core.CDebugCorePlugin;
+import org.eclipse.cdt.debug.core.ICRegisterManager;
+import org.eclipse.cdt.debug.core.cdi.CDIException;
+import org.eclipse.cdt.debug.core.cdi.ICDIManager;
+import org.eclipse.cdt.debug.core.cdi.model.ICDIRegisterObject;
+import org.eclipse.cdt.debug.internal.core.model.CDebugTarget;
+import org.eclipse.cdt.debug.internal.core.model.CRegisterGroup;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.model.IRegisterGroup;
+
+/**
+ * Enter type comment.
+ *
+ * @since Mar 31, 2003
+ */
+public class CRegisterManager extends CUpdateManager implements ICRegisterManager
+{
+ /**
+ * Collection of register groups added to this target. Values are of type CRegisterGroup
.
+ */
+ private List fRegisterGroups;
+
+ /**
+ *
+ */
+ public CRegisterManager( CDebugTarget target )
+ {
+ super( target );
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
+ */
+ public Object getAdapter( Class adapter )
+ {
+ if ( ICRegisterManager.class.equals( adapter ) )
+ return this;
+ if ( CRegisterManager.class.equals( adapter ) )
+ return this;
+ return super.getAdapter( adapter );
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.debug.core.ICRegisterManager#dispose()
+ */
+ public void dispose()
+ {
+ removeAllRegisterGroups();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.debug.core.ICRegisterManager#addRegisterGroup(org.eclipse.debug.core.model.IRegisterGroup)
+ */
+ public void addRegisterGroup( IRegisterGroup group )
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.debug.core.ICRegisterManager#getRegisterGroups()
+ */
+ public IRegisterGroup[] getRegisterGroups() throws DebugException
+ {
+ return (IRegisterGroup[])fRegisterGroups.toArray( new IRegisterGroup[fRegisterGroups.size()] );
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.debug.core.ICRegisterManager#initialize()
+ */
+ public void initialize()
+ {
+ fRegisterGroups = new ArrayList( 20 );
+ createMainRegisterGroup();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.debug.core.ICRegisterManager#removeAllRegisterGroups()
+ */
+ public void removeAllRegisterGroups()
+ {
+ Iterator it = fRegisterGroups.iterator();
+ while( it.hasNext() )
+ {
+ ((CRegisterGroup)it.next()).dispose();
+ }
+ fRegisterGroups.clear();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.debug.core.ICRegisterManager#removeRegisterGroup(org.eclipse.debug.core.model.IRegisterGroup)
+ */
+ public void removeRegisterGroup( IRegisterGroup group )
+ {
+ fRegisterGroups.remove( group );
+ }
+
+ private void createMainRegisterGroup()
+ {
+ ICDIRegisterObject[] regObjects = null;
+ try
+ {
+ regObjects = getDebugTarget().getCDISession().getRegisterManager().getRegisterObjects();
+ }
+ catch( CDIException e )
+ {
+ CDebugCorePlugin.log( e );
+ }
+ if ( regObjects != null )
+ {
+ fRegisterGroups.add( new CRegisterGroup( getDebugTarget(), "Main", regObjects ) );
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.debug.core.ICRegisterManager#reset()
+ */
+ public void reset()
+ {
+ Iterator it = fRegisterGroups.iterator();
+ while( it.hasNext() )
+ {
+ ((CRegisterGroup)it.next()).resetChangeFlags();
+ }
+ }
+
+ protected ICDIManager getCDIManager()
+ {
+ if ( getDebugTarget() != null )
+ {
+ return ((CDebugTarget)getDebugTarget()).getCDISession().getRegisterManager();
+ }
+ return null;
+ }
+}
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CSharedLibraryManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CSharedLibraryManager.java
index 52bcd5355a1..112572e518c 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CSharedLibraryManager.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CSharedLibraryManager.java
@@ -9,24 +9,22 @@ import java.util.ArrayList;
import java.util.Iterator;
import org.eclipse.cdt.debug.core.ICSharedLibraryManager;
-import org.eclipse.cdt.debug.core.ICUpdateManager;
import org.eclipse.cdt.debug.core.cdi.CDIException;
+import org.eclipse.cdt.debug.core.cdi.ICDIManager;
import org.eclipse.cdt.debug.core.cdi.ICDISharedLibraryManager;
import org.eclipse.cdt.debug.core.cdi.model.ICDISharedLibrary;
-import org.eclipse.cdt.debug.core.model.ICDebugTarget;
import org.eclipse.cdt.debug.core.model.ICSharedLibrary;
import org.eclipse.cdt.debug.internal.core.model.CDebugTarget;
import org.eclipse.cdt.debug.internal.core.model.CSharedLibrary;
import org.eclipse.debug.core.DebugEvent;
import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.model.IDebugTarget;
/**
* Enter type comment.
*
* @since: Jan 16, 2003
*/
-public class CSharedLibraryManager implements ICSharedLibraryManager
+public class CSharedLibraryManager extends CUpdateManager implements ICSharedLibraryManager
{
private CDebugTarget fDebugTarget = null;
private ArrayList fSharedLibraries;
@@ -36,7 +34,7 @@ public class CSharedLibraryManager implements ICSharedLibraryManager
*/
public CSharedLibraryManager( CDebugTarget target )
{
- setDebugTarget( target );
+ super( target );
fSharedLibraries = new ArrayList( 5 );
}
@@ -103,10 +101,6 @@ public class CSharedLibraryManager implements ICSharedLibraryManager
*/
public Object getAdapter( Class adapter )
{
- if ( adapter.equals( ICUpdateManager.class ) )
- {
- return this;
- }
if ( adapter.equals( ICSharedLibraryManager.class ) )
{
return this;
@@ -115,25 +109,7 @@ public class CSharedLibraryManager implements ICSharedLibraryManager
{
return this;
}
- if ( adapter.equals( IDebugTarget.class ) )
- {
- return fDebugTarget;
- }
- if ( adapter.equals( ICDebugTarget.class ) )
- {
- return fDebugTarget;
- }
- return null;
- }
-
- public IDebugTarget getDebugTarget()
- {
- return fDebugTarget;
- }
-
- protected void setDebugTarget( CDebugTarget target )
- {
- fDebugTarget = target;
+ return super.getAdapter( adapter );
}
protected CSharedLibrary find( ICDISharedLibrary cdiLibrary )
@@ -147,49 +123,8 @@ public class CSharedLibraryManager implements ICSharedLibraryManager
}
return null;
}
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.core.ICUpdateManager#getAutoModeEnabled()
- */
- public boolean getAutoModeEnabled()
- {
- if ( getCDIManager() != null )
- {
- return getCDIManager().isAutoUpdate();
- }
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.core.ICUpdateManager#setAutoModeEnabled(boolean)
- */
- public void setAutoModeEnabled( boolean enable )
- {
- if ( getCDIManager() != null )
- {
- getCDIManager().setAutoUpdate( enable );
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.core.ICUpdateManager#update()
- */
- public void update() throws DebugException
- {
- if ( getCDIManager() != null )
- {
- try
- {
- getCDIManager().update();
- }
- catch( CDIException e )
- {
- ((CDebugTarget)getDebugTarget()).targetRequestFailed( e.toString(), null );
- }
- }
- }
- private ICDISharedLibraryManager getCDIManager()
+ protected ICDIManager getCDIManager()
{
if ( getDebugTarget() != null )
{
@@ -198,24 +133,12 @@ public class CSharedLibraryManager implements ICSharedLibraryManager
return null;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.debug.core.ICUpdateManager#canUpdate()
- */
- public boolean canUpdate()
- {
- if ( getDebugTarget() != null )
- {
- return getDebugTarget().isSuspended();
- }
- return false;
- }
-
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.ICSharedLibraryManager#loadSymbols(org.eclipse.cdt.debug.core.model.ICSharedLibrary)
*/
public void loadSymbols( ICSharedLibrary[] libraries ) throws DebugException
{
- ICDISharedLibraryManager slm = getCDIManager();
+ ICDISharedLibraryManager slm = (ICDISharedLibraryManager)getCDIManager();
if ( slm != null )
{
ArrayList cdiLibs = new ArrayList( libraries.length );
@@ -239,7 +162,7 @@ public class CSharedLibraryManager implements ICSharedLibraryManager
*/
public void loadSymbolsForAll() throws DebugException
{
- ICDISharedLibraryManager slm = getCDIManager();
+ ICDISharedLibraryManager slm = (ICDISharedLibraryManager)getCDIManager();
if ( slm != null )
{
try
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CSignalManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CSignalManager.java
index 253b506cc34..17737637d62 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CSignalManager.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CSignalManager.java
@@ -9,22 +9,21 @@ import java.util.ArrayList;
import org.eclipse.cdt.debug.core.ICSignalManager;
import org.eclipse.cdt.debug.core.cdi.CDIException;
+import org.eclipse.cdt.debug.core.cdi.ICDIManager;
import org.eclipse.cdt.debug.core.cdi.model.ICDISignal;
import org.eclipse.cdt.debug.core.model.ICSignal;
import org.eclipse.cdt.debug.internal.core.model.CDebugTarget;
import org.eclipse.cdt.debug.internal.core.model.CSignal;
import org.eclipse.debug.core.DebugEvent;
import org.eclipse.debug.core.DebugException;
-import org.eclipse.debug.core.model.IDebugTarget;
/**
* Enter type comment.
*
* @since: Jan 31, 2003
*/
-public class CSignalManager implements ICSignalManager
+public class CSignalManager extends CUpdateManager implements ICSignalManager
{
- private CDebugTarget fDebugTarget = null;
private ICSignal[] fSignals = null;
private boolean fIsDisposed = false;
@@ -33,7 +32,7 @@ public class CSignalManager implements ICSignalManager
*/
public CSignalManager( CDebugTarget target )
{
- setDebugTarget( target );
+ super( target );
}
/* (non-Javadoc)
@@ -87,21 +86,7 @@ public class CSignalManager implements ICSignalManager
{
return this;
}
- if ( adapter.equals( IDebugTarget.class ) )
- {
- return fDebugTarget;
- }
- return null;
- }
-
- public IDebugTarget getDebugTarget()
- {
- return fDebugTarget;
- }
-
- protected void setDebugTarget( CDebugTarget target )
- {
- fDebugTarget = target;
+ return super.getAdapter( adapter );
}
public void signalChanged( ICDISignal cdiSignal )
@@ -132,4 +117,13 @@ public class CSignalManager implements ICSignalManager
{
return fIsDisposed;
}
+
+ protected ICDIManager getCDIManager()
+ {
+ if ( getDebugTarget() != null )
+ {
+ return ((CDebugTarget)getDebugTarget()).getCDISession().getSignalManager();
+ }
+ return null;
+ }
}
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CUpdateManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CUpdateManager.java
new file mode 100644
index 00000000000..1a927e83b34
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CUpdateManager.java
@@ -0,0 +1,108 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+
+package org.eclipse.cdt.debug.internal.core;
+
+import org.eclipse.cdt.debug.core.ICUpdateManager;
+import org.eclipse.cdt.debug.core.cdi.CDIException;
+import org.eclipse.cdt.debug.core.cdi.ICDIManager;
+import org.eclipse.cdt.debug.core.model.ICDebugTarget;
+import org.eclipse.cdt.debug.internal.core.model.CDebugTarget;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.model.IDebugTarget;
+
+/**
+ * Enter type comment.
+ *
+ * @since Mar 31, 2003
+ */
+public abstract class CUpdateManager implements ICUpdateManager, IAdaptable
+{
+ private CDebugTarget fDebugTarget = null;
+
+ /**
+ *
+ */
+ public CUpdateManager( CDebugTarget target )
+ {
+ fDebugTarget = target;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.debug.core.ICUpdateManager#setAutoModeEnabled(boolean)
+ */
+ public void setAutoModeEnabled( boolean enable )
+ {
+ if ( getCDIManager() != null )
+ {
+ getCDIManager().setAutoUpdate( enable );
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.debug.core.ICUpdateManager#getAutoModeEnabled()
+ */
+ public boolean getAutoModeEnabled()
+ {
+ if ( getCDIManager() != null )
+ {
+ return getCDIManager().isAutoUpdate();
+ }
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.debug.core.ICUpdateManager#update()
+ */
+ public void update() throws DebugException
+ {
+ if ( getCDIManager() != null )
+ {
+ try
+ {
+ getCDIManager().update();
+ }
+ catch( CDIException e )
+ {
+ ((CDebugTarget)getDebugTarget()).targetRequestFailed( e.toString(), null );
+ }
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.debug.core.ICUpdateManager#canUpdate()
+ */
+ public boolean canUpdate()
+ {
+ if ( getDebugTarget() != null )
+ {
+ return getDebugTarget().isSuspended();
+ }
+ return false;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
+ */
+ public Object getAdapter( Class adapter )
+ {
+ if ( ICUpdateManager.class.equals( adapter ) )
+ return this;
+ if ( IDebugTarget.class.equals( adapter ) )
+ return getDebugTarget();
+ if ( ICDebugTarget.class.equals( adapter ) )
+ return getDebugTarget();
+ return null;
+ }
+
+ public CDebugTarget getDebugTarget()
+ {
+ return fDebugTarget;
+ }
+
+ abstract protected ICDIManager getCDIManager();
+}
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java
index 8da98d330bb..a089d114d89 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java
@@ -22,6 +22,7 @@ import org.eclipse.cdt.debug.core.CDebugCorePlugin;
import org.eclipse.cdt.debug.core.CDebugModel;
import org.eclipse.cdt.debug.core.ICBreakpointManager;
import org.eclipse.cdt.debug.core.ICMemoryManager;
+import org.eclipse.cdt.debug.core.ICRegisterManager;
import org.eclipse.cdt.debug.core.ICSharedLibraryManager;
import org.eclipse.cdt.debug.core.ICSignalManager;
import org.eclipse.cdt.debug.core.cdi.CDIException;
@@ -50,7 +51,6 @@ import org.eclipse.cdt.debug.core.cdi.event.ICDISuspendedEvent;
import org.eclipse.cdt.debug.core.cdi.model.ICDIBreakpoint;
import org.eclipse.cdt.debug.core.cdi.model.ICDILocationBreakpoint;
import org.eclipse.cdt.debug.core.cdi.model.ICDIObject;
-import org.eclipse.cdt.debug.core.cdi.model.ICDIRegisterObject;
import org.eclipse.cdt.debug.core.cdi.model.ICDISharedLibrary;
import org.eclipse.cdt.debug.core.cdi.model.ICDISignal;
import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
@@ -75,6 +75,7 @@ import org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocator;
import org.eclipse.cdt.debug.core.sourcelookup.ISourceMode;
import org.eclipse.cdt.debug.internal.core.CDebugUtils;
import org.eclipse.cdt.debug.internal.core.CMemoryManager;
+import org.eclipse.cdt.debug.internal.core.CRegisterManager;
import org.eclipse.cdt.debug.internal.core.CSharedLibraryManager;
import org.eclipse.cdt.debug.internal.core.CSignalManager;
import org.eclipse.cdt.debug.internal.core.ICDebugInternalConstants;
@@ -213,11 +214,6 @@ public class CDebugTarget extends CDebugElement
*/
private HashMap fBreakpoints;
- /**
- * Collection of register groups added to this target. Values are of type CRegisterGroup
.
- */
- private List fRegisterGroups;
-
/**
* A memory manager for this target.
*/
@@ -238,6 +234,11 @@ public class CDebugTarget extends CDebugElement
*/
private CSignalManager fSignalManager;
+ /**
+ * A register manager for this target.
+ */
+ private CRegisterManager fRegisterManager;
+
/**
* Whether the debugger process is default.
*/
@@ -284,6 +285,7 @@ public class CDebugTarget extends CDebugElement
setDisassemblyManager( new DisassemblyManager( this ) );
setSharedLibraryManager( new CSharedLibraryManager( this ) );
setSignalManager( new CSignalManager( this ) );
+ setRegisterManager( new CRegisterManager( this ) );
initialize();
DebugPlugin.getDefault().getLaunchManager().addLaunchListener( this );
DebugPlugin.getDefault().getExpressionManager().addExpressionListener( this );
@@ -387,8 +389,7 @@ public class CDebugTarget extends CDebugElement
protected void initializeRegisters()
{
- fRegisterGroups = new ArrayList( 20 );
- createMainRegisterGroup();
+ getRegisterManager().initialize();
}
protected void initializeMemoryManager()
@@ -931,6 +932,8 @@ public class CDebugTarget extends CDebugElement
return getSharedLibraryManager();
if ( adapter.equals( ICSignalManager.class ) )
return getSignalManager();
+ if ( adapter.equals( ICRegisterManager.class ) )
+ return getRegisterManager();
return super.getAdapter( adapter );
}
@@ -1175,7 +1178,6 @@ public class CDebugTarget extends CDebugElement
protected void cleanup()
{
removeAllThreads();
- removeAllRegisterGroups();
getCDISession().getEventManager().removeEventListener( this );
DebugPlugin.getDefault().getBreakpointManager().removeBreakpointListener( this );
DebugPlugin.getDefault().getExpressionManager().removeExpressionListener( this );
@@ -1183,6 +1185,7 @@ public class CDebugTarget extends CDebugElement
disposeMemoryManager();
disposeSharedLibraryManager();
disposeSignalManager();
+ disposeRegisterManager();
removeAllExpressions();
try
{
@@ -2017,42 +2020,6 @@ public class CDebugTarget extends CDebugElement
return isAvailable() && isSuspended();
}
- protected IRegisterGroup[] getRegisterGroups() throws DebugException
- {
- return (IRegisterGroup[])fRegisterGroups.toArray( new IRegisterGroup[fRegisterGroups.size()] );
- }
-
- protected IRegisterGroup[] getRegisterGroups( CStackFrame stackFrame ) throws DebugException
- {
- return (IRegisterGroup[])fRegisterGroups.toArray( new IRegisterGroup[fRegisterGroups.size()] );
- }
-
- protected void createMainRegisterGroup()
- {
- ICDIRegisterObject[] regObjects = null;
- try
- {
- regObjects = getCDISession().getRegisterManager().getRegisterObjects();
- }
- catch( CDIException e )
- {
- CDebugCorePlugin.log( e );
- }
- if ( regObjects != null )
- {
- fRegisterGroups.add( new CRegisterGroup( this, "Main", regObjects ) );
- }
- }
-
- protected void removeAllRegisterGroups()
- {
- Iterator it = fRegisterGroups.iterator();
- while( it.hasNext() )
- {
- ((CRegisterGroup)it.next()).dispose();
- }
- }
-
/* (non-Javadoc)
* @see org.eclipse.debug.core.IExpressionListener#expressionAdded(IExpression)
*/
@@ -2194,11 +2161,7 @@ public class CDebugTarget extends CDebugElement
protected void resetRegisters()
{
- Iterator it = fRegisterGroups.iterator();
- while( it.hasNext() )
- {
- ((CRegisterGroup)it.next()).resetChangeFlags();
- }
+ getRegisterManager().reset();
}
/**
@@ -2395,6 +2358,11 @@ public class CDebugTarget extends CDebugElement
fSignalManager.dispose();
}
+ protected void disposeRegisterManager()
+ {
+ fRegisterManager.dispose();
+ }
+
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.core.ICBreakpointManager#getBreakpointAddress(IBreakpoint)
*/
@@ -2554,4 +2522,19 @@ public class CDebugTarget extends CDebugElement
targetRequestFailed( e.toString(), e );
}
}
+
+ public CRegisterManager getRegisterManager()
+ {
+ return fRegisterManager;
+ }
+
+ protected void setRegisterManager( CRegisterManager registerManager )
+ {
+ fRegisterManager = registerManager;
+ }
+
+ public IRegisterGroup[] getRegisterGroups() throws DebugException
+ {
+ return getRegisterManager().getRegisterGroups();
+ }
}
diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CRegisterGroup.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CRegisterGroup.java
index 66a2bd954fe..ac29a9e3bbb 100644
--- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CRegisterGroup.java
+++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CRegisterGroup.java
@@ -80,7 +80,7 @@ public class CRegisterGroup extends CDebugElement implements IRegisterGroup
return fRegisters;
}
- protected void dispose()
+ public void dispose()
{
Iterator it = fRegisters.iterator();
while( it.hasNext() )
@@ -107,7 +107,7 @@ public class CRegisterGroup extends CDebugElement implements IRegisterGroup
return results;
}
- protected void resetChangeFlags()
+ public void resetChangeFlags()
{
if ( fRegisters == null )
return;