mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Bug 453920: Remove code duplication between MIVar and MIVarCreateInfo.
Change-Id: I1c291fa235fe77910b6bea7ad98f269d8949fc5c Signed-off-by: Vladimir Prus <vladimir@codesourcery.com> Reviewed-on: https://git.eclipse.org/r/37475 Tested-by: Hudson CI
This commit is contained in:
parent
84add6a4bd
commit
7aa9cf6efc
3 changed files with 32 additions and 50 deletions
|
@ -8,13 +8,16 @@
|
|||
* Contributors:
|
||||
* QNX Software Systems - Initial API and implementation
|
||||
* Wind River Systems - Modified for new DSF Reference Implementation
|
||||
* Vladimir Prus (Mentor Graphics) - Add getMIValue.
|
||||
* Vladimir Prus (Mentor Graphics) - Add getMIFields/getMIField.
|
||||
*******************************************************************************/
|
||||
|
||||
package org.eclipse.cdt.dsf.mi.service.command.output;
|
||||
|
||||
/**
|
||||
* GDB/MI ResultRecord.
|
||||
*
|
||||
* Effectively, it's an result class (a string), plus token (also a string),
|
||||
* plus MI tuple with actual response.
|
||||
*/
|
||||
public class MIResultRecord {
|
||||
|
||||
|
@ -46,6 +49,13 @@ public class MIResultRecord {
|
|||
resultClass = type;
|
||||
}
|
||||
|
||||
/** Return all data fields of this record as MITuple
|
||||
* @since 4.6
|
||||
*/
|
||||
public MITuple getFields() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public MIResult[] getMIResults() {
|
||||
return value.getMIResults();
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ public class MIVar {
|
|||
|
||||
String name = ""; //$NON-NLS-1$
|
||||
String type = ""; //$NON-NLS-1$
|
||||
String value = ""; //$NON-NLS-1$
|
||||
String exp = ""; //$NON-NLS-1$
|
||||
private boolean isDynamic = false;
|
||||
int numchild;
|
||||
|
@ -89,6 +90,13 @@ public class MIVar {
|
|||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 4.6
|
||||
*/
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Whether the value and children of this variable are provided
|
||||
* by a pretty printer.
|
||||
|
@ -142,7 +150,7 @@ public class MIVar {
|
|||
MIValue value = results[i].getMIValue();
|
||||
String str = ""; //$NON-NLS-1$
|
||||
if (value != null && value instanceof MIConst) {
|
||||
str = ((MIConst)value).getCString();
|
||||
str = ((MIConst)value).getString();
|
||||
}
|
||||
|
||||
if (var.equals("numchild")) { //$NON-NLS-1$
|
||||
|
@ -154,6 +162,8 @@ public class MIVar {
|
|||
name = str;
|
||||
} else if (var.equals("type")) { //$NON-NLS-1$
|
||||
type = str;
|
||||
} else if (var.equals("value")) { //$NON-NLS-1$
|
||||
this.value = str;
|
||||
} else if (var.equals("exp")) { //$NON-NLS-1$
|
||||
exp = str;
|
||||
} else if (var.equals("dynamic") && str.trim().equals("1")) { //$NON-NLS-1$ //$NON-NLS-2$
|
||||
|
|
|
@ -25,56 +25,21 @@ package org.eclipse.cdt.dsf.mi.service.command.output;
|
|||
*/
|
||||
public class MIVarCreateInfo extends MIInfo {
|
||||
|
||||
String name = ""; //$NON-NLS-1$
|
||||
int numChild;
|
||||
String type = ""; //$NON-NLS-1$
|
||||
MIVar child;
|
||||
String value = null;
|
||||
private boolean isDynamic = false;
|
||||
private boolean hasMore = false;
|
||||
private MIDisplayHint displayHint = MIDisplayHint.NONE;
|
||||
private MIVar child;
|
||||
|
||||
public MIVarCreateInfo(MIOutput record) {
|
||||
super(record);
|
||||
if (isDone()) {
|
||||
MIOutput out = getMIOutput();
|
||||
MIResultRecord rr = out.getMIResultRecord();
|
||||
MIResultRecord rr = getMIOutput().getMIResultRecord();
|
||||
if (rr != null) {
|
||||
MIResult[] results = rr.getMIResults();
|
||||
for (int i = 0; i < results.length; i++) {
|
||||
String var = results[i].getVariable();
|
||||
MIValue resultVal = results[i].getMIValue();
|
||||
String str = ""; //$NON-NLS-1$
|
||||
if (resultVal instanceof MIConst) {
|
||||
str = ((MIConst)resultVal).getString();
|
||||
}
|
||||
|
||||
if (var.equals("name")) { //$NON-NLS-1$
|
||||
name = str;
|
||||
} else if (var.equals("numchild")) { //$NON-NLS-1$
|
||||
try {
|
||||
numChild = Integer.parseInt(str.trim());
|
||||
} catch (NumberFormatException e) {
|
||||
}
|
||||
} else if (var.equals("type")) { //$NON-NLS-1$
|
||||
type = str;
|
||||
} else if (var.equals("value")) { //$NON-NLS-1$
|
||||
value = str;
|
||||
} else if (var.equals("dynamic") && str.trim().equals("1")) { //$NON-NLS-1$ //$NON-NLS-2$
|
||||
isDynamic = true;
|
||||
} else if (var.equals("has_more") && str.trim().equals("1")) { //$NON-NLS-1$ //$NON-NLS-2$
|
||||
hasMore = true;
|
||||
} else if (var.equals("displayhint")) { //$NON-NLS-1$
|
||||
displayHint = new MIDisplayHint(str);
|
||||
}
|
||||
}
|
||||
child = new MIVar(rr.getFields());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String getType()
|
||||
{
|
||||
return type;
|
||||
return child.getType();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -84,7 +49,7 @@ public class MIVarCreateInfo extends MIInfo {
|
|||
* @since 4.0
|
||||
*/
|
||||
public boolean isDynamic() {
|
||||
return isDynamic;
|
||||
return child.isDynamic();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -95,7 +60,7 @@ public class MIVarCreateInfo extends MIInfo {
|
|||
*/
|
||||
public int getNumChildren()
|
||||
{
|
||||
return numChild;
|
||||
return child.getNumChild();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -107,17 +72,17 @@ public class MIVarCreateInfo extends MIInfo {
|
|||
* @since 4.0
|
||||
*/
|
||||
public boolean hasMore() {
|
||||
return hasMore;
|
||||
return child.hasMore();
|
||||
}
|
||||
|
||||
public String getName()
|
||||
{
|
||||
return name;
|
||||
return child.getVarName();
|
||||
}
|
||||
|
||||
public String getValue()
|
||||
{
|
||||
return value;
|
||||
return child.getValue();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -127,13 +92,10 @@ public class MIVarCreateInfo extends MIInfo {
|
|||
* @since 4.0
|
||||
*/
|
||||
public MIDisplayHint getDisplayHint() {
|
||||
return displayHint;
|
||||
return child.getDisplayHint();
|
||||
}
|
||||
|
||||
public MIVar getMIVar() {
|
||||
if (child == null) {
|
||||
child = new MIVar(name, isDynamic, numChild, hasMore, type, displayHint);
|
||||
}
|
||||
return child;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue