Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/MIArg.java')
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/MIArg.java132
1 files changed, 132 insertions, 0 deletions
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/MIArg.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/MIArg.java
new file mode 100644
index 00000000000..bcce631fd84
--- /dev/null
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/command/output/MIArg.java
@@ -0,0 +1,132 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2006 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
+ * Wind River Systems - Modified for new DSF Reference Implementation
+ *******************************************************************************/
+
+package org.eclipse.cdt.dsf.mi.service.command.output;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * Represents a set name=value.
+ */
+public class MIArg {
+ String name;
+ String value;
+
+ public MIArg(String name, String value) {
+ this.name = name;
+ this.value = value;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Parsing a DsfMIList of the form:
+ * [{name="xxx",value="yyy"},{name="xxx",value="yyy"},..]
+ * [name="xxx",name="xxx",..]
+ * [{name="xxx"},{name="xxx"}]
+ */
+ public static MIArg[] getMIArgs(MIList miList) {
+ List<MIArg> aList = new ArrayList<MIArg>();
+ MIValue[] values = miList.getMIValues();
+ for (int i = 0; i < values.length; i++) {
+ if (values[i] instanceof MITuple) {
+ MIArg arg = getMIArg((MITuple)values[i]);
+ if (arg != null) {
+ aList.add(arg);
+ }
+ }
+ }
+ MIResult[] results = miList.getMIResults();
+ for (int i = 0; i < results.length; i++) {
+ MIValue value = results[i].getMIValue();
+ if (value instanceof MIConst) {
+ String str = ((MIConst)value).getCString();
+ aList.add(new MIArg(str, "")); //$NON-NLS-1$
+ }
+ }
+ return (aList.toArray(new MIArg[aList.size()]));
+ }
+
+ /**
+ * Parsing a DsfMITuple of the form:
+ * {{name="xxx",value="yyy"},{name="xxx",value="yyy"},..}
+ * {name="xxx",name="xxx",..}
+ * {{name="xxx"},{name="xxx"}}
+ */
+ public static MIArg[] getMIArgs(MITuple miTuple) {
+ List<MIArg> aList = new ArrayList<MIArg>();
+ MIValue[] values = miTuple.getMIValues();
+ for (int i = 0; i < values.length; i++) {
+ if (values[i] instanceof MITuple) {
+ MIArg arg = getMIArg((MITuple)values[i]);
+ if (arg != null) {
+ aList.add(arg);
+ }
+ }
+ }
+ MIResult[] results = miTuple.getMIResults();
+ for (int i = 0; i < results.length; i++) {
+ MIValue value = results[i].getMIValue();
+ if (value instanceof MIConst) {
+ String str = ((MIConst)value).getCString();
+ aList.add(new MIArg(str, "")); //$NON-NLS-1$
+ }
+ }
+ return (aList.toArray(new MIArg[aList.size()]));
+ }
+ /**
+ * Parsing a DsfMITuple of the form:
+ * {name="xxx",value="yyy"}
+ * {name="xxx"}
+ */
+ public static MIArg getMIArg(MITuple tuple) {
+ MIResult[] args = tuple.getMIResults();
+ MIArg arg = null;
+ if (args.length > 0) {
+ // Name
+ String aName = ""; //$NON-NLS-1$
+ MIValue value = args[0].getMIValue();
+ if (value != null && value instanceof MIConst) {
+ aName = ((MIConst)value).getCString();
+ } else {
+ aName = ""; //$NON-NLS-1$
+ }
+
+ // Value
+ String aValue = ""; //$NON-NLS-1$
+ if (args.length == 2) {
+ value = args[1].getMIValue();
+ if (value != null && value instanceof MIConst) {
+ aValue = ((MIConst)value).getCString();
+ } else {
+ aValue = ""; //$NON-NLS-1$
+ }
+ }
+
+ arg = new MIArg(aName, aValue);
+ }
+ return arg;
+ }
+
+ @Override
+ public String toString() {
+ return name + "=" + value; //$NON-NLS-1$
+ }
+}

Back to the top