Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Implementing the 'Signals' view (core)

Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.core/ChangeLog,v
retrieving revision 1.115
diff -u -r1.115 ChangeLog
--- ChangeLog 30 Jan 2003 15:59:43 -0000 1.115
+++ ChangeLog 31 Jan 2003 22:29:36 -0000
@@ -1,3 +1,12 @@
+2003-01-31 Mikhail Khodjaiants
+ Implementing the 'Signals' view.
+ * ICSharedLibraryManager.java
+ * ICSignalManager.java: new
+ * ICSignal.java: new
+ * CSignalManager.java: new
+ * CSignal.java: new
+ * CDebugTarget.java 
+
 2003-01-30 Mikhail Khodjaiants
  Create an address breakpoint if the source locator can not find the file specified by gdb.
  * CDebugTarget.java
Index: src/org/eclipse/cdt/debug/core/ICSharedLibraryManager.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICSharedLibraryManager.java,v
retrieving revision 1.1
diff -u -r1.1 ICSharedLibraryManager.java
--- src/org/eclipse/cdt/debug/core/ICSharedLibraryManager.java 17 Jan 2003 00:15:10 -0000 1.1
+++ src/org/eclipse/cdt/debug/core/ICSharedLibraryManager.java 31 Jan 2003 22:29:36 -0000
@@ -5,7 +5,6 @@
  */
 package org.eclipse.cdt.debug.core;
 
-import org.eclipse.cdt.debug.core.cdi.model.ICDISharedLibrary;
 import org.eclipse.cdt.debug.core.model.ICSharedLibrary;
 import org.eclipse.core.runtime.IAdaptable;
 
@@ -16,12 +15,6 @@
  */
 public interface ICSharedLibraryManager extends IAdaptable
 {
- void sharedLibraryLoaded( ICDISharedLibrary library );
-
- void sharedLibraryUnloaded( ICDISharedLibrary library );

- void symbolsLoaded( ICDISharedLibrary library );
-
  ICSharedLibrary[] getSharedLibraries();
 
  void dispose();
Index: src/org/eclipse/cdt/debug/core/ICSignalManager.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/core/ICSignalManager.java
diff -N src/org/eclipse/cdt/debug/core/ICSignalManager.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/core/ICSignalManager.java 31 Jan 2003 22:29:36 -0000
@@ -0,0 +1,22 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.core;
+
+import org.eclipse.cdt.debug.core.model.ICSignal;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.debug.core.DebugException;
+
+/**
+ * Enter type comment.
+ *
+ * @since: Jan 31, 2003
+ */
+public interface ICSignalManager extends IAdaptable
+{
+ ICSignal[] getSignals() throws DebugException;
+
+ void dispose();
+}
Index: src/org/eclipse/cdt/debug/core/model/ICSignal.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/core/model/ICSignal.java
diff -N src/org/eclipse/cdt/debug/core/model/ICSignal.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/core/model/ICSignal.java 31 Jan 2003 22:29:36 -0000
@@ -0,0 +1,33 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.core.model;
+
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.model.IDebugElement;
+
+/**
+ * Enter type comment.
+ *
+ * @since: Jan 31, 2003
+ */
+public interface ICSignal extends IDebugElement
+{
+ String getName();

+ String getDescription();

+ boolean isPassEnabled();

+ boolean isStopEnabled();

+ void setPassEnabled( boolean enable ) throws DebugException;

+ void setStopEnabled( boolean enable ) throws DebugException;
+
+ void signal() throws DebugException;

+ void dispose();
+}
Index: src/org/eclipse/cdt/debug/internal/core/CSignalManager.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/internal/core/CSignalManager.java
diff -N src/org/eclipse/cdt/debug/internal/core/CSignalManager.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/internal/core/CSignalManager.java 31 Jan 2003 22:29:37 -0000
@@ -0,0 +1,113 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.internal.core;
+
+import org.eclipse.cdt.debug.core.ICSignalManager;
+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
+{
+ private CDebugTarget fDebugTarget = null;
+ private ICSignal[] fSignals = null;
+
+ /**
+  * Constructor for CSignalManager.
+  */
+ public CSignalManager( CDebugTarget target )
+ {
+  setDebugTarget( target );
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.cdt.debug.core.ICSignalManager#getSignals()
+  */
+ public ICSignal[] getSignals() throws DebugException
+ {
+  if ( fSignals == null )
+  {
+   // load signals from target
+  }
+  return ( fSignals != null ) ? fSignals : new ICSignal[0];
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.cdt.debug.core.ICSignalManager#dispose()
+  */
+ public void dispose()
+ {
+  if ( fSignals != null )
+  for ( int i = 0; i < fSignals.length; ++i )
+  {
+   fSignals[i].dispose();
+  }
+  fSignals = null;
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.core.runtime.IAdaptable#getAdapter(Class)
+  */
+ public Object getAdapter( Class adapter )
+ {
+  if ( adapter.equals( ICSignalManager.class ) )
+  {
+   return this;
+  }
+  if ( adapter.equals( CSignalManager.class ) )
+  {
+   return this;
+  }
+  if ( adapter.equals( IDebugTarget.class ) )
+  {
+   return fDebugTarget;
+  }
+  return null;
+ }
+
+ public IDebugTarget getDebugTarget()
+ {
+  return fDebugTarget;
+ }

+ protected void setDebugTarget( CDebugTarget target )
+ {
+  fDebugTarget = target;
+ }

+ public void signalChanged( ICDISignal cdiSignal )
+ {
+  CSignal signal = find( cdiSignal );
+  if ( signal != null )
+  {
+   signal.fireChangeEvent( DebugEvent.STATE );
+  }
+ }
+
+ private CSignal find( ICDISignal cdiSignal )
+ {
+  try
+  {
+   ICSignal[] signals = getSignals();
+   for ( int i = 0; i < signals.length; ++i )
+    if ( signals[i].getName().equals( cdiSignal.getName() ) )
+     return (CSignal)signals[i];
+  }
+  catch( DebugException e )
+  {
+  }
+  return null;
+ }
+}
Index: src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java,v
retrieving revision 1.78
diff -u -r1.78 CDebugTarget.java
--- src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java 30 Jan 2003 15:59:43 -0000 1.78
+++ src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java 31 Jan 2003 22:29:37 -0000
@@ -22,6 +22,7 @@
 import org.eclipse.cdt.debug.core.ICBreakpointManager;
 import org.eclipse.cdt.debug.core.ICMemoryManager;
 import org.eclipse.cdt.debug.core.ICSharedLibraryManager;
+import org.eclipse.cdt.debug.core.ICSignalManager;
 import org.eclipse.cdt.debug.core.cdi.CDIException;
 import org.eclipse.cdt.debug.core.cdi.ICDIBreakpointHit;
 import org.eclipse.cdt.debug.core.cdi.ICDIBreakpointManager;
@@ -51,6 +52,7 @@
 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;
 import org.eclipse.cdt.debug.core.cdi.model.ICDIThread;
 import org.eclipse.cdt.debug.core.cdi.model.ICDIWatchpoint;
@@ -73,6 +75,7 @@
 import org.eclipse.cdt.debug.internal.core.CDebugUtils;
 import org.eclipse.cdt.debug.internal.core.CMemoryManager;
 import org.eclipse.cdt.debug.internal.core.CSharedLibraryManager;
+import org.eclipse.cdt.debug.internal.core.CSignalManager;
 import org.eclipse.cdt.debug.internal.core.ICDebugInternalConstants;
 import org.eclipse.cdt.debug.internal.core.breakpoints.CBreakpoint;
 import org.eclipse.cdt.debug.internal.core.sourcelookup.CSourceManager;
@@ -228,6 +231,11 @@
  private CSharedLibraryManager fSharedLibraryManager;
 
  /**
+  * A signal manager for this target.
+  */
+ private CSignalManager fSignalManager;
+
+ /**
   * Whether the debugger process is default.
   */
  private boolean fIsDebuggerProcessDefault = false;
@@ -272,6 +280,7 @@
   setThreadList( new ArrayList( 5 ) );
   setDisassemblyManager( new DisassemblyManager( this ) );
   setSharedLibraryManager( new CSharedLibraryManager( this ) );
+  setSignalManager( new CSignalManager( this ) );
   initialize();
   DebugPlugin.getDefault().getLaunchManager().addLaunchListener( this );
   DebugPlugin.getDefault().getExpressionManager().addExpressionListener( this );
@@ -877,9 +886,11 @@
   if ( adapter.equals( ICBreakpointManager.class ) )
    return this;
   if ( adapter.equals( DisassemblyManager.class ) )
-   return fDisassemblyManager;
+   return getDisassemblyManager();
   if ( adapter.equals( ICSharedLibraryManager.class ) )
-   return fSharedLibraryManager;
+   return getSharedLibraryManager();
+  if ( adapter.equals( ICSignalManager.class ) )
+   return getSignalManager();
   return super.getAdapter( adapter );
  }
  
@@ -969,6 +980,10 @@
     {
      getSharedLibraryManager().symbolsLoaded( (ICDISharedLibrary)source );
     }
+    if ( source instanceof ICDISignal )
+    {
+     getSignalManager().signalChanged( (ICDISignal)source );
+    }
     if ( source instanceof ICDIBreakpoint )
     {
      handleBreakpointChangedEvent( (ICDIBreakpoint)source );
@@ -1127,6 +1142,7 @@
   DebugPlugin.getDefault().getLaunchManager().removeLaunchListener( this );
   disposeMemoryManager();
   disposeSharedLibraryManager();
+  disposeSignalManager();
   removeAllExpressions();
   try
   {
@@ -2326,6 +2342,21 @@
  protected void disposeSharedLibraryManager()
  {
   fSharedLibraryManager.dispose();
+ }
+
+ protected void setSignalManager( CSignalManager sm )
+ {
+  fSignalManager = sm;
+ }

+ protected CSignalManager getSignalManager()
+ {
+  return fSignalManager;
+ }
+
+ protected void disposeSignalManager()
+ {
+  fSignalManager.dispose();
  }
 
  /* (non-Javadoc)
Index: src/org/eclipse/cdt/debug/internal/core/model/CSignal.java
===================================================================
RCS file: src/org/eclipse/cdt/debug/internal/core/model/CSignal.java
diff -N src/org/eclipse/cdt/debug/internal/core/model/CSignal.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ src/org/eclipse/cdt/debug/internal/core/model/CSignal.java 31 Jan 2003 22:29:37 -0000
@@ -0,0 +1,101 @@
+/*
+ *(c) Copyright QNX Software Systems Ltd. 2002.
+ * All Rights Reserved.
+ *
+ */
+package org.eclipse.cdt.debug.internal.core.model;
+
+import org.eclipse.cdt.debug.core.cdi.event.ICDIEvent;
+import org.eclipse.cdt.debug.core.cdi.event.ICDIEventListener;
+import org.eclipse.cdt.debug.core.cdi.model.ICDISignal;
+import org.eclipse.cdt.debug.core.model.ICSignal;
+import org.eclipse.debug.core.DebugException;
+
+/**
+ * Enter type comment.
+ *
+ * @since: Jan 31, 2003
+ */
+public class CSignal extends CDebugElement implements ICSignal, ICDIEventListener
+{
+ private ICDISignal fCDISignal;
+
+ /**
+  * Constructor for CSignal.
+  * @param target
+  */
+ public CSignal( CDebugTarget target, ICDISignal cdiSignal )
+ {
+  super( target );
+  fCDISignal = cdiSignal;
+  getCDISession().getEventManager().addEventListener( this );
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.cdt.debug.core.model.ICSignal#getDescription()
+  */
+ public String getDescription()
+ {
+  return "";
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.cdt.debug.core.model.ICSignal#getName()
+  */
+ public String getName()
+ {
+  return "";
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.cdt.debug.core.model.ICSignal#isPassEnabled()
+  */
+ public boolean isPassEnabled()
+ {
+  return false;
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.cdt.debug.core.model.ICSignal#isStopEnabled()
+  */
+ public boolean isStopEnabled()
+ {
+  return false;
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.cdt.debug.core.model.ICSignal#setPassEnabled(boolean)
+  */
+ public void setPassEnabled( boolean enable ) throws DebugException
+ {
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.cdt.debug.core.model.ICSignal#setStopEnabled(boolean)
+  */
+ public void setStopEnabled( boolean enable ) throws DebugException
+ {
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.cdt.debug.core.cdi.event.ICDIEventListener#handleDebugEvent(ICDIEvent)
+  */
+ public void handleDebugEvent( ICDIEvent event )
+ {
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.cdt.debug.core.model.ICSignal#dispose()
+  */
+ public void dispose()
+ {
+  getCDISession().getEventManager().removeEventListener( this );
+ }
+
+ /* (non-Javadoc)
+  * @see org.eclipse.cdt.debug.core.model.ICSignal#signal()
+  */
+ public void signal() throws DebugException
+ {
+ }
+}

Back to the top