Index:
ChangeLog =================================================================== RCS
file: /home/tools/org.eclipse.cdt.debug.core/ChangeLog,v retrieving revision
1.100 diff -u -r1.100 ChangeLog --- ChangeLog 16 Jan 2003 20:15:18
-0000 1.100 +++ ChangeLog 17 Jan 2003 00:08:29 -0000 @@ -1,4
+1,13 @@ 2003-01-16 Mikhail Khodjaiants + Implementing the
Shared Libraries view. + * ICSharedLibrary.java + *
ICSharedLibraryManager.java + * CDebugElement.java + *
CDebugTarget.java + * CSharedLibrary.java + *
CSharedLibraryManager.java + +2003-01-16 Mikhail
Khodjaiants * ICDILoadedEvent.java:
Removed. 2003-01-16 Alain Magloire Index:
src/org/eclipse/cdt/debug/core/ICSharedLibraryManager.java =================================================================== RCS
file: src/org/eclipse/cdt/debug/core/ICSharedLibraryManager.java diff -N
src/org/eclipse/cdt/debug/core/ICSharedLibraryManager.java ---
/dev/null 1 Jan 1970 00:00:00 -0000 +++
src/org/eclipse/cdt/debug/core/ICSharedLibraryManager.java 17 Jan 2003
00:08:29 -0000 @@ -0,0 +1,28 @@ +/* + *(c) Copyright QNX Software
Systems Ltd. 2002. + * All Rights Reserved. + * + */ +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; + +/** + * Enter type
comment. + * + * @since: Jan 15, 2003 + */ +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/model/ICSharedLibrary.java =================================================================== RCS
file: src/org/eclipse/cdt/debug/core/model/ICSharedLibrary.java diff -N
src/org/eclipse/cdt/debug/core/model/ICSharedLibrary.java ---
/dev/null 1 Jan 1970 00:00:00 -0000 +++
src/org/eclipse/cdt/debug/core/model/ICSharedLibrary.java 17 Jan 2003
00:08:29 -0000 @@ -0,0 +1,54 @@ +/* + *(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 15, 2003 + */ +public interface
ICSharedLibrary extends IDebugElement +{ + /** + * Returns
the name of shared library file. + * + * @return the name of
shared library file + */ + String
getFileName(); + + /** + * Returns the start address
of this library. + * + * @return the start address of this
library + */ + long
getStartAddress(); + + /** + * Returns the end address of
this library. + * + * @return the end address of this
library + */ + long
getEndAddress(); + + /** + * Returns whether the symbols of
this library are read. + * + * @return whether the symbols of
this library are read + */ + boolean
areSymbolsLoaded(); + + /** + * Loads the library
symbols. + * + * @throws DebugException if this method
fails. Reasons include: + */ + void loadSymbols() throws
DebugException; + + void dispose(); +} Index:
src/org/eclipse/cdt/debug/internal/core/CSharedLibraryManager.java =================================================================== RCS
file: src/org/eclipse/cdt/debug/internal/core/CSharedLibraryManager.java diff
-N src/org/eclipse/cdt/debug/internal/core/CSharedLibraryManager.java ---
/dev/null 1 Jan 1970 00:00:00 -0000 +++
src/org/eclipse/cdt/debug/internal/core/CSharedLibraryManager.java 17 Jan
2003 00:08:29 -0000 @@ -0,0 +1,136 @@ +/* + *(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
org.eclipse.cdt.debug.core.ICSharedLibraryManager; +import
org.eclipse.cdt.debug.core.cdi.model.ICDISharedLibrary; +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.model.IDebugTarget; + +/** + * Enter type
comment. + * + * @since: Jan 16, 2003 + */ +public class
CSharedLibraryManager implements ICSharedLibraryManager +{ + private
CDebugTarget fDebugTarget = null; + private ArrayList
fSharedLibraries; + + /** + * Constructor for
CSharedLibraryManager. + */ + public CSharedLibraryManager(
CDebugTarget target ) + { + setDebugTarget( target
); + fSharedLibraries = new ArrayList( 5
); + } + + /* (non-Javadoc) + * @see
org.eclipse.cdt.debug.core.ICSharedLibraryManager#sharedLibararyLoaded(ICDISharedLibrary) +
*/ + public synchronized void sharedLibraryLoaded( ICDISharedLibrary
cdiLibrary ) + { + CSharedLibrary library = new
CSharedLibrary( fDebugTarget, cdiLibrary
); + fSharedLibraries.add( library
); + library.fireCreationEvent(); + } + + /*
(non-Javadoc) + * @see
org.eclipse.cdt.debug.core.ICSharedLibraryManager#sharedLibraryUnloaded(ICDISharedLibrary) +
*/ + public synchronized void sharedLibraryUnloaded( ICDISharedLibrary
cdiLibrary ) + { + CSharedLibrary library = find(
cdiLibrary ); + if ( library != null
) + { + fSharedLibraries.remove( library
); + library.dispose(); + library.fireTerminateEvent(); + } + } + + /*
(non-Javadoc) + * @see
org.eclipse.cdt.debug.core.ICSharedLibraryManager#symbolsLoaded(ICDISharedLibrary) +
*/ + public void symbolsLoaded( ICDISharedLibrary cdiLibrary
) + { + CSharedLibrary library = find( cdiLibrary
); + if ( library != null
) + { + library.fireChangeEvent(
DebugEvent.STATE ); + } + } + + /*
(non-Javadoc) + * @see
org.eclipse.cdt.debug.core.ICSharedLibraryManager#getSharedLibraries() +
*/ + public ICSharedLibrary[]
getSharedLibraries() + { + return
(ICSharedLibrary[])fSharedLibraries.toArray( new
ICSharedLibrary[fSharedLibraries.size()] ); + } + + /*
(non-Javadoc) + * @see
org.eclipse.cdt.debug.core.ICSharedLibraryManager#dispose() +
*/ + public void dispose() + { + Iterator it =
fSharedLibraries.iterator(); + while( it.hasNext()
) + { + ((ICSharedLibrary)it.next()).dispose(); + } + fSharedLibraries.clear(); + } + + /*
(non-Javadoc) + * @see
org.eclipse.core.runtime.IAdaptable#getAdapter(Class) +
*/ + public Object getAdapter( Class adapter
) + { + if ( adapter.equals( ICSharedLibraryManager.class
) ) + { + return
this; + } + if ( adapter.equals(
CSharedLibraryManager.class ) ) + { + return
this; + } + if ( adapter.equals( IDebugTarget.class
) ) + { + return
fDebugTarget; + } + return
null; + } + + public IDebugTarget
getDebugTarget() + { + return
fDebugTarget; + } + + protected void setDebugTarget(
CDebugTarget target ) + { + fDebugTarget =
target; + } + + protected CSharedLibrary find(
ICDISharedLibrary cdiLibrary ) + { + Iterator it =
fSharedLibraries.iterator(); + while( it.hasNext()
) + { + CSharedLibrary library =
(CSharedLibrary)it.next(); + if (
library.getCDISharedLibrary().equals( cdiLibrary )
) + return
library; + } + return
null; + } +} Index:
src/org/eclipse/cdt/debug/internal/core/model/CDebugElement.java =================================================================== RCS
file:
/home/tools/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugElement.java,v retrieving
revision 1.5 diff -u -r1.5 CDebugElement.java ---
src/org/eclipse/cdt/debug/internal/core/model/CDebugElement.java 2 Dec 2002
23:22:22 -0000 1.5 +++
src/org/eclipse/cdt/debug/internal/core/model/CDebugElement.java 17 Jan
2003 00:08:29 -0000 @@ -123,7 +123,7 @@ /** *
Fires a debug event marking the creation of this element.
*/ - protected void fireCreationEvent() + public void
fireCreationEvent() { fireEvent( new
DebugEvent( this, DebugEvent.CREATE ) ); } 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.69 diff -u -r1.69 CDebugTarget.java ---
src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java 16 Jan 2003
20:15:18 -0000 1.69 +++
src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java 17 Jan 2003
00:08:30 -0000 @@ -20,6 +20,7 @@ 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.ICSharedLibraryManager; import
org.eclipse.cdt.debug.core.cdi.CDIException; import
org.eclipse.cdt.debug.core.cdi.ICDIBreakpointHit; import
org.eclipse.cdt.debug.core.cdi.ICDIBreakpointManager; @@ -48,6 +49,7
@@ 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.ICDISharedLibrary; 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; @@ -69,6 +71,7
@@ 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.CSharedLibraryManager; 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; @@ -219,6
+222,11 @@ private DisassemblyManager
fDisassemblyManager; /** + * A shared library
manager for this target. + */ + private CSharedLibraryManager
fSharedLibraryManager; + + /** * Whether the debugger
process is default. */ private boolean
fIsDebuggerProcessDefault = false; @@ -256,6 +264,7
@@ fSupportsDisconnect = allowsDisconnect &
getConfiguration().supportsDisconnect(); setThreadList( new
ArrayList( 5 ) ); setDisassemblyManager( new
DisassemblyManager( this ) ); + setSharedLibraryManager( new
CSharedLibraryManager( this )
); initialize(); DebugPlugin.getDefault().getLaunchManager().addLaunchListener(
this
); DebugPlugin.getDefault().getExpressionManager().addExpressionListener(
this ); @@ -867,6 +876,8 @@ return
this; if ( adapter.equals( DisassemblyManager.class )
) return fDisassemblyManager; + if (
adapter.equals( ICSharedLibraryManager.class ) ) + return
fSharedLibraryManager; return super.getAdapter( adapter
); } @@ -888,6 +899,10
@@ { handleThreadCreatedEvent(
(ICDICreatedEvent)event
); } + if ( source
instanceof ICDISharedLibrary
) + { + getSharedLibraryManager().sharedLibraryLoaded(
(ICDISharedLibrary)source
); + } } else
if ( event instanceof ICDISuspendedEvent ) { @@
-916,6 +931,10
@@ { handleThreadTerminatedEvent(
(ICDIDestroyedEvent)event
); } + if ( source
instanceof ICDISharedLibrary
) + { + getSharedLibraryManager().sharedLibraryUnloaded(
(ICDISharedLibrary)source
); + } } else
if ( event instanceof ICDIDisconnectedEvent ) { @@
-930,6 +949,10
@@ { handleChangedEvent(
(ICDIChangedEvent)event
); } + if ( source
instanceof ICDISharedLibrary
) + { + getSharedLibraryManager().symbolsLoaded(
(ICDISharedLibrary)source
); + } } else
if ( event instanceof ICDIRestartedEvent ) { @@
-1083,6 +1106,7
@@ DebugPlugin.getDefault().getExpressionManager().removeExpressionListener(
this
); DebugPlugin.getDefault().getLaunchManager().removeLaunchListener(
this
); disposeMemoryManager(); + disposeSharedLibraryManager(); removeAllExpressions(); try { @@
-2074,6 +2098,21 @@ protected DisassemblyManager
getDisassemblyManager() { return
fDisassemblyManager; + } + + protected void
setSharedLibraryManager( CSharedLibraryManager libman
) + { + fSharedLibraryManager =
libman; + } + + protected CSharedLibraryManager
getSharedLibraryManager() + { + return
fSharedLibraryManager; + } + + protected void
disposeSharedLibraryManager() + { + fSharedLibraryManager.dispose(); } /*
(non-Javadoc) Index:
src/org/eclipse/cdt/debug/internal/core/model/CSharedLibrary.java =================================================================== RCS
file: src/org/eclipse/cdt/debug/internal/core/model/CSharedLibrary.java diff
-N src/org/eclipse/cdt/debug/internal/core/model/CSharedLibrary.java ---
/dev/null 1 Jan 1970 00:00:00 -0000 +++
src/org/eclipse/cdt/debug/internal/core/model/CSharedLibrary.java 17 Jan
2003 00:08:29 -0000 @@ -0,0 +1,112 @@ +/* + *(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.CDIException; +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.ICDISharedLibrary; +import
org.eclipse.cdt.debug.core.model.ICSharedLibrary; +import
org.eclipse.debug.core.DebugException; + +/** + * Enter type
comment. + * + * @since: Jan 16, 2003 + */ +public class
CSharedLibrary extends CDebugElement
+ implements
ICSharedLibrary, +
ICDIEventListener +{ + private ICDISharedLibrary
fCDILib = null; + + /** + * Constructor for
CSharedLibrary. + * @param target + */ + public
CSharedLibrary( CDebugTarget target, ICDISharedLibrary cdiLib
) + { + super( target ); + fCDILib =
cdiLib; + getCDISession().getEventManager().addEventListener( this
); + } + + /* (non-Javadoc) + * @see
org.eclipse.cdt.debug.core.model.ICSharedLibrary#getFileName() +
*/ + public String getFileName() + { + if (
getCDISharedLibrary() != null ) + return
getCDISharedLibrary().getFileName(); + return
null; + } + + /* (non-Javadoc) + * @see
org.eclipse.cdt.debug.core.model.ICSharedLibrary#getStartAddress() +
*/ + public long getStartAddress() + { + if (
getCDISharedLibrary() != null ) + return
getCDISharedLibrary().getStartAddress(); + return
0; + } + + /* (non-Javadoc) + * @see
org.eclipse.cdt.debug.core.model.ICSharedLibrary#getEndAddress() +
*/ + public long getEndAddress() + { + if (
getCDISharedLibrary() != null ) + return
getCDISharedLibrary().getEndAddress(); + return
0; + } + + /* (non-Javadoc) + * @see
org.eclipse.cdt.debug.core.model.ICSharedLibrary#areSymbolsLoaded() +
*/ + public boolean areSymbolsLoaded() + { + if (
getCDISharedLibrary() != null ) + return
getCDISharedLibrary().areSymbolsLoaded(); + return
false; + } + + /* (non-Javadoc) + * @see
org.eclipse.cdt.debug.core.model.ICSharedLibrary#loadSymbols() +
*/ + public void loadSymbols() throws
DebugException + { + try + { + if
( getCDISharedLibrary() != null
) + getCDISharedLibrary().loadSymbols(); + } + catch(
CDIException e ) + { + targetRequestFailed(
e.getMessage(), null ); + } + } + + /*
(non-Javadoc) + * @see
org.eclipse.cdt.debug.core.model.ICSharedLibrary#dispose() +
*/ + public void
dispose() + { + getCDISession().getEventManager().removeEventListener(
this ); + } + + public ICDISharedLibrary
getCDISharedLibrary() + { + return
fCDILib; + } + + /* (non-Javadoc) + * @see
org.eclipse.cdt.debug.core.cdi.event.ICDIEventListener#handleDebugEvent(ICDIEvent) +
*/ + public void handleDebugEvent( ICDIEvent event
) + { + } +}
|