Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikhail Khodjaiants2006-05-17 22:04:57 +0000
committerMikhail Khodjaiants2006-05-17 22:04:57 +0000
commitf9fa5b5f7f558881f1507316fc18fcbbc9fac7a2 (patch)
tree24439f29bbc56fbb3754e0ccc61d1a465fcea816 /launch/org.eclipse.cdt.launch
parentf47d98447d6b305ada2041394f41760b314fd4bd (diff)
downloadorg.eclipse.cdt-f9fa5b5f7f558881f1507316fc18fcbbc9fac7a2.tar.gz
org.eclipse.cdt-f9fa5b5f7f558881f1507316fc18fcbbc9fac7a2.tar.xz
org.eclipse.cdt-f9fa5b5f7f558881f1507316fc18fcbbc9fac7a2.zip
Moved the new static methods from AbstractCLaunchDelegate to the new utility class.
Diffstat (limited to 'launch/org.eclipse.cdt.launch')
-rw-r--r--launch/org.eclipse.cdt.launch/ChangeLog5
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate.java112
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/LaunchUtils.java141
3 files changed, 151 insertions, 107 deletions
diff --git a/launch/org.eclipse.cdt.launch/ChangeLog b/launch/org.eclipse.cdt.launch/ChangeLog
index 0745e0a8648..5f0880c3f94 100644
--- a/launch/org.eclipse.cdt.launch/ChangeLog
+++ b/launch/org.eclipse.cdt.launch/ChangeLog
@@ -1,3 +1,8 @@
+2006-05-17 Mikhail Khodjaiants
+ Moved the new static methods from AbstractCLaunchDelegate to the new utility class.
+ * AbstractCLaunchDelegate.java
+ + LaunchUtils.java
+
2006-04-03 Mikhail Khodjaiants
Fix for bug 134581: Unable to set advanced debugger options.
* CDebuggerTab.java
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate.java
index 84452738831..58f5b77c03d 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate.java
@@ -53,8 +53,6 @@ import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
-import org.eclipse.core.variables.IStringVariableManager;
-import org.eclipse.core.variables.VariablesPlugin;
import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.ILaunch;
import org.eclipse.debug.core.ILaunchConfiguration;
@@ -127,7 +125,7 @@ abstract public class AbstractCLaunchDelegate extends LaunchConfigurationDelegat
protected IPath getWorkingDirectoryPath(ILaunchConfiguration config) throws CoreException {
String location = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_WORKING_DIRECTORY, (String)null);
if (location != null) {
- String expandedLocation = getStringVariableManager().performStringSubstitution(location);
+ String expandedLocation = LaunchUtils.getStringVariableManager().performStringSubstitution(location);
if (expandedLocation.length() > 0) {
return new Path(expandedLocation);
}
@@ -191,10 +189,6 @@ abstract public class AbstractCLaunchDelegate extends LaunchConfigurationDelegat
return new Path(path);
}
- private static IStringVariableManager getStringVariableManager() {
- return VariablesPlugin.getDefault().getStringVariableManager();
- }
-
/**
* @param launch
* @param config
@@ -249,29 +243,16 @@ abstract public class AbstractCLaunchDelegate extends LaunchConfigurationDelegat
* @return the program arguments as a String
*/
public static String getProgramArguments(ILaunchConfiguration config) throws CoreException {
- String args = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, (String)null);
- if (args != null) {
- args = getStringVariableManager().performStringSubstitution(args);
- }
- return args;
-
+ return LaunchUtils.getProgramArguments(config);
}
+
/**
* Returns the program arguments as an array of individual arguments.
*
* @return the program arguments as an array of individual arguments
*/
- public static String[] getProgramArgumentsArray(ILaunchConfiguration config) throws CoreException {
- return parseArguments(getProgramArguments(config));
- }
-
- private static String[] parseArguments(String args) {
- if (args == null)
- return new String[0];
- ArgumentParser parser = new ArgumentParser(args);
- String[] res = parser.parseArguments();
-
- return res;
+ public String[] getProgramArgumentsArray(ILaunchConfiguration config) throws CoreException {
+ return LaunchUtils.getProgramArgumentsArray(config);
}
protected ICDebugConfiguration getDebugConfig(ILaunchConfiguration config) throws CoreException {
@@ -446,89 +427,6 @@ abstract public class AbstractCLaunchDelegate extends LaunchConfigurationDelegat
return null;
}
- private static class ArgumentParser {
-
- private String fArgs;
- private int fIndex = 0;
- private int ch = -1;
-
- public ArgumentParser(String args) {
- fArgs = args;
- }
-
- public String[] parseArguments() {
- ArrayList v = new ArrayList();
-
- ch = getNext();
- while (ch > 0) {
- while (Character.isWhitespace((char)ch))
- ch = getNext();
-
- if (ch == '"') {
- v.add(parseString());
- } else {
- v.add(parseToken());
- }
- }
-
- String[] result = new String[v.size()];
- v.toArray(result);
- return result;
- }
-
- private int getNext() {
- if (fIndex < fArgs.length())
- return fArgs.charAt(fIndex++);
- return -1;
- }
-
- private String parseString() {
- StringBuffer buf = new StringBuffer();
- ch = getNext();
- while (ch > 0 && ch != '"') {
- if (ch == '\\') {
- ch = getNext();
- if (ch != '"') { // Only escape double quotes
- buf.append('\\');
- }
- }
- if (ch > 0) {
- buf.append((char)ch);
- ch = getNext();
- }
- }
-
- ch = getNext();
-
- return buf.toString();
- }
-
- private String parseToken() {
- StringBuffer buf = new StringBuffer();
-
- while (ch > 0 && !Character.isWhitespace((char)ch)) {
- if (ch == '\\') {
- ch = getNext();
- if (ch > 0) {
- if (ch != '"') { // Only escape double quotes
- buf.append('\\');
- }
- buf.append((char)ch);
- ch = getNext();
- } else if (ch == -1) { // Don't lose a trailing backslash
- buf.append('\\');
- }
- } else if (ch == '"') {
- buf.append(parseString());
- } else {
- buf.append((char)ch);
- ch = getNext();
- }
- }
- return buf.toString();
- }
- }
-
/**
* Recursively creates a set of projects referenced by the current project
*
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/LaunchUtils.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/LaunchUtils.java
new file mode 100644
index 00000000000..9a69b2442a8
--- /dev/null
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/LaunchUtils.java
@@ -0,0 +1,141 @@
+/*******************************************************************************
+ * Copyright (c) 2004 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.launch;
+
+import java.util.ArrayList;
+import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.variables.IStringVariableManager;
+import org.eclipse.core.variables.VariablesPlugin;
+import org.eclipse.debug.core.ILaunchConfiguration;
+
+/**
+ * Utility methods.
+ */
+public class LaunchUtils {
+
+ private static class ArgumentParser {
+
+ private String fArgs;
+
+ private int fIndex = 0;
+
+ private int ch = -1;
+
+ public ArgumentParser( String args ) {
+ fArgs = args;
+ }
+
+ public String[] parseArguments() {
+ ArrayList v = new ArrayList();
+ ch = getNext();
+ while( ch > 0 ) {
+ while( Character.isWhitespace( (char)ch ) )
+ ch = getNext();
+ if ( ch == '"' ) {
+ v.add( parseString() );
+ }
+ else {
+ v.add( parseToken() );
+ }
+ }
+ String[] result = new String[v.size()];
+ v.toArray( result );
+ return result;
+ }
+
+ private int getNext() {
+ if ( fIndex < fArgs.length() )
+ return fArgs.charAt( fIndex++ );
+ return -1;
+ }
+
+ private String parseString() {
+ StringBuffer buf = new StringBuffer();
+ ch = getNext();
+ while( ch > 0 && ch != '"' ) {
+ if ( ch == '\\' ) {
+ ch = getNext();
+ if ( ch != '"' ) { // Only escape double quotes
+ buf.append( '\\' );
+ }
+ }
+ if ( ch > 0 ) {
+ buf.append( (char)ch );
+ ch = getNext();
+ }
+ }
+ ch = getNext();
+ return buf.toString();
+ }
+
+ private String parseToken() {
+ StringBuffer buf = new StringBuffer();
+ while( ch > 0 && !Character.isWhitespace( (char)ch ) ) {
+ if ( ch == '\\' ) {
+ ch = getNext();
+ if ( ch > 0 ) {
+ if ( ch != '"' ) { // Only escape double quotes
+ buf.append( '\\' );
+ }
+ buf.append( (char)ch );
+ ch = getNext();
+ }
+ else if ( ch == -1 ) { // Don't lose a trailing backslash
+ buf.append( '\\' );
+ }
+ }
+ else if ( ch == '"' ) {
+ buf.append( parseString() );
+ }
+ else {
+ buf.append( (char)ch );
+ ch = getNext();
+ }
+ }
+ return buf.toString();
+ }
+ }
+
+ /**
+ * For given launch configuration returns the program arguments as
+ * an array of individual arguments.
+ */
+ public static String[] getProgramArgumentsArray( ILaunchConfiguration config ) throws CoreException {
+ return parseArguments( getProgramArguments( config ) );
+ }
+
+ /**
+ * Returns the program arguments as a String.
+ */
+ public static String getProgramArguments(ILaunchConfiguration config) throws CoreException {
+ String args = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, (String)null);
+ if (args != null) {
+ args = getStringVariableManager().performStringSubstitution(args);
+ }
+ return args;
+ }
+
+ /**
+ * Convenience method.
+ */
+ public static IStringVariableManager getStringVariableManager() {
+ return VariablesPlugin.getDefault().getStringVariableManager();
+ }
+
+ private static String[] parseArguments( String args ) {
+ if ( args == null )
+ return new String[0];
+ ArgumentParser parser = new ArgumentParser( args );
+ String[] res = parser.parseArguments();
+ return res;
+ }
+}

Back to the top