blob: ef2392876ce464af2c4fe5b6f941c28ef31866b2 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
/*******************************************************************************
* Copyright (c) 2000, 2004 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* QNX Software Systems - Initial API and implementation
*******************************************************************************/
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;
import org.eclipse.cdt.debug.core.ICDebugger;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.Platform;
public class DebugConfiguration implements ICDebugConfiguration {
/**
* The configuration element of the extension.
*/
private IConfigurationElement fElement;
private HashSet fModes;
private HashSet fCPUs;
public DebugConfiguration(IConfigurationElement element) {
fElement = element;
}
private IConfigurationElement getConfigurationElement() {
return fElement;
}
public ICDebugger getDebugger() throws CoreException {
return (ICDebugger) getConfigurationElement().createExecutableExtension("class"); //$NON-NLS-1$
}
public String getName() {
String name = getConfigurationElement().getAttribute("name"); //$NON-NLS-1$
return name != null ? name : ""; //$NON-NLS-1$
}
public String getID() {
return getConfigurationElement().getAttribute("id"); //$NON-NLS-1$
}
public String getPlatform() {
String platform = getConfigurationElement().getAttribute("platform"); //$NON-NLS-1$
if (platform == null) {
return "*"; //$NON-NLS-1$
}
return platform;
}
public String[] getCPUList() {
return (String[]) getCPUs().toArray(new String[0]);
}
public String[] getModeList() {
return (String[]) getModes().toArray(new String[0]);
}
public boolean supportsMode(String mode) {
return getModes().contains(mode);
}
public boolean supportsCPU(String cpu) {
String nativeCPU = Platform.getOSArch();
boolean ret = false;
if ( nativeCPU.startsWith(cpu) ) {
ret = getCPUs().contains(CPU_NATIVE);
}
return ret || getCPUs().contains(cpu) || getCPUs().contains("*"); //$NON-NLS-1$
}
/**
* 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;
}
protected Set getCPUs() {
if (fCPUs == null) {
String cpus = getConfigurationElement().getAttribute("cpu"); //$NON-NLS-1$
if (cpus == null) {
fCPUs = new HashSet(1);
fCPUs.add(CPU_NATIVE);
}
else {
String nativeCPU = Platform.getOSArch();
StringTokenizer tokenizer = new StringTokenizer(cpus, ","); //$NON-NLS-1$
fCPUs = new HashSet(tokenizer.countTokens());
while (tokenizer.hasMoreTokens()) {
String cpu = tokenizer.nextToken().trim();
fCPUs.add(cpu);
if (nativeCPU.startsWith(cpu)) { // os arch be cpu{le/be}
fCPUs.add(CPU_NATIVE);
}
}
}
}
return fCPUs;
}
}
|