diff options
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.java | 132 |
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$ + } +} |