public class XDebugArrayValue extends XDebugAbstractValue {
private int NumChildren;
- public XDebugArrayValue(XDebugStackFrame variable, Node value) throws DebugException {
+ public XDebugArrayValue(XDebugStackFrame variable, Node value, XDebugVariable parent) throws DebugException {
super(variable, value);
NumChildren = 0;
for (int i = 0; i<property.getLength(); i++) {
Node propertyNode = property.item(i);
- Variables[i] = new XDebugVariable(variable, propertyNode);
+ Variables[i] = new XDebugVariable(variable, propertyNode, parent);
}
setChildren(Variables);
public class XDebugObjectValue extends XDebugAbstractValue {
private int NumChildren;
- public XDebugObjectValue(XDebugStackFrame variable, Node value) throws DebugException {
+ public XDebugObjectValue(XDebugStackFrame variable, Node value, XDebugVariable parent) throws DebugException {
super(variable, value);
NumChildren = 0;
String name = PHPDebugUtils.getAttributeValue (propertyNode, "name");
if (!name.equals ("CLASSNAME")) {
- a.add(new XDebugVariable(variable, propertyNode));
+ a.add(new XDebugVariable(variable, propertyNode, parent));
}
}
int length = property.getLength();
for (int i = 0; i < length; i++) {
- XDebugVariable var = new XDebugVariable(this, property.item(i));
+ XDebugVariable var = new XDebugVariable(this, property.item(i), null);
fVariables[i] = var;
}
int globalLength = propertyGlobal.getLength();
for (int k = 0; k < globalLength; k++) {
- XDebugVariable var = new XDebugVariable(this, propertyGlobal.item(k));
+ XDebugVariable var = new XDebugVariable(this, propertyGlobal.item(k), null);
fVariables[k + length] = var;
}
}
*/
public class XDebugVariable extends XDebugElement implements IVariable {
private String fName;
+ private String fNameFull;
private XDebugStackFrame fFrame;
private XDebugAbstractValue fValue;
private String fFacet;
* @param frame owning stack frame
* @param name variable name
*/
- public XDebugVariable(XDebugStackFrame frame, Node property) throws DebugException {
+ public XDebugVariable(XDebugStackFrame frame, Node property, XDebugVariable parent) throws DebugException {
super((XDebugTarget) frame.getDebugTarget());
+
+ this.fParent = parent;
+
if (frame != null ) {
fFrame = frame;
}
- fName = PHPDebugUtils.getAttributeValue(property,"name");
+ if (parent == null) {
+ fName = "$" + PHPDebugUtils.getAttributeValue(property,"name"); // Prepend the variable 'short' name with the php variable prefix '$'
+ }
+ else {
+ fName = PHPDebugUtils.getAttributeValue(property,"name"); // If this is the root variable don't prepend prefix '$'
+ }
+
+ fNameFull = PHPDebugUtils.getAttributeValue(property,"fullname"); // The fullname has the '$' prepended, but it is the fully qualified name
+ // e.g. $myvar->child->a_variable. The fullname would be suitable to take for
+ // the setting a watch expression
+
if ("".equals(fName)) {
fName = PHPDebugUtils.getAttributeValue(property,"address");
}
else if (typeName.equals("string") )
fValue = new XDebugStringValue(frame, property);
else if (typeName.equals("array") )
- fValue = new XDebugArrayValue(frame, property);
+ fValue = new XDebugArrayValue(frame, property, this);
else if (typeName.equals("object") )
- fValue = new XDebugObjectValue(frame, property);
+ fValue = new XDebugObjectValue(frame, property, this);
else if (typeName.equals("resource") )
fValue = new XDebugResourceValue(frame, property);
else
return fName;
}
+ /*
+ * @return The fully qualified name of the variable
+ */
+ public String getNameFull () {
+ return fNameFull;
+ }
+
/* (non-Javadoc)
* @see org.eclipse.debug.core.model.IVariable#getReferenceTypeName()
*/