diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICDebugConfiguration.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICDebugConfiguration.java index 1c383eb772c..03ee81ff06c 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICDebugConfiguration.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICDebugConfiguration.java @@ -11,4 +11,5 @@ public interface ICDebugConfiguration { public String getName(); public String getID(); public String[] getPlatforms(); + public boolean supportsMode(String mode); } diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICDebugger.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICDebugger.java index 8fa7326b8e2..aa1f46376c6 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICDebugger.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICDebugger.java @@ -7,10 +7,11 @@ package org.eclipse.cdt.debug.core; import org.eclipse.cdt.debug.core.cdi.CDIException; import org.eclipse.cdt.debug.core.cdi.ICDISession; import org.eclipse.core.resources.IFile; +import org.eclipse.core.runtime.IPath; import org.eclipse.debug.core.ILaunchConfiguration; public interface ICDebugger { public ICDISession createLaunchSession(ILaunchConfiguration config, IFile exe) throws CDIException ; public ICDISession createAttachSession(ILaunchConfiguration config, IFile exe, int pid) throws CDIException; - public ICDISession createCoreSession(ILaunchConfiguration config, IFile exe, IFile corefile) throws CDIException; + public ICDISession createCoreSession(ILaunchConfiguration config, IFile exe, IPath corefile) throws CDIException; } diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/DebugConfiguration.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/DebugConfiguration.java index a3d3926ca99..81f4c743c53 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/DebugConfiguration.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/DebugConfiguration.java @@ -4,6 +4,8 @@ */ package org.eclipse.cdt.debug.internal.core; +import java.util.HashSet; +import java.util.Set; import java.util.StringTokenizer; import org.eclipse.cdt.debug.core.ICDebugConfiguration; @@ -12,11 +14,11 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; public class DebugConfiguration implements ICDebugConfiguration { - /** * The configuration element of the extension. */ private IConfigurationElement fElement; + private HashSet fModes; public DebugConfiguration(IConfigurationElement element) { fElement = element; @@ -50,8 +52,30 @@ public class DebugConfiguration implements ICDebugConfiguration { platforms[i] = stoken.nextToken(); } return platforms; + } + + public boolean supportsMode(String mode) { + return getModes().contains(mode); + } - + /** + * Returns the set of modes specified in the configuration data. + * + * @return the set of modes specified in the configuration data + */ + protected Set getModes() { + if (fModes == null) { + String modes= getConfigurationElement().getAttribute("modes"); //$NON-NLS-1$ + if (modes == null) { + return new HashSet(0); + } + StringTokenizer tokenizer= new StringTokenizer(modes, ","); //$NON-NLS-1$ + fModes = new HashSet(tokenizer.countTokens()); + while (tokenizer.hasMoreTokens()) { + fModes.add(tokenizer.nextToken().trim()); + } + } + return fModes; } }