X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugVariable.java b/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugVariable.java index a6646da..240ec9c 100644 --- a/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugVariable.java +++ b/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugVariable.java @@ -6,10 +6,8 @@ */ package net.sourceforge.phpeclipse.xdebug.php.model; - import net.sourceforge.phpeclipse.xdebug.core.PHPDebugUtils; -import org.eclipse.debug.core.DebugEvent; import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.model.IValue; import org.eclipse.debug.core.model.IVariable; @@ -21,28 +19,11 @@ import org.w3c.dom.Node; * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ -public class XDebugVariable extends XDebugElement implements IVariable { - - public static final int VARTYPE_UNKNOWN = -1; - public static final int VARTYPE_UNINITIALIZED = 0; - public static final int VARTYPE_STRING = 1; - public static final int VARTYPE_INT = 2; - public static final int VARTYPE_FLOAT = 3; - public static final int VARTYPE_ARRAY = 8; - public static final int VARTYPE_HASH = 9; - public static final int VARTYPE_OBJECT = 10; - - - // name & stack frmae +public class XDebugVariable extends XDebugElement implements IVariable { private String fName; private XDebugStackFrame fFrame; - private String fFullName; -// private String fTypeName; -// private int fType; private XDebugAbstractValue fValue; - private String fEncoding; - private int fNumChildren; -// private Node fVariableNode; + private String fFacet; /** * Constructs a variable contained in the given stack frame @@ -51,113 +32,96 @@ public class XDebugVariable extends XDebugElement implements IVariable { * @param frame owning stack frame * @param name variable name */ - public XDebugVariable(XDebugStackFrame frame, Node property) { + public XDebugVariable(XDebugStackFrame frame, Node property) throws DebugException { super((XDebugTarget) frame.getDebugTarget()); - fFrame = frame; - init(property); - - } - - private void init(Node property) { - fFullName=PHPDebugUtils.getAttributeValue(property,"fullname"); - fName=PHPDebugUtils.getAttributeValue(property,"name"); - fEncoding=PHPDebugUtils.getAttributeValue(property,"encoding"); - if (PHPDebugUtils.getAttributeValue(property,"numchildren").equals("")) - fNumChildren = 0; - else - fNumChildren=Integer.parseInt(PHPDebugUtils.getAttributeValue(property,"numchildren")); + if (frame != null ) { + fFrame = frame; + } + + fName = PHPDebugUtils.getAttributeValue(property,"name"); + if ("".equals(fName)) { + fName = PHPDebugUtils.getAttributeValue(property,"address"); + } + + fFacet = PHPDebugUtils.getAttributeValue(property, "facet"); - String typeName=PHPDebugUtils.getAttributeValue(property,"type"); + String typeName = PHPDebugUtils.getAttributeValue(property, "type"); -// if (typeName.equals("uninitialized") ) -// fValue= new XDebugValue(this,property,typeName); if (typeName.equals("int") ) - fValue= new XDebugIntValue(this,property,typeName); + fValue = new XDebugIntValue(frame, property); else if (typeName.equals("float") ) - fValue= new XDebugFloatValue(this,property,typeName); + fValue = new XDebugFloatValue(frame, property); else if (typeName.equals("bool") ) - fValue= new XDebugBooleanValue(this,property,typeName); + fValue = new XDebugBooleanValue(frame, property); else if (typeName.equals("string") ) - fValue= new XDebugStringValue(this,property,typeName); + fValue = new XDebugStringValue(frame, property); else if (typeName.equals("array") ) - fValue= new XDebugArrayValue(this,property,typeName); - else if (typeName.equals("hash") ) - fValue= new XDebugArrayValue(this,property,typeName); + fValue = new XDebugArrayValue(frame, property); else if (typeName.equals("object") ) - fValue= new XDebugArrayValue(this,property,typeName); + fValue = new XDebugObjectValue(frame, property); + else if (typeName.equals("resource") ) + fValue = new XDebugResourceValue(frame, property); else - fValue= new XDebugValue(this,property,typeName); - -// else if (typeName.equals("float") ) -// fTypeName= VARTYPE_FLOAT; -// else if (typeName.equals("string") ) -// fTypeName= VARTYPE_STRING; -// else if (typeName.equals("hash") ) -// fTypeName= VARTYPE_HASH; -// else if (typeName.equals("array") ) -// fTypeName= VARTYPE_ARRAY; -// else if (typeName.equals("object") ) -// fTypeName= VARTYPE_OBJECT; - - - -// fTypeName=type; -// -// fValue= new XDebugValue(this,property); + fValue = new XDebugValue(frame, property); } + /* (non-Javadoc) * @see org.eclipse.debug.core.model.IVariable#getValue() */ public IValue getValue() throws DebugException { return fValue; -// return ((XDebugTarget)getDebugTarget()).getVariableValue(this); } + /* (non-Javadoc) * @see org.eclipse.debug.core.model.IVariable#getName() */ public String getName() throws DebugException { - if (fFullName.endsWith("]")) - return fFullName.substring(fFullName.lastIndexOf('[')); - else - return fName; + return fName; } + /* (non-Javadoc) * @see org.eclipse.debug.core.model.IVariable#getReferenceTypeName() */ public String getReferenceTypeName() throws DebugException { return fValue.getReferenceTypeName(); } + /* (non-Javadoc) * @see org.eclipse.debug.core.model.IVariable#hasValueChanged() */ public boolean hasValueChanged() throws DebugException { - // TODO Auto-generated method stub - return false; + return fValue.hasChanged(); } + /* (non-Javadoc) * @see org.eclipse.debug.core.model.IValueModification#setValue(java.lang.String) */ public void setValue(String expression) throws DebugException { - if(fValue.setValue(expression)) - fireEvent(new DebugEvent(this, DebugEvent.CHANGE, DebugEvent.CONTENT)); + if (fFrame.setVariableValue(this, expression)) { + fValue.setValue(expression); + } } + /* (non-Javadoc) * @see org.eclipse.debug.core.model.IValueModification#setValue(org.eclipse.debug.core.model.IValue) */ public void setValue(IValue value) throws DebugException { } + /* (non-Javadoc) * @see org.eclipse.debug.core.model.IValueModification#supportsValueModification() */ public boolean supportsValueModification() { return fValue.supportsValueModification(); } + /* (non-Javadoc) * @see org.eclipse.debug.core.model.IValueModification#verifyValue(java.lang.String) */ public boolean verifyValue(String expression) throws DebugException { - return fValue.verifyValue(expression); + /*return true; */return fValue.verifyValue(expression); } + /* (non-Javadoc) * @see org.eclipse.debug.core.model.IValueModification#verifyValue(org.eclipse.debug.core.model.IValue) */ @@ -165,45 +129,11 @@ public class XDebugVariable extends XDebugElement implements IVariable { return false; } - /** - * Returns the stack frame owning this variable. - * - * @return the stack frame owning this variable - */ - protected XDebugStackFrame getStackFrame() { - return fFrame; - } - -// public int getType() { -// return fType; -// } - public String getValueString() throws DebugException { return fValue.getValueString(); } - public boolean hasChildren() { - return (fNumChildren>0); - } - - public boolean isArray() { - return (fValue.isArray()); - } - - public String getEncoding() { - return fEncoding; - } - - public void setEncoding(String encoding) { - fEncoding = encoding; - } - - public String toString() { - return fValue.toString(); + public String getVisibility() { + return fFacet; } - - public String getFullName() { - return fFullName; - } - -} +} \ No newline at end of file