*/
package net.sourceforge.phpeclipse.xdebug.php.model;
-//import java.net.MalformedURLException;
+import java.net.MalformedURLException;
import java.net.URL;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IRegisterGroup;
import org.eclipse.debug.core.model.IStackFrame;
import org.eclipse.debug.core.model.IThread;
import org.eclipse.debug.core.model.IVariable;
-//import net.sourceforge.phpeclipse.xdebug.core.IDebugConnection;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
/**
* @author PHPeclipse team
private int fId;
- //private IPath fName;
-
private URL fName;
private int fLineNumber;
private IVariable[] fVariables;
private int fStepCount = 0;
- //private int fCurrentStepCount = 0;
/**
* Constructs a stack frame in the given thread with the given
* @param data frame data
* @param id stack frame id (0 is the bottom of the stack)
*/
- public XDebugStackFrame(XDebugThread thread, int id) {
+ public XDebugStackFrame(XDebugThread thread, int id, String type, int lineNumber, String where, /*URL*/String filename) {
super(thread == null ? null : (XDebugTarget) thread.getDebugTarget());
+
fId = id;
+ fLevel = id;
fThread = thread;
+ fType = type;
+ fLineNumber = lineNumber;
+ fWhere = where;
+
+ try {
+ fName = new URL(filename);
+ } catch (MalformedURLException e) {
+ e.printStackTrace();
+ }
}
public void incrementStepCounter() {
public IVariable[] getVariables() throws DebugException {
if (fVariables == null) {
- fVariables = fTarget.getVariables(this, fLevel);
+ Node dfl = ((XDebugTarget) getDebugTarget()).getLocalVariables(fLevel);
+ Node dfg = ((XDebugTarget) getDebugTarget()).getGlobalVariables(fLevel);
+ parseVariable(dfl, dfg);
}
return fVariables;
}
- public void evaluateChange(IStackFrame OldStackFrame) throws DebugException {
+ private void parseVariable(Node localVariables, Node globalVariables) {
+ NodeList property = localVariables.getChildNodes();
+
+ NodeList propertyGlobal = globalVariables.getChildNodes();
+
+ fVariables = new IVariable[property.getLength() + propertyGlobal.getLength()];
+
+ int length = property.getLength();
+ for (int i = 0; i < length; i++) {
+ XDebugVariable var = new XDebugVariable(this, property.item(i));
+ fVariables[i] = var;
+ }
+
+ int globalLength = propertyGlobal.getLength();
+ for (int k = 0; k < globalLength; k++) {
+ XDebugVariable var = new XDebugVariable(this, propertyGlobal.item(k));
+ fVariables[k + length] = var;
+ }
+ }
+
+ /*public void evaluateChange(IStackFrame OldStackFrame) throws DebugException {
IVariable[] OldVariable = ((XDebugStackFrame) OldStackFrame).getVariables();
for (int i = 0; i < fVariables.length; i++) {
((XDebugVariable) fVariables[i]).setChange(OldVariable[i]);
}
- }
+ }*/
/* (non-Javadoc)
* @see org.eclipse.debug.core.model.IStackFrame#hasVariables()
* @see org.eclipse.debug.core.model.IStackFrame#getName()
*/
public String getName() throws DebugException {
- //String a = fName.getFile();
- //return fName.lastSegment().toString()+"::"+fWhere+ " line: "+ fLineNumber;
return fName.toString()+"::"+fWhere+ " line: "+ fLineNumber;
}
* @see java.lang.Object#hashCode()
*/
public int hashCode() {
-// return getSourceName().hashCode() + fId;
return getSourceName().hashCode() + fLevel;
}
*
* @return this stack frame's unique identifier within its thread
*/
- protected int getIdentifier() {
+ /*protected int getIdentifier() {
return fId;
- }
-
-
- public void setFullName(URL name) {
- fName = name;
- }
-
+ }*/
public URL getFullName() {
return fName;
return fLevel;
}
- public void setLevel(int level) {
- fLevel = level;
- fId = level;
- }
-
public String getType() {
return fType;
}
- public void setType(String type) {
- fType = type;
- }
-
public String getWhere() {
return fWhere;
}
- public void setWhere(String where) {
- fWhere = where;
- }
-
- public void setLineNumber(int newlineNumber) {
- fLineNumber = newlineNumber;
+ public boolean setVariableValue(XDebugVariable variable, String expression) throws DebugException {
+ return ((XDebugTarget) getDebugTarget()).setVarValue("$" + variable.getName(), expression);
}
}
\ No newline at end of file