X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugAbstractValue.java b/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugAbstractValue.java index a3c7cdd..3912916 100644 --- a/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugAbstractValue.java +++ b/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugAbstractValue.java @@ -1,174 +1,151 @@ -/* - * Created on 23.11.2004 + /* Created on 23.11.2004 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package net.sourceforge.phpeclipse.xdebug.php.model; -import net.sourceforge.phpeclipse.xdebug.core.Base64; +import java.util.Arrays; +import java.util.Iterator; +import java.util.Vector; import net.sourceforge.phpeclipse.xdebug.core.PHPDebugUtils; import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.model.IValue; import org.eclipse.debug.core.model.IVariable; import org.w3c.dom.Node; -import org.w3c.dom.NodeList; /** * @author Axel - * - * TODO To change the template for this generated type comment go to Window - - * Preferences - Java - Code Style - Code Templates + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates */ -public abstract class XDebugAbstractValue extends XDebugElement implements - IValue { - - public static final int VALUETYPE_UNKNOWN = -1; - - public static final int VALUETYPE_UNINITIALIZED = 0; - - public static final int VALUETYPE_STRING = 1; - public static final int VALUETYPE_INT = 4; +public /*abstract*/ class XDebugAbstractValue extends XDebugElement implements IValue { + private String fValueString; + private String fTypeName; + private boolean fhasChanged; + protected String rowValue; + private boolean fSorted; + private Vector fVariables; // The children of this variable (other variables) if any - public static final int VALUETYPE_FLOAT = 5; + public XDebugAbstractValue(XDebugStackFrame frame, Node value) throws DebugException { + super(frame == null ? null : (XDebugTarget)frame.getDebugTarget()); - public static final int VALUETYPE_BOOLEAN = 6; + fTypeName = PHPDebugUtils.getAttributeValue(value, "type"); - public static final int VALUETYPE_ARRAY = 8; + fVariables = new Vector(); // Create an empty vector + fValueString = ""; + rowValue = ""; + fSorted = false; - public static final int VALUETYPE_HASH = 9; - - public static final int VALUETYPE_OBJECT = 10; + try { + rowValue = value.getFirstChild().getNodeValue(); + } catch (NullPointerException e) { + rowValue = ""; + } + } - protected XDebugVariable fVariable; + public boolean hasChanged() { + return fhasChanged; + } - private IVariable[] fVariables; + public void setChanged(boolean changed) { + fhasChanged = changed; + } - protected String fValueString; + /** + * + * @param item + */ + public Vector addVariable(Vector item) { + if (item != null) { // If there is something we want to add + fVariables.addAll(item); + fSorted = false; + } - protected int fType; + return this.fVariables; + } - protected String fTypeName; + /** + * + * @param parent + */ + public void setParent(XDebugVariable parent) { + if (!fVariables.isEmpty()) { // If we have child variables + Iterator iter = fVariables.iterator(); // Create an iterator for the children - public XDebugAbstractValue(XDebugVariable variable, Node varNode, - String typeName) { - super((XDebugTarget) variable.getDebugTarget()); - fVariable = variable; - if (varNode == null) { - try { - System.out.println(variable.getName() + "=null"); - } catch (DebugException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + while (iter.hasNext()) { // As long as we have children + ((XDebugVariable) iter.next()).setParent(parent); // Set all child's parent } - return; } - setType(typeName); - NodeList property = varNode.getChildNodes(); - if (variable.hasChildren()) { - renderValueString("" + property.getLength()); - fVariables = new IVariable[property.getLength()]; - for (int i = 0; i < property.getLength(); i++) { - Node propertyNode = property.item(i); - fVariables[i] = new XDebugVariable(variable.getStackFrame(), - propertyNode); - } - } else { - // fDataString=""; - fVariables = new IVariable[0]; - // if (variable.getType()== XDebugVariable.VARTYPE_UNINITIALIZED) - // fValueString="uninitialized"; - // else { - String str = ""; - try { - str = varNode.getFirstChild().getNodeValue(); - } catch (NullPointerException e) { - str = ""; - } - if (variable.getEncoding().equals("base64")) { - if (str.length() != 0) - str = new String(Base64.decode(str)); - else - str = ""; - } - renderValueString(str); - // } - } - String className = PHPDebugUtils - .getAttributeValue(varNode, "classname"); - if (className != "") - renderValueString(className); - } - /* - * (non-Javadoc) - * + /* (non-Javadoc) * @see org.eclipse.debug.core.model.IValue#getReferenceTypeName() */ public String getReferenceTypeName() throws DebugException { return fTypeName; } - /* - * (non-Javadoc) - * + /* (non-Javadoc) * @see org.eclipse.debug.core.model.IValue#getValueString() */ public String getValueString() throws DebugException { return fValueString; } - /* - * (non-Javadoc) - * + /* (non-Javadoc) * @see org.eclipse.debug.core.model.IValue#isAllocated() */ public boolean isAllocated() throws DebugException { return true; } - /* - * (non-Javadoc) - * + /* (non-Javadoc) * @see org.eclipse.debug.core.model.IValue#getVariables() */ public IVariable[] getVariables() throws DebugException { + return (XDebugVariable[]) getChildVariables().toArray( + new XDebugVariable[fVariables.size()]); + } + + /** + * + */ + public Vector getChildVariables() { return fVariables; } - /* - * (non-Javadoc) - * + /* (non-Javadoc) * @see org.eclipse.debug.core.model.IValue#hasVariables() */ public boolean hasVariables() throws DebugException { - return (fVariables.length > 0); - } - - public boolean isArray() { - return ((fType & VALUETYPE_ARRAY) > 0); + return (fVariables.size() != 0); } - public abstract void setType(String typeName); - - public abstract void renderValueString(String data); + public boolean setValue(String expression) throws DebugException { + return true; + }; - public abstract boolean verifyValue(String expression); + protected boolean verifyValue(String expression) { + return true; + } - public boolean setValue(String expression) { - if (!verifyValue(expression)) - return false; - if (fTarget.setVarValue(fVariable.getFullName(), expression)) { - renderValueString(expression); - return true; - } + protected boolean supportsValueModification() { return false; } - public boolean supportsValueModification() { - return false; + protected void setValueString(String valueString) { + fValueString = valueString; + } + + protected void setChildren(IVariable[] newChildren) { + fVariables = new Vector (Arrays.asList(newChildren)); } + + public void setReferenceTypeName (String referenceTypeName) { + fTypeName = referenceTypeName; + } }